原创 Modelsim se6.2b+ispLEVER8.0 仿真指南

2011-1-26 19:44 1961 2 2 分类: 通信

功能仿真

    进行功能仿真首先要检查设计的语法是否正确;其次检查代码是否达到设计的功能要求。下文主要介绍仿真步骤和测试激励的加载。

仿真步骤 

1 建立工程

图2  建立工程

       包括工程名、存放位置、默认库路径、modelsim配置文件目录、拷贝或关联库,如图2所示。当选择了库名称,测试文件和源文件编译后会出现在word库中。选择拷贝库的话,就会将相关的库文件全部拷贝到当前工程目录。可以独立的对某一个.V文件编写testbench,用以验证某个文件某个模块的某个功能(例如一个project中主要考虑pin的数量和电压、电平,功能单一,但是重复度高,如只需要测试自动关断功能,这个方法适用高效);当然也可以对整个工程进行验证测试。

2 编写/添加源文件和测试文件

图3  添加文件

       如图3所示,添加或者新增源文件和测试文件。


3   仿真库的编译和映射

图4  编译源文件

       这里主要的工作是编译源文件,生成相关仿真库文件。

4   启动仿真器并加载设计项层

图5  加载设计

图6  指定仿真顶层文件

5  打开观测窗口,添加信号

图7  添加观测信号

图8  观察结果

6  测试激励的加载 
激励的加载有四种方法: 

(1)命令行方式 

(2)宏文件法 

(3)测试文件法 

(4)textio 法 

时序仿真

       时序仿真是FPGA 设计的重要步骤之一,它通常是在做完布局布线后进行,仿真中包含布局布线产生的延时信息。时序仿真的方法和步骤和功能仿真基本相同,但有两点需要注意:一是一般布局布线后生成的网表并不包含timing 数据,会用一个SDF(Standard Delay Format)文件来存储timing数据,它通常是由布局布线工具产生,在做时序仿真时要用到。上面启动仿真器加载时不仅要加载布局布线后生成的源文件,还要加载SDF 文件。二是在用ModelSim SE 版本时,由于不包含特定厂商的库文件,而在做时序仿真时恰恰与特定的器件相关,要用到这些库,为了提高仿真速度,通常需要提前编译这些库,而且不同厂商编译库的方法不尽相同,本文以编译Lattice 公司的库为例,介绍编译库的方法。

       时序仿真可以建立在功能的基础上,即添加lattice器件族的仿真库库和SDF标准时延文件。

仿真步骤

1 添加Lattice库文件

编译库文件(D:\ispTOOL8_0\cae_library\simulation\verilog)

图9  库文件选择

        选择所需要的库文件目录,CTRL+A选择所有或者选择需要的库文件(.v),点击“Compile”编译,编译结果会存放在工程目录work下面。选择Done结束库编译操作。

2 编译生成SDF文件

图10  生成SDF文件

          选择“Generate Timing Simulation Files”生成SDF时延文件。


3 添加库文件和SDF文件

图11  添加SDF文件

       这里着重强调一点:如图11蓝框里面,一般勾选“Disable SDF warnings”和“Reduce SDF

errors to warnings”。因为之前功能仿真未出错(功能仿真没有必要),这里会报例如不完整等错误,可以忽略不计。

注意事项

1、如何导入外部库(如Altera、Lattice分别对应的Quartus、ispLEVER),上一篇博文做了逐步阐述。注意一点,就是顶层新建库后,simulate选择所有需要的库.v文件编译,最后done就OK了。必须将ini文件只读去掉。

2、 不用的管脚拉成3态;

3、 时序仿真时,sdo容易报错,一般可以在SDF选项时“Disable SDF warning”和“Reduce SDF error to warnings”;

4、 DO文件:Modelsim里面路径都是反斜杠;

5、 # ** Error: (vish-4014) No objects found matching '/data'.解决办法:改modelsim.ini文件中的一个参数:VoptFlow = 0;

6、 WLF文件(wave log format)波形日志格式文件,可以记录,并且可以比较,设置比较公差。
PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
2
关闭 站长推荐上一条 /3 下一条