我仿真加法器ip核顶层文件是adder.v,例化ip核生成的是myadder.v,测试文件是t_adder.v。片子是xc3s1000-5fg320
adder.v是这样写的:
module adder(A,B,Q,CLK);
input [7 : 0] A;
input [7 : 0] B;
output [8 : 0] Q;
input CLK;
myadder add1(.A(A), .B(B), .Q(Q), .CLK(CLK));
endmodule
我遇到的问题是,如果我写好工程之后,先不调用modelsim仿真,那么是可以顺利综合的,但综合之后,调用modelsim仿真会出现如下错误:
# do {t_adder_v.fdo}
# Model Technology ModelSim SE vlog 6.2b Compiler 2006.07 Jul 31 2006
# -- Compiling module adder
#
# Top level modules:
# adder
# Model Technology ModelSim SE vlog 6.2b Compiler 2006.07 Jul 31 2006
# -- Compiling module t_adder_v
#
# Top level modules:
# t_adder_v
# Model Technology ModelSim SE vlog 6.2b Compiler 2006.07 Jul 31 2006
# -- Compiling module glbl
#
# Top level modules:
# glbl
# vsim -L xilinxcorelib_ver -L unisims_ver -lib work -t 1ps t_adder_v glbl
# Loading work.t_adder_v
# Loading work.adder
# ** Error: (vsim-3033) adder.v(31): Instantiation of 'myadder' failed. The design unit was not found.
# Region: /t_adder_v/uut
# Searched libraries:
# e:\eda\modeltech_6.2b\xilinx_libs\XilinxCoreLib_ver
# e:\eda\modeltech_6.2b\xilinx_libs\unisims_ver
# work
# Loading work.glbl
# ** Warning: (vsim-3009) [TSCALE] - Module 'glbl' does not have a `timescale directive in effect, but previous modules do.
# Region: /glbl
# Error loading design
# Error: Error loading design
# Pausing macro execution
# MACRO ./t_adder_v.fdo PAUSED at line 8
也许有人会说我的库编译有问题,但是我关掉ise和modelsim,把刚才的工程文件夹删除,再把刚才的工程重新建立一遍,这次做完后我先在ise里调用modelsim,可以顺利通过,且仿真结果正确,信息如下:
# do {t_adder_v.fdo}
# ** Warning: (vlib-34) Library already exists at "work".
# Model Technology ModelSim SE vlog 6.2b Compiler 2006.07 Jul 31 2006
# -- Compiling module myadder
#
# Top level modules:
# myadder
# Model Technology ModelSim SE vlog 6.2b Compiler 2006.07 Jul 31 2006
# -- Compiling module adder
#
# Top level modules:
# adder
# Model Technology ModelSim SE vlog 6.2b Compiler 2006.07 Jul 31 2006
# -- Compiling module t_adder_v
#
# Top level modules:
# t_adder_v
# Model Technology ModelSim SE vlog 6.2b Compiler 2006.07 Jul 31 2006
# -- Compiling module glbl
#
# Top level modules:
# glbl
# vsim -L xilinxcorelib_ver -L unisims_ver -lib work -t 1ps t_adder_v glbl
# Loading work.t_adder_v
# Loading work.adder
# Loading work.myadder
# Loading e:\eda\modeltech_6.2b\xilinx_libs\XilinxCoreLib_ver.C_ADDSUB_V7_0
# Loading e:\eda\modeltech_6.2b\xilinx_libs\XilinxCoreLib_ver.C_REG_FD_V7_0
# Loading work.glbl
# ** Warning: (vsim-3009) [TSCALE] - Module 'glbl' does not have a `timescale directive in effect, but previous modules do.
# Region: /glbl
# .main_pane.mdi.interior.cs.vm.paneset.cli_0.wf.clip.cs.pw.wf
# .main_pane.workspace.interior.cs.nb.canvas.notebook.cs.page2.cs
# .main_pane.signals.interior.cs
以上标蓝色的是和错误信息相对的,如果不综合先调用modelsim可以顺利进行,我发现区别在于这次loading了我例化的myadder,可是为什么我先综合之后再调用modelsim就会出问题呢,信息显示并没有compile也没有loading那个myadder.v。
现在的问题就是,我先仿真的话虽然可以仿真,但是再在ise里综合却会失败,显示ERROR:HDLCompilers:87 - "adder.v" line 30 Could not find module/primitive 'myadder'
总结一下就是:综合与调用modelsim二者,哪个先进行则可以顺利,但后进行的则会失败,这种情况仅在使用ip核时会发生。(包括加法器、乘法器、dds、fir等等)
另外,我的同学就没有这样的问题,而如果把我出问题的工程文件夹拷到他的机子上的话,还是会出相同的问题。他那里可以肯定库编译是没有问题的,而且我觉得我的库编译也没有什么问题,所以我非常非常纳闷。今天我重新安装了modelsim并且重新编译库还是老样子,我在实验室和我自己的机子上都有相同的问题,很苦恼啊!
ps:如果在ise里直接调用modelsim是会自动生成一个work库的,但若是我弄好一个工程,第一次对它用modelsim仿真,不会自动生成work库,但是仿真波形什么的还是会出来的,结果也正确,关了之后第二次运行就有那个work库了。。。(该情况不光是仿真ip核时出现,普通情况也是)。而我同学那里也没有这样的问题,图如下:

没有work.JPG



最新回复
renniyou (2008-10-29 22:04:51)
用synplify综合看看
hunter02042 (2008-10-29 22:53:30)
ninipa (2008-10-30 09:52:42)
hunter02042 (2008-10-31 22:03:43)
chuyantao (2008-11-03 22:54:17)
自己开MODELSIM加.V文件 不会出问题吧?