原型构建系统
设计师和厂商们表示,制作 ASIC 和 SoC(单片系统)原型在本质上是向后迈出的一步——一些人半开玩笑地称之为将SoC变成了SoB(单板系统)。在构建原型系统的过程中,一些设计师利用各种分立元件、既有的 ASIC 和提供新功能的 FPGA 的组合来重建其 ASIC 的功能。而另一些设计师则构建甚至购买将设计方案编程到主板中的快速原型设计系统。主板上容纳了一组 FPGA 和子板,用来连接成独特的功能或更大的系统。
工程师们可以设计或购买运行速度接近 250 MHz的 ASIC 原型构件系统,这个性能水平在某些情况下接近最终芯片的运行速度。这类原型系统比那些最高频率为 2 MHz 的商用仿真器快得多,比 RTL 仿真器快 110 倍。利用快速 ASIC 原型构件系统,设计师可以在系统环境中测试设计的功能,或者也可以进一步进行嵌入式软件的开发。
当然,由于设计师们很难在这样的系统中查明系统缺陷的确切位置,ASIC原型的缺点是难以调试。各设计机构把基于仿真的广泛验证作为原型的基础。MIPS Technologies 公司利用几乎各种基于硬件的加速来验证新型微处理器内核设计,同时帮助客户集成内核(见附文《MIPS 无所不用》)。
自建原型系统
目前,从头构建原型系统在某些方面比过去更容易了,而在另一些方面则更难了。当今 FPGA 的巨大容量和速度等级使得用户能够制作数百万门 ASIC 设计方案的原型。近年来,通过提供工具帮助工程师分割ASIC设计并将分割的模块编排到FPGA阵列中,Synplicity 和 Synopsys 等 EDA 公司已使原型设计工作变得容易了。目前,ASIC 原型构建软件的商品化已经刺激了快速原型业务,并使其成为了 Cadence Design Systems 和Mentor Graphics等传统仿真厂商的更强大的竞争对手。各厂商,特别是那些提供现成原型系统的厂商表示:那些考虑制造或购买原型的单位面临的一个大问题是——是否有时间、额外的拥有印制电路板设计和系统设计技能的工程人员以及预算来自行构建原型系统?
Dini Group 的 ASIC 原型构建公司总裁 Mike Dini 强烈建议:购买快速原型产品比从头构建更便宜。Dini 在 10 年前是一名 ASIC 和 FPGA 设计顾问,由于当时需要一些验证工具,因此他开始构建原型电路板。他目前已经放弃了设计服务,转向了 ASIC 原型构建领域中一项蓬勃发展的业务。多家厂商目前都提供这类原型系统(表 1)。Dini 说:“我们在仿真领域的竞争对手说我们只是提供一堆FPGA 而已。我并不把它当作是一种侮辱。这就是我做的事情。我把数量极大的一堆 FPGA 放在电路板上,把它们组装在一起并进行调试,并把它们以比你自己制造更便宜的价格卖给你。”他表示:原型构件的价值可能无法衡量,但是,组装一块你在项目结束后可能会丢弃的专用电路板,可能会很浪费。他建议用户创建专门功能的子板,并从快速原型构建厂商那里购买原型系统的 FPGA 部件(见附文《购买理由》)。
表一,快速原型系统,加速器,仿真器,供应商:
点击看原图
Dini 等人表示:即使借助 Synplicity 和 Synopsys 等公司的自动分区软件,自己构建一个配备3 块以上 FPGA 的系统也可能很快变成一个噩梦,特别是如果你不熟悉印制电路板设计(尽管 EDA 厂商声称印制电路板设计不难,但它依然是一项艰巨任务)时,情况更是如此。Dini 说:“原型是一个关于‘是做还是买’的决定。如果采用拥有 700 根引脚的较大封装,那么在一块板上放置一片 Virtex FPGA 没什么问题,但是如果要放置 2、3 或 16 片的话,在设计、构建和测试上就会有很大的困难。例如,两片 700 引脚 FPGA 对于印制电路板自动布线器来说就太多了,因此必须做很多手工工作。使基于 FPGA 的自制 ASIC 原型变得复杂的困难临界值大约是 3。两片还不算困难,但是当你开始实施 3 片 FPGA 时,你就必须开始检查层数,检查各种部件在印制电路板中如何连接。”他指出:现代的 FPGA 非常适合于自动分区软件,并且多数快速原型构建厂商都定制各自的系统,以便配合 Synplicity 公司的 Certify 等产品。
Dini 说,最新型 FPGA 宣扬 I/O 结构(而不是速度或

Synplicity 公司 ASIC 工具营销总监 John Gallagher 说,越熟悉 ASIC 设计,分区作业一般就越容易。设计界的 450 位人士答复了 Synplicity 公司的一项调查,结果表明:55% 的 RTL 设计师负责使 ASIC 分区进入原型系统,而另有 25% 说,应由一个单独的验证小组进行原型制作(图 1 和 图 2)。

加速和仿真
一些设计团队希望在加快验证的同时,保持模拟的验证可见性。它们可利用模拟加速或仿真来实现这个目标。借助加速,设计的一部分可以在硬件加速器上编译和运行。借助仿真,整个设计可以在硬件上运行。加速可以使代码运行速度比在工作站上运行的单纯模拟的速度快数百倍乃至数千倍,但是若要在线运行一个连接到系统其余部分的设计,它还是显得太慢。另一方面,仿真的速度可以比 RTL 模拟快数百倍乃至数千倍,并且设计师可以简化它,以便在大约 2 兆赫下运行,这使它能在线使用,并作为一种功能验证加速方式。Cadence 公司声称,设计师甚至能调整诸如该公司的 Palladium 仿真器之类的某些系统,使它们运行在数十兆赫上。
厂商们或者用非常类似原型系统的大型商用 FPGA,或者用定制处理器来构建加速系统和仿真系统。那些提供配备定制处理器的系统的厂商们声称,与利用现成 FPGA 的系统不同的是,这些器件的体系结构是为加速和仿真而设计的,因此更快,效率更高。ATI 公司高级验证工程师 Art Stamness 接受了使用加速的思想,但是对仿真不以为然。他所在的团队负责开发该公司图形处理设备中的 3D 图形内核,并且利用 Tharas Systems 公司的加速器来验证设计方案。他说:“我们把模拟测试台的一部分映射到使用定制处理器的硬件加速器上。它给予了我们更快的周转时间。我们不是运行 FPGA 网表,而是编译一个二进制文件,它比仿真快很多个数量级。”用仿真器编译一份网表可能要花一天时间。他说:“如果你发现了一个错误,你就必须重新编译,等到第二天,然后,如果你发现了另一个错误,你又得等上一天。”另一方面,加速能发现错误,并在一个小时内即可为更多的测试准备好另一份网表。
加速更接近模拟环境,并且它能接受大量的代码,否则,这么多的代码是无法输入到仿真器中的。同时,与模拟相比,加速使性能明显提高,但不是仿真器提供的 5000 倍性能改善。
Stamness 所在的团队在工作中使用一套由 150台 至 250 台 PC 服务器组成的服务器群,运行 Cadence公司的 NC-Sim,并且协同模拟方式加载 Tharas 加速器。Tharas 编译器提取相当多的代码,
参考文献
1. Moretti, Gabe, "Hardware tools aid engineers in design verification," EDN, Aug 30, 2001, pg 77.
MIPS 无所不用
微处理器内核厂商 MIPS Technologies 公司利用几种硬件辅助验证来开发公司的内核。MIPS 公司 CAD 和信息系统总监 Donald Ramsey 说,他的部门使用Mentor Graphics公司的 VStation 仿真器,同时还构建自己的原型电路板供验证或客户使用。它的处理器内核有50万~ 100 万个门电路,因此,对于在仿真或单一 FPGA 原型电路板中运行内核来说,容量不是问题。
Ramsey 说:“我们在门电路方面没有问题,但是我们在复杂性方面确实遇到了问题——普通处理器的边界条件很深奥,并且设计需要大量定向测试、伪随机测试,然后是原型构建和仿真,作为验证手段、调试手段并用于软件验证。当我们创建内核时,我们也期望许多软件工具能够起到作用。”
微处理器内核设计的开始是在计算机集群上执行 RTL 模拟。然后该公司在整个过程的最初阶段运用仿真。公司有两台 VStation 仿真器,利用其中一台做功能验证,而用连接到系统的另一台做调试的在线仿真。对于验证,公司的团队把仿真作为模拟加速器来实现快速定向的随机验证。Ramsey 说:“利用仿真器,我们一天可获得大约 10亿次循环。这就象是拥有了一部更快速的模拟引擎。”
MIPS 公司利用另一部 VStation 来做系统级模拟。Ramsey 说:“我们无法在自己的 RTL 模拟器上运行应用程序,部分原因是因为它太慢,并且在系统环境中,你必须把各种事情抽象,这是因为它不只是一个内核,它还需要系统控制器、存储器以及诸如此类的各种部件。然后你会遇到门电路数量问题。”
MIPS 公司并不会为了在系统测试而对内核的 RTL 版本进行测试,而是把设计加载到仿真器上。在使用仿真之前,MIPS 公司的设计团队曾使用以前开发的原型电路板,使内部的软件开发人员在嵌入式软件开发方面获得领先位置。Ramsey 说:“它基本上是一块 具有AT 形状因子的印制电路板,使你能连接磁盘驱动器、键盘等等。该系统没有处理器,而是有一块配备两个插槽的子板,一个插槽用于安装 FPGA 来安排系统控制器,而另一个用于安放 MIPS 处理器。”
MIPS 公司随后创建了一种新型子板,它使该公司能把仿真器插到 FPGA 原型系统中,并执行深度的系统调试。MIPS 还直接把处理器设计安排到子板的 FPGA 中。FPGA 原型的运行速度比在线方法更快,并能鉴别错误,但是缺乏对代码的深入度可视能力。当FPGA 原型运行于 25MHz 至 40 MHz时,具有仿真的系统运行在 1 MHz 至 3 MHz 。Ramsey 说,这种速度要求用户做额外的时钟缓冲,以便应对在存储器以及操作系统中的硬编码间隔定时器中自然发生的等待状态。FPGA 原型的速度比实际