使用Modelsim仿真的原因
由于diamond自带的仿真软件Active-HDL需要另一套Lisence,所以我们使用第三方仿真软件Modelsim来进行仿真。
Modelsim10.5下载链接如下:https://pan.baidu.com/s/1G9699ocWm1UTqK2yS2igyQ 提取码:lewa
一、Lattice仿真文件
1)库文件路径
LATTICE仿真模型文件位于安装目录下simulation文件夹
X盘:\diamond\3.13\cae_library\simulation
在编译以前,一定要确认需要仿真的顶层文件是verilog还是VHDL。如果是verilog文件,那么需要编译的库文件的路径为:X:…\cae_library\simulation\verilog
Verilog文件夹中是Verolig 器件库文件
blackbox文件夹中是PCS, JTAG, systemBUS等黑盒子的库文件,已经是编译好的库了,需要使用的话 直接在modelsim中映射到新建库即可。
2) 库文件说明
在这verilog文件夹下,分别有不同的芯片库文件和pmi库文件。
pmi文件夹中的文件,主要为一些ip core的仿真库,如PLL、FIFO、RAM等,这些都是直接能看到IP仿真库内部如何调用底层原语的。
由于我的使用环境都是以verilog为主,生成IP核时都是用的verilog格式,所以以下内容都是只以verilog文件夹为例。
二、编译Modelsim库
1) 新建编译后的库文件夹
2) 更改Modelsim工作路径
打开Modelsim软件
点击“file ‐‐>Change Directory” 然后设置好需要建 真库的路 立仿真库的路径。比如“X:\modelsim\Simulation_Lib\Lattice” .然后确定。
3) 建立新的仿真库
File->NEW->library 新建一个仿真库填你建的仿真库名称
由于我使用的是Lattice ECP3的芯片,所以偷懒直接命名为“ecp3&pmi”,
新建仿真库后会在该路径下生成ecp3&pmi文件夹。
4) 编译特定的仿真库
点击工具栏上的“Compile” ,然后在打开的对话框中设置目标库以及需要编译的仿真模型文件。
由于我使用的芯片是ECP3,所以只需要编译verilog文件夹下ecp3(基本元器件库)即可。
6) 设置初始化文件
安装好后,打开Modelsim安装目录,在modelsim根目录下找到“modelsim.ini”文件,右键点击属性,然后去掉只读属性,确定并退出。
7) 设置路径库路径
打开modelsim.ini文件,会发现有一行:ecp3&pmi = ecp3&pmi,修改这一行为:
ovi_ecp3 = X:/X/modelsim/Simulation_Lib/Lattice/ecp3&pmi
其功能为指定仿真库的路径。修改完成后保存退出,并添加modelsim.ini的只读属性,防止错误修改。
PS:为什么名称是ovi_ecp3 ?
为了和Diamond软件中调用的库名统一,后续调用更方便
三、通过Modelsim仿真PLL工程
1)新建工程(略)
module pll_test(
input sys_clk,
input rst_n
);pll_125 pll_125 (.CLK(sys_clk ), .CLKOP(clk_50), .LOCK( )
);endmodule
`timescale 1ns / 1psmodule pll_test_tb();reg sys_clk ;reg rst_n ;
GSR GSR_INST(.GSR(1'b1));
PUR PUR_INST(.PUR(1'b1));initialbegin#2 rst_n = 0 ; sys_clk = 0 ; #10 rst_n = 1 ; end parameter CLK_FREQ = 125;//Mhz always # ( 1000/CLK_FREQ/2 ) sys_clk = ~sys_clk ; pll_test u_pll_test(.sys_clk(sys_clk), .rst_n(rst_n)
);endmodule
2)设置PLL IP核
3)在Modelsim中建立仿真工程
4)观察仿真波形
PS:在编写testbench的时候需要添加一下两段代码:
GSR GSR_INST(.GSR(1'b1));
PUR PUR_INST(.PUR(1'b1));
这是因为有些LATTICE 的PMI IP核中使用了DIAMOND的全局GSR_INST 变量 ,其实还有一个PUR_INST变量。这时由于仿真不具有这个全局变量 我们就在顶层文件的模块中添加上面两段代码。
四、Diamond联合Modelsim仿真(略)
有空再写
五、仿真PCS(略)
对于ECP2M,ECP3这几个系列的器件来说PCS的仿真库都是已经编译好的,库文件形式存在于“x\cae_library\simulation\blackbox\pcsd_work”这个文件夹中,只需要将对应的库映射到想要的库文件存放地址,然后在modelsim.ini文件中设置好即可。如果您没有可能用到ECP2M,ECP3,SC这些器件或者是这些器件的SERDES功能,那么需要做好库的映射。
参考来源
以下内容主要参考自两个来源
如何在 Modelsim SE中建立LATTICE仿真库 PPT
作者 Jason Chen@weikeng.com.cn
以及
Lattice Diamond与modelsim联合仿真环境设置 作者IceyP庚