显示标签为“ModelSim”的博文。显示所有博文
显示标签为“ModelSim”的博文。显示所有博文

2009年9月2日星期三

使用ModelSim做simulation一些小问题的简单解决方法

使用ModelSim做模拟常常会遇到一些小问题,常常没有很在意但是常常又发生:-),这里谈谈遇到以下几个小问题的解决方法。

1.遇到类似以下的问题:

# ** Error: /homes/ethernet/eth_spram_256x32.v(151): Module 'RAMB4_S8' is not defined.
  # **Error: /homes/ethernet/xilinx_dist_ram_16x32.v(20): Module 'RAM16X1D' is not defined.

解决方法:进入Simulation Properties: Libraries --> 在Search Libraries中加入unisim(如果是要做 UNISIM-based RTL simulation)
如下图所示:

SearchLibraries_Modelsim

2.遇到类似以下的问题:

# ** Fatal: (vsim-3693) The minimum time resolution limit (10ps) in the Verilog source is smaller than the one chosen for SystemC or VHDL units in the design. Use the vsim -t option to specify the desired resolution.
#    Time: 0 ns  Iteration: 0  Instance: /sample_tb File: /homes/sample_tb.vhd Line: UNKNOWN
# FATAL ERROR while loading design

解决方法:改变Simulation Properties: Libraries --> 在Search Libraries中加入unisim(如果是要做 UNISIM-based RTL simulation)
如下图所示:也是进入Simulation Properties,然后如下图所示,改变Resolution。

Simulation_Properties_ModelSim

3.遇到类似以下的问题:

# ** Error: (vsim-3601) Iteration limit reached at time 0 ps.

# ** Note: (vsim-3602) Delays were truncated during elaboration of the design.

解决方法:进入Simulation -> Runtime Options,然后改变Iteration Limit,将它改成例如5000。如下图所示:

RuntimeOptions_Modelsim

2008年12月12日星期五

在ModelSim中设定大型的Project的一些讨论

以下内容仅仅是举例说明,具体操作视具体项目而定。
举一个例:在ModelSim中设定大型的Project(看完会发现步骤很多):

在.mpf里修改project的路径,用新的地址代替旧的地址。

大型项目常常有储存电路,如果要使用memory进行模拟,先要加入.vhd文档到project里,然后还有要加入.mif 文档到ModelSim的项目目录里,这很重要,还有加入对应的mem_sim文档。
使用memory进行模拟,注意例如要在component里写上:
-- synopsys translate_off
MEM_FILE : string;
-- synopsys translate_on

在instantiation里写上
-- synopsys translate_off
MEM_FILE => "mem_sim/abcd" & str(abcd_NUM-1, 10, 1)& "/xyz" & str(num+1) & "/efgh",
-- synopsys translate_on
-->可以读出ModelSim的项目目录mem\abcd*\ xyz*\efgh的文档里的内容,*代表数字,我们可以通过一些设定设置数字,这里不详细说明。

写一个clean_libs.do和create_libs.do for ModelSim Transcript
clean_libs.do 例如:
vdel -lib work -all
vlib work
vmap work work等等

create_libs.do 例如:
vlib work
vmap work work等等
最后在ModelSim Transcript执行:do clean_libs.do 然后再执行do create_libs.do

对simulation文档进行设定,例如调整unisim的位置,等等。

本文未完,待续。