1.1 IC设计与ModelSim
ModelSim 是 Mentor Graphics 公司开发的 EDA 工具软件,主要针对 IC 设计的仿真阶段,即对采用Verilog HDL(硬件描述语言)或VHDL(可视硬件描述语言)描述的设计进行验证。细分整个IC设计流程来看,这个阶段属于数字IC设计的仿真验证部分。
1.1.1 IC设计基本流程
IC 设计流程包括两大类:正向设计流程(Top-Down)和反向设计流程(Bottom-Up)。正向设计流程指的是从最顶层的功能设计开始,根据顶层功能的需要,细化并完成各个子功能,直至达到最底层的功能模块为止。反向设计正好相反,设计者最先得到的是一些底层的功能模块,采用这些底层的模块搭建出一个高级的功能,按照这种方式继续直至顶层的设计。
在 IC 行业的最初阶段,EDA 工具软件功能并不强大,所以两种方法都被采用。随着EDA 工具功能的逐渐增强,Top-Down 的设计流程得到了很好的支持并逐步成为主流的 IC设计方法。这种方法也符合设计者的思维过程:当拿到一个设计项目时,设计者首先想到的是整体电路需要达到哪些性能指标,进而采用高级语言尝试设计的可行性,再经过 RTL级、电路级直至物理级逐渐细化设计,最终完成整个项目。
由于 EDA 厂商的工具软件不尽相同,每家厂商为了推销自己的产品,都制定了一套采用自己公司或合作公司旗下软件的设计流程。例如,Synopsis 公司、Montor 公司等,都有一整套推荐流程,这些公司推荐的流程都可以在各自公司的主页上找到,这里不占用篇幅进行说明。尽管各家公司的推荐流程不同,但是整个 IC 设计的基本流程是确定的,图 1-1说明了IC设计的基本流程。
图1-1 IC设计的基本流程
设计的最开始阶段一定是设计文档的编写。这个设计说明文档主要包含了设计要实现的具体功能和期待实现的详细性能指标,包括电路的整体结构、输入/输出(I/O)接口、最低工作频率、可扩展性等参数要求。完成设计说明文档后,需要用行为级描述待设计的电路。行为级描述可以采用高级语言,如 C/C++等,也可以采用 HDL 来编写。这个阶段的描述代码并不要求可综合,只需要搭建出一个满足设计说明的行为模型即可。
行为级描述之后是RTL级描述。这一阶段一般采用VHDL或Verilog HDL来实现。对于规模比较大的设计,一般是在行为级描述时采用 C/C++搭建模型,在 RTL 级描述阶段,逐一对行为模型中的子程序进行代码转换,用 HDL 代码取代原有的 C/C++代码,再利用仿真工具的接口,将转换成 HDL 代码的子程序加载到行为模型中,验证转换是否成功,并依次转换行为模型中的所有子程序,最终完成从行为级到RTL级的HDL代码描述。这样做的好处是减少了调试的工作量,如果一个子程序转换出现错误,只需要更改当前转换的子程序即可,避免了同时出现多个待修改子程序的杂乱局面。
RTL 模型的正确与否,是通过功能验证来确定的,这一阶段也称前仿真。前仿真的最大特点就是没有加入实际电路中的延迟信息,所以,前仿真的结果与实际电路结果还是有很大差异的。不过在前仿真过程中,设计者只关心 RTL 模型是否能完成预期的功能,所以又称为功能验证。
当RTL 模型通过功能验证后,就可进入逻辑综合与优化阶段。这个阶段主要是由 EDA工具来完成,设计者可以给综合工具指定一些性能参数、工艺库等,使综合出来的电路符合自己的要求。
综合生成的文件是门级网表。这个网表文件包含了综合之后的电路信息,其中还包括了延迟信息。将这些延迟信息反标注到 RTL 模型当中,进行时序分析。主要检测的是建立时间(Setup Time)和保持时间(Hold Time)。其中建立时间的违例和保持时间较大的违例必须要修正,可以采用修正 RTL 模型或修改综合参数来完成。对于较小的保持时间违例,可以放在后续步骤中修正。对包含延迟信息的 RTL 模型进行仿真验证的过程称为时序仿真,时序仿真的结果更加逼近实际电路。
设计通过时序分析后,就可以进行版图规划与布局布线。这个阶段是把综合后的电路按一定的规则进行排布,设计者也可以添加一些参数对版图的大小和速度等性能进行约束。布局布线的结果是生成一个物理版图,再对这个版图进行仿真验证,如果不符合要求,就需要向上查找出错点,重新布局布线或修改 RTL 模型。如果版图验证符合要求,这个设计就可以送到工艺生产线上,进行实际芯片的生产。
当然,上述流程只是一个基本的过程,其中很多步骤都是可以展开成很多细小的步骤,也有一些步骤(如形式验证)在这个流程中并没有体现。不过这个流程图可以包含基本的 IC 步骤,对于初学者已经足够了。另外,各公司推荐流程不同的原因是采用了不同的EDA 软件来完成以上的 IC 基本流程。如前仿真阶段,可用于 HDL 仿真的 EDA 工具就有Synopsis公司的VCS、Cadence公司的Verilog-XL、明导公司的ModelSim等。
1.1.2 ModelSim概述
ModelSim是由Mentor Graphics公司开发的一款优秀的HDL工具软件。它能够提供友好的调试环境,是目前唯一的单内核支持VHDL和Verilog混合仿真的仿真器。它具有如下主要特点:
· RTL级和门级优化,本地编译结构,编译仿真速度快。
· 单内核VHDL和Verilog混合仿真。
· 源代码模版和助手,项目管理。
· 集成了性能分析、波形比较、代码覆盖等功能。
· 数据流ChaseX。
· Signal Spy.
· C和Tcl/Tk接口。
ModelSim具有多个版本。首先是大的版本,从ModelSim 4.7开始,不断更新版本,直至现在的ModelSim 10.4版本。主要是增加功能和改善性能,不同版本之间相比较,最显而易见的就是菜单栏中的功能列表都会有不同幅度的变化。在大版本基础上还有小版本,小版本以小写英文字母作为区分,主要是为大版本打上一些补丁,弥补原有版本的部分 bug,类似于计算机系统的更新包。
除去大版本和小版本,ModelSim的每个版本都有SE、DE、PE三个不同版本。这三个版本在功能上不尽相同,表1-1列出了三个版本功能不同的部分,相同的部分由于篇幅原因略去。简单来说,SE版本是功能最完善的版本。本书中采用的是ModelSim SE 10.4版本,所有的实例和演示也均在此版本下编译进行,操作系统使用Windows 7 SP1的64位操作系统。读者也可以下载学生版本来使用,在 Mentor 公司的官网上简单注册即可下载并申请到许可文件,软件的基本功能都是可以使用的。
表1-1 ModelSim SE/DE/PE的功能比较
表1-1 ModelSim SE/DE/PE的功能比较(续表)