数字Asic设计流程前端到后端使用工具
文章来于《ic设计流程与使用工具介绍》
a.通用型数字Asic(从上到下)
在验证算法时一般使用C语言或者verilog来对系统算法进行建模,使用行为级描述来对算法功能的正确与否进行仿真。一般比较常用的方法是使用C语言在Matlab软件环境下进行算法验证。
算法验证完成之后,需要进行的工作就是将算法转化为对应的行为级或者寄存器传输级描述,并且对其进行功能仿真验证。在该阶段可以使用的工具有很多,常用的有Active—HDL、Mentor的Modelsim系列软件和QuestaSim系列(前者使用三个核进行仿真,后者使用一个核,因此后者可以对不同语言环境下的描述进行混合仿真)。
完成功能仿真之后需要进行的工作就是根据foundry提供的标准数字单元工艺库,对前面得到的表述一定功能的代码进行综合,得到代码对应的由标准单元库中的门电路组成的实际电路映射。在综合的过程中,要根据设计规范来制定各种约束以使综合得到的电路映射能够满足设计的要求,同时也要注意综合报告中所给出的违反约束的各个信息,并且利用这些信息来修改代码或者算法。在综合的过程中使用的工具最主要是Synopsys的DC和PC。
做完综合之后,利用综合得到的实际电路映射、时序约束与foundry提供的与版图有关的工艺库就可以进行自动布局布线的操做了。此时常用的软件有Synopsys的ASTRO和Cadence的Se工具。
自动布局布线完成后就可以根据产生的版图文件信息提取寄生参数来进行包含寄生参数与互联延迟的后仿真了。一般常用的寄生参数提取工具有AVANTI的STAR-RC和Cadence的DRECULA或Diva,两者都需要将自动布局布线得到的版图和工艺库文件导入软件中进行寄生参数提取。Cadence的软件还可以通过导入版图,来对自动布局布线得到的版图中不满意的地方进行修补。
寄生参数提取结束后将得到的寄生参数信息与自动布局布线得到的网表导入PT进行包含寄生参数的时序参数提取,然后利用所提取的时序参数在底层网表中反标进行后仿真,观察后仿真的时序是否满足设计规范的要求。如果满足则设计基本完成,不满足还需要进行迭代修改。产生反标需要的时序文件的软件是PT,而将时序反标文件反标回综合后的网表并且进行后仿真的软件比较多,比如Modelsim和Nclaunch(NC主要针对大型系统,而Modelsim则主要是针对小的设计,因为前者的工作平台是工作站后者是PC)。
b.全定制数字Asic或者混合信号ASIC(从下到上与从上到下结合)
当需要制作全定制的数字芯片时,传统的从上到下的设计流程就不完全奏效了。其中最大的不同就是全定制芯片为了实现更小的体积与功耗,更高的集成度将可能不采用厂家提供的标准数字单元库而是通过与foundry沟通自己设计满足自己需要的工艺库。比如Xilinx的FPGA芯片的设计采用的就是全定制的设计方法。
对于全定制设计而言,也需要采用算法验证、功能描述与仿真验证、综合、寄生参数提取与后仿真的过程,但是相对通用型Asic的设计而言,在做后仿真时全定制可以使用模拟仿真的方法进行后仿真而不需要进行时序反标的过程,因为在设计全定制Asic时使用的不是foundry提供的标准数字工艺库而是根据设计需要自己设计的数字工艺库。因此对于全定制的Asic设计而言,它的后仿真需要采用foundry提供的标准模拟库,由于不使用时序的反标而采用模拟仿真的方法后仿真得到最终版图对应信息,因此耗时可能比设计通用型的Asic更长。
全定制设计流程的使用软件有,算法验证与功能仿真的软件同通用型使用的基本相同。但是在综合这一步就不太一样了,对于全定制的设计而言一般在设计时采用Cadence的软件比较多,因为全定制设计更象模拟电路设计。在综合这一步之前先要根据设计规范对每个模块进行时序与功耗的分配,并且最好能够细化到每个门级电路。然后根据要求来构建设计所需要的设计者需要的单元库。因为全定制的ic综合这一步更象是利用设计者自己定义的库来搭积木的过程,人为的控制因素与经验也更加重要,在这里良好的布局可以使搭出的电路效率更高。
在这里可以先使用cadence的版图与电路图输入工具Virtuoso来根据设计规范的要求构建建立在单管基础上的基本单元库,然后再根据已经验证的算法和功能描述,利用所构建的基本单元库来得到整个芯片的电路图布局结构,最后根据芯片内各个信号的关系来进行电路布线的操作。以上的操作都可以在Cadence的IC 5.1集成设计环境下的Virtuoso中完成,当完成布局布线后全定制Asic的版图基本就确定了,然后根据基于基本单元库所对应版图的全芯片电路来搭建全芯片电路对应的全芯片版图。此时可以利用Cadence的Diva或者Drucla工具进行DRC、ERC、LVS检查,并且可以根据版图利用上述工具进行参数提取。然后将提取得到的参数与搭建全芯片时所得到的全芯片网表或者全芯片电路进行后仿真。如果在后仿真时不想使用Cadence或者系统太大仿真不了时,可以使用Hsim进行仿真。Hsim在使用时需要根据版图提取寄生参数和全芯片电路基于基本单元库的网表。(还有不清楚的地方,回来需要具体研究下)。
在进行通用型数字Asic设计时需要注意代码的风格,因为代码风格的好坏直接影响到综合软件的效果,风格规范的代码可以得到性能更高的芯片电路。另外,在写代码时还要注意尽量使用可综合的代码和能够避免系统出现毛刺与亚稳态的电路描述方法。
在进行全定制数字Asic设计时一定要注意单元库的建立,在建立时除了满足基本的逻辑功能外还要注意宽长比与所构造单元的功耗和延迟之间的关系,最好能够建立基于verilog和电路图等多种不同表达方式的电路结构。这样便于后面的进一步分析与仿真。另外,在全定制数字IC设计中经常会把数字电路当成模拟电路来分析功耗与延迟,所以可以使用模数混合的方法来对所设计的基于自建单元库的电路进行仿真,从而可以相对全电路模拟仿真大幅度提高仿真的速度,相对全电路数字仿真得到更精确的延时信息。不过对于功耗的仿真还是只能使用全电路的模拟仿真。最为重要的一点是通用型数字IC的版图布局可以利用软件实现自动化,而全定制则更多的依靠有经验的版图设计师来实现。