一、ASIC基本开发流程
详细解释
详细解释来源于**《高级ASIC芯片综合》**
1、综合:从RTL级到门级网表的转换,综合工具:Synopsys 的DC(design compiler),DC内建静态时序分析机,可以进行模块级静态时序分析。
2、静态时序分析工具:Synopsys 的PrimeTime,对整个设计布图前的静态时序分析。
3、形式验证:将RTL和综合后的网表进行对比。常用工具:Synopsys的Formality
设计可以用三个抽象层次来表示:行为级、寄存器传输级(RTL)、结构级
门级网表就是结果级别的,RTL代码就是寄存器传输级别的,更高级一点的描述行为的就是行为级的吧。
4、可测试性设计(DFT):目前大多数设计都结合了可测试性设计逻辑以便芯片在制造后用来测试它们的功能。
(1)DFT:包括逻辑和存储BIST(内置自测试)、扫描逻辑和边界扫描逻辑(JTAG)等。
逻辑存储BOST:基于控制逻辑并且在综合器合并到设计中的可综合RTL构成。
扫描触发器:可以产生不用的延时,正常触发器则不可以。
JTAG或者边界扫描主要用于测试带有芯片的板连接,JTAG控制器和周边的逻辑也可以直接由DC产生。
5、动态测试
这个是不是vivado里用的testbench?
6、如何从RTL代码变成一个门级网表
注:静态时序分析+形式验证的方式,仿真时间短、覆盖率高,可以确保门级网表是正确的,已经取代了传统的门级仿真。
7、形式验证
形式验证的概念:形式验证技术使用数学方法来确定一个设计,不考虑工艺因素,如时序和物理效应的影响,他们通过与参考设计对比来检查一个设计的逻辑功能。
形式验证技术通过证明两个设计的结构和功能是逻辑等价的来验证设计。
动态仿真方法只能检查哪些敏感路径,所以不可能找出其他出现的问题。此外,与动态仿真相比,形式验证方法所需的运行时间是可以忽略不计的。
在设计流程中,形式验证的目标是要验证RTL与RTL、门级网表与RTL代码或两个门级网表之间的对应关系是否正确。
(1) RTL与RTL的验证:是用来确认新的RTL与原来的RTL在功能上是否一致。
出现的原因:为了适应因为增加的附加性能而需要经常修改设计的情况。当这些特性增加到RTL源的时候,总是有改变原有正确功能的危险。为了避免这种情况,可以在原来的RTL和新的RTL之间执行形式验证,以检查原有功能的有效性。
(2) RTL与门级的验证:用来确认DC综合的逻辑是正确的。由于通过动态仿真来验证RTL功能正确,所以在RTL和有扫描插入的门级网表之间做形式验证,能保证门级也有相同的功能。(在这种情况下,如果我们使用动态仿真方法验证门级,就会花费较长的时间(数天或数星期,取决于设计的大小)来验证设计。与动态仿真相比,形式RTL方法只用几个小时就可以完成一个类似的验证。)
(3) 门级网表与门级网表的验证:这也是验证过程的一个重要步骤,因为它主要用来确认版图输入信息与版图输出信息。从版图得出的是时钟树插入的网表(平面或层次化的)。这意味着进入布图工具的原来的网表已经被修改了。形式验证技术在这里是用来确认修改后的网表与原来的网表是逻辑等价的。
8、使用Prime Time进行静态时序分析
DC可以做模块级静态时序分析。虽然也可以完成芯片级静态时序分析,但是推荐使用Prime Time。Prime Time是Synopsys提供的、可独立运行的、能够提供高品质的静态时序分析工具,它能够非常快得完成整个芯片级设计的静态时序分析。它提供一个TCL接口,该接口为设计分析和调式提供了一个强大的环境。
从某种程度上,在整个ASIC设计过程中静态时序分析是最重要的步骤。静态时序分析允许用户详细分析设计的所有关键路径并且给出一个有条理的报告。此外,该报告也可包含其他调试信息,如扇出能力或每个线网的容性负载。
对布图(layout)前后的门级网表进行静态时序分析。在布图前,Prime Time使用由库指定的线载模型估计线网延时,在这一过程中,先前输入到DC的时序约束同样输入到Prime Time中并且详细说明主要的输入输出信号和时钟的关系。如果对所有关键路径的时序是可接收的,则可由Prime Time或DC可以得到一个约束文件,目的是为了预标注到布图工具。
布图后,实际提取的延迟被反标注到Prime Time以提供真实的延迟计算,这些延迟由连线电容和互连RC延迟所组成。
与综合类似,静态时序分析也是一个迭代的过程。 它与芯片布局布线(placement and routing)的联系非常紧密,这个操作通常需要执行多次才能满足时序需求。
9、布局、布线和验证
布图规划(floorplan)和布局的质量比实际的布线更重要。最佳的单元布局,不但加速最终的布线,而且在满足时序约束和减少阻塞方面也产生非常好的效果。如前所述,约束文件用来进行时序驱动布局。时序驱动布局方法能够使布图工具根据单元之间的时序关键程度放置单元。
在单元布局后,时钟树通过布图工具插入设计。时钟树插入是可选择的并且只依赖设计需求和用户的偏爱。用户可以选择使用较传统的方法对时钟网络进行布线,例如,为了减少总时间延迟和时钟的倾斜使用fishbone/spine结构的时钟网络。由于工艺尺寸缩小,由于互连线电阻的增加(从而RC延迟),spine方法实现变得更困难。因此,本书重点放在时钟树综合方法方面。
在这个阶段,一个附加的步骤对完成时钟树插入是必需的。如上述,在单元布局后,布图工具将时钟树插入设计,因此,从DC产生的最初网表缺少时钟树信息(整个时钟树网络,包括缓冲器和线网),所以,时钟树一定要插入到原有的网表中并进行形式验证。
布图工具完成布线通常由两步组成:全局布线和详细布线。
二、FPGA的基本开发流程
我接触比较多的FPGA集成化的开发环境有:Xilinx 的Vivado、Altera的quartus