Modelsim是目前最流行的应用最广泛的FPGA仿真器,是Mentor Graphics的子公司Model Technology开发的。因为Modelsim好学易用,调试方便,仿真速度快,功能强大,所以很多芯片厂商的开发系统都OEM Mentor Graphics公司的Modelsim仿真器,包括Xilinx,Altera,Lattice和Actel等。Modelsim是一个单内核仿真器,同一个内核可以进行VHDL仿真、Verilog仿真和VHDL/Verilog混合仿真;支持所有的VHDL和Verilog标准;采用直接编译技术(Direct-Compiled),大大提高了HDL编译和仿真速度。
Modelsim支持三个层次的仿真:RTL仿真、综合后仿真和布局布线后仿真。为了加快仿真速度,一般情况下设计中调用的库都是已经进行编译过的,然后对设计进行仿真,此时仿真器直接调用库中已经编译过的单元,而不是再次对设计中的单元模块进行编译。所以如果要对设计进行综合后仿真和布局布线后仿真,必须先对设计中调用的库进行编译处理。这也是本文的重点内容。因为每个厂商的库不一样,而且同一个厂商,不同的器件库就有可能不同,所以下面就目前国内比较常用的几个公司的芯片的库问题分别进行探讨。
1.Xilinx公司的器件: 其库的处理方式有两种,一种是在Xilinx的网站上,我们可以下载到压缩文件xilinx_lib_4.zip,解压缩后有一个xilinx_lib_4.tcl(将来的版本可能会升级)。单独运行Modelsim,然后在工具菜单中有一项是执行宏(这里Modelsim5.5 和5.6、5.7有一些差异,不过在5.5中仍可以找到执行宏Execute Macro),运行xilinx_lib_4.tcl后可以看到。
你可以根据你的厂商软件版本选择,指定Xilinx 的安装路径,在Install Path中指定你编译后的数据将要放的目录位置(可以是任何一个目录,最好是设计者数据盘中的某个目录,因为库编译一次就可以了,重新安装软件不需要重新编译库)。对于Xilinx作布局布线后仿真只需要simprim库即可;如果要作综合后仿真,就需要编译Unisim库;如果设计中调用了CoreGen产生的核就需要编译CoreGen库。这应该根据设计者的具体情况进行选择。
如果编译完了后,在Modelsim中库会自动变为标准库(注意:Xilinx提供的早期脚本文件作不到这一点)。所谓标准库,也就是说这个库会和IEEE这些库一样,当Modelsim启动时,这些库会自动加载,里面的单元在VHDL代码中可以随意调用。比如:在布局布线后的VHDL文件中大家可以看到Library simprim这样的语句。当然也可以自己手动改变这些库的性质,只用修改在Modelsim安装路径下的Modelsim.ini文件即可。比如:修改后的Modelsim.ini可以看到为
[Library]
std = $MODEL_TECH/../std
ieee = $MODEL_TECH/../ieee
verilog = $MODEL_TECH/../verilog
std_developerskit = $MODEL_TECH/../std_developerskit
synopsys = $MODEL_TECH/../synopsys
modelsim_lib = $MODEL_TECH/../modelsim_lib
simprim = D:/test/test/simprim
unisim = D:/test/test/unisim
logiblox = D:/test/test/logiblox
simprims_ver = D:/test/test/simprims_ver
unisims_ver = D:/test/test/unisims_ver
xilinxcorelib = D:/test/test/xilinxcorelib
xilinxcorelib_ver = D:/test/test/xilinxcorelib_ver
lpm = d:/test/test/lpm
…
可以看到修改后的文件中simprim库和IEEE等标准库处于同等的位置。如果关于这些库的行不加到这个文件中,那么每做一个项目的时候,设计者都要建立一个库,然后把这个库和编译后的目录映射好。比如:在Modelsim中用命令
vlib simprim
vmap simprim D:/test/test/simprim
在一个项目中设置的库对其他项目是无效的,所以如果你经常用一些库,就可以把这些库设置成标准库。
另外一种编译库的方法更本质一些,上面这种方法是厂商做一个脚本文件方便大家对库进行处理。事实上,我们可以手工处理这些库。在Xilinx的ISE安装目录下,比如:D:/xilinx/vhdl/src和D:/xilinx/Verilog/src下都有这些库源文件;simprim库的源文件就在…/src/simprims目录下,CoreGen库的源文件就在…/src/XilinxCoreLib下等。
在Modelsim的命令窗口运行下面的命令即可:
vlib simprim
vmap simprim d:/test/test/simprim (路径可以自己任意指定)
vcom –work simprim $XILINX/vhdl/src/simprims/simprim_Vcomponents.vhd
vcom –work simprim $XILINX/vhdl/src/simprims/simprim_Vpackage.vhd
vcom –work simprim $XILINX/vhdl/src/simprims/simprim_VITAL.vhd
(注意:编译顺序不能颠倒),Unisim库如下所示:
vlib unisim
vmap unisim D:/test/test/unisim
vcom -work unisim $XILINX/vhdl/src/unisims/unisim_VCOMP.vhd
vcom -work unisim $XILINX/vhdl/src/unisims/unisim_VPKG.vhd
vcom -work unisim $XILINX/vhdl/src/unisims/unisim_VITAL.vhd
vcom -work unisim $XILINX/vhdl/src/unisims/unisim_VCFG4K.vhd
如果是Verilog语言,可以进行同样的处理。不过必须注意一定要编译glbl.v文件。如果要了解更详细的信息,可以参考相关文献。
库编译后就可以手工修改安装目标下的Modelsim.ini文件。修改后的文件如前所述即可。
2.Altera公司的器件:
对于Altera公司,其MaxplusII软件能开发的器件的库的名字是alt_vtl,仿真模型在maxplus2/vhdl87/vital或者maxplus2/vhdl93/vital下面可以找到。如果是Quartus,则库的名字不再用alt_vtl。该公司不同的器件库名字是不一样的,库名如下:
如果是lpm库,要编译的文件是220model.vhd和220pack.vhd,在安装目录下可以搜索的到。比如:…quartus/eda/sim_lib/
关于lpm库设置过程是这样的,进入MODELSIM,创建一个库,例如:
vlib lpm
vmap lpm <…/myalteralib/lpm>(自己指定绝对路径,或者用菜单创建)
vcom –work lpm <…/sim_lib/220pack.vhd> (自己指定绝对路径,或者用菜单编译)
vcom –work lpm <…/sim_lib/220model.vhd> (自己指定绝对路径,或者用菜单编译)
现在可以到Modelsim的安装目录,编辑modelsim.ini。
[Library]
std = $MODEL_TECH/../std
ieee = $MODEL_TECH/../ieee
verilog = $MODEL_TECH/../verilog
std_developerskit = $MODEL_TECH/../std_developerskit
synopsys = $MODEL_TECH/../synopsys
modelsim_lib = $MODEL_TECH/../modelsim_lib
lpm = <…/myalteralib/lpm>(一定要和自己刚才创建的lpm库目录一致)
此时,即可在Modelsim的library窗口中看到有这个库了。其他的库同理可以这么作。下面举例apex20k库为例:
运行Modelsim,创建库apex20k,
vlib apex20k
vmap apex20k <…/myalteralib/apex20k>
vcom –work apex20k <…/eda/sim_lib/apex20k_atoms.vhd>
vcom –work apex20k <…/eda/sim_lib/apex20k_componenets.vhd>
然后修改modelsim.ini文件即可。
3.Actel公司的器件:
因为大多数设计者使用Actel公司器件的原因是其反熔丝特性,这些芯片是一次编程的,所以布局布线后仿真显的更加重要。安装Actel公司的Designer后其库的原文件位置是:
VHDL 的 VITAL Library: <Drive>:/Actel/ Designer_R1-2001/ lib/vtl/95
Verilog Library: <Drive>:/Actel/ Designer_R1-2001/lib/vlog
此处以VHDL为例进行库编译说明。对应于不同的器件系列其库名字分别是act1, act2, act3, a3200dx, a40mx, a42mx, a54sx,a54sxa, ex and a500k等。Verilog的库名稍微有所不同,库名分别是act1, act2, act3, 3200dx, 40mx, 42mx, 54sx, 54sxa, ex and a500k等。源文件分别和库名相对应,很容易看出。下面以act2库为例进行说明。
vlib act2
vmap act2 d:/test/test/act2
vcom –93 –work act2 <Drive>:/Actel/ Designer_R1-2001/ lib/vtl/95/act2.vhd
然后对Modelsim安装目录下的Modelsim.INI文件进行修改即可。此处大家看到利用vcom –93对库进行编译,是因为Actel的库源文件是利用VHDL 93标准写的,而Modelsim默认是安装87标准进行编译的。
文章评论(0条评论)
登录后参与讨论