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条评论)
登录后参与讨论