出现图44所示的子窗口(报告设置窗口),根据需求设置各选项和报告存放路径。
图44 点ok后即可查看Code Coverage Report,如图45
图45
7.问题
(1)为什么要做代码覆盖率? (2)如何提高代码覆盖率?
(3)代码覆盖率能否达到百分之百?如何达到?如果达不到100%,对流片结果是否有影响?
实验三:后仿真
1.实验目的
通过本实验,了解后仿真流程,并掌握用modelsim后仿真方法。 2.实验内容
用modelsim 将DC综合出来的门级网表以及时序文件进行后仿真。 3.实验原理
(1)什么是后仿真
后仿真也称为时序仿真或者布局布线后仿真,是指电路已经映射到特定的工艺环境后,综合考虑电路的路径延迟与门延迟的影响,验证电路能否在一定时序条件下满足设计构想、是否存在时序违规的过程。 (2)后仿真的目的
前仿真是验证理想情况下的电路功能。但实际上,电路中有门延迟,连线有连线延迟,在时钟边沿采样的数据不可能准确的在时钟边沿发生变化。所以就需要进行带延时文件的后仿真过程。后仿真过程更接近于电路的实际工作情况。 (3)后仿真需要的文件
后仿真输入文件为从布局布线结果中抽象出来的门级网表(本工作站用的是DC综合出的网表)、测试文件和扩展名为SDO或SDF的标准延时文件以及综合时所映射的库文件。SDO或SDF标准延时文件不仅包含门延时,还包含实际布线延时,能够较好的反应实际工作情况。 (4)前仿真与后仿真的差别
前仿真是验证理想情况下的电路功能,将门延迟以及连线延迟看作理想情况。所以前仿真的波形中,没有毛刺和信号延迟。而后仿真带有门延迟信息以及布线延迟信息,所以后仿真的波形中,有信号翻转时会出现的毛刺以及门级延迟等。
4.实验步骤
第一步:加入文件并反标函数。
首先将综合所映射的库文件(工作站的库文件目录为/tools/lib/smic13/SMIC0.13um/FEView_STDIO/Version1.0/STD/Verilog/)smic13.v拷贝到工程所在的目录下。然后将综合出来的网表文件(一般是.v文件)以及延时文件(.sdf)文件也拷贝进来。
将测试文件也拷贝进来,并将这几个文件加入工程。在测试文件中加上如下函数
initial begin $sdf_annotate(\路径\\延时文件名.sdf\实例名); end 该函数的作用是把延时文件反标到综合网表中。 第二步 编译
将网表文件、库文件、延时文件以及测试文件全部编译。编译步骤与前仿真相同。 第三步 仿真
编译通过后,启动仿真器,步骤与前仿真相同。就可以看到带延时的仿真结果了。由于加入了延时信息,后仿真的波形图中会有延时信息,信号中的毛刺和延时都可以在波形中看
的出来,边沿采集数据会在边沿发生后才发生变化。而功能仿真是理想的仿真,所以是不会出现毛刺的,边沿采集的数据就会在边沿发生变化。
5.实验结果
如图46所示,数据信号变化时会有毛刺产生,如图42所示的数据c在34和16变化处。同时数据c理想情况下应该在时钟上升沿发生变化,由于带有实际电路的延迟信息,所以数据变化会延后,如图中所示,c变成16应该在箭头所指的时钟上升沿发生变化,延后了半个多周期。
图46
如图47所示,箭头所指即为信号发生变化时产生的毛刺。
图47
6.问题
(1)为什么要进行后仿真?
(2)前仿真与后仿真有什么差别? (3)后仿真易出现哪些问题?
实验四:自动化仿真
1.实验目的
通过本实验,了解do文件,并掌握如何通过在modelsim中运行do文件来完成仿真过
程。
2.实验内容
用do文件自动完成仿真步骤,即脚本自动化。
3.实验原理
(1)什么是do文件
do文件是一种能够自动完成仿真的宏文件,可以一次执行多条命令。执行do文件可以一次完成多条仿真步骤,包括编译,加信号,仿真等操作。do文件能在所有模式的modelsim里面调用,同时也能调用其它的do文件。 (2)使用do文件的目的
在modelsim中使用do文件是非常方便的进行仿真的一种方法,设计比较小时,用modelsim仿真只需要仿真单独的一些模块,但是当设计比较大时,模块比较多,需要联合仿真,波形窗口里面需要引入的信号也很多,如果还是像原来那样仿真,单单是编译源文件,添加查看信号就要花费不少时间,而且仿真需要比较长的时间,需要观察不同时间段内的仿真结果,因此便使用do文件来方便自己的仿真。 (3)do文件中的常用命令
以下为几种常用的命令:
vlog filename.v : 编译verilog文件 vsim libraryname.filename: 仿真库下面的文件 add wave sim:/filename/signalname: 将信号加到波形图中 run -all: 运行仿真
4.实验步骤
第一步:建立工程,并将源文件加入工程中,流程和方法和功能仿真相同。 第二步:编写do文件。
下面是一个能完成简单仿真的do文件的实例: #compile the files(\
注释:编译文件(vlog命令用来编译verilog文件,vcom文件用来编译VHDL文件) vlog drink_machine.v test_drink_machine.v 指令说明:按照文件出现的顺序逐一编译
# Load simulation 注释:仿真文件 vsim work.test_drink_machine
指令说明:仿真work库下面的test_drink_machine文件 # vsim -novopt work.test_drink_machine
注释:仿真work库下的文件,不要优化 # -novopt: don't select \ 注释:参数novopt代表不选择优化