【转】【学】如何写testbench---转载

时间:2021-09-24 03:30:41

1. modelsim怎么调用altera的库仿真啊?(megafunctions)
以前有个帖子说把quartus安装目录下的sim文件夹里面的文件编译进modelsim里面就可以了,可是sim文件夹里面我要的那个函数不是.v文件啊,还有他里面的一些.vhd文件怎么编译错误啊?

是eda/sim_lib里,编译错误,我想是你编译的顺序不对

用EDA/SIM_LIB中文件直接放到PROJECT中,你需要看看它的告错信息。一般是缺库。你可以按提示缺的库,在FILE/NEW/LIBRARY菜单里创建一个映射到WORK的库。这样一般就好了。

如何在modelsim里如altera的库中做后仿真啊,急死了
我用synplify综合后,用modelsim做后仿真,我在modelsim里面加入了C:quartusedasim_libmodelsimvhdl里面的两个库,但是编译的时候还是提示我找不到library apex20k。还要加什么库啊??? 郁闷死了

vlib apex20k
vmap apex20k apex20k
vcom -work apex20k c:/quartus/eda/sim_lib/apex20k_atoms.vhd
vcom -work apex20k c:/quartus/eda/sim_lib/apex20k_components.vhd

谢谢i8086,我现在知道怎么加入altera的库了,但是错误依然在,不知道是什么原因,modelsim里面的提示如下:
vcom -reportprogress 300 -work work {D:/caiyang/rev_1/caiyang_1.vhd}
# Model Technology ModelSim SE vcom 5.7e Compiler 2003.07 Jul 8 2003
# -- Loading package standard
# ** Error: (vcom-19) Failed to access library 'acex2k' at "acex2k".
# No such file or directory. (errno = ENOENT)
# ** Error: D:/caiyang/rev_1/caiyang_1.vhd(7): Library acex2k not found.
# -- Loading package std_logic_1164
# -- Loading package numeric_std
# -- Loading package components
# ** Error: D:/caiyang/rev_1/caiyang_1.vhd(12): Unknown identifier: acex2k
# ** Error: D:/caiyang/rev_1/caiyang_1.vhd(14): VHDL Compiler exiting
library ieee, acex2k;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;
library synplify;
use synplify.components.all;
use acex2k.acex2k_components.all;
~~~~~~~~~~~~~~~就是提示找不到这个东西,这是用synplify综合后的文件的前面几行代码。

除了把altera的apex20k库加上外,还要把acex2k对应的库加上,跟加apex20k库差不多。不过我不知道acex2k对应的vhd文件。

就是不知道是哪个文件啊。我选用的是cyclone的器件,好像synplify里面是用acex2k来表示的。而且我把quartus里面cyclone_atoms.vhd和cyclone_components.vhd也加了的,都不起作用。难道应该加synplify里面的库文件? 我只在modelsim里面加了synplify的synplify.vhd这个文件,是不是不够?

换成acex1k系列的都可以做后仿真

2. 请哪位好心人给详细讲解一下如何在ModelSim中添加Quartus的库啊!
到处都是讨论ModelSim和Xilinx的,怎么没人给讲解一下Quartus库文件使用的问题啊,难道没人用Altera的吗?哪位好心人给详细讲解一下如何在ModelSim中添加Quartus的库吧,我都郁闷了好几天了啊

altera公司的仿真库都在quartus安装目录EDASIM_LIB下,以VHDL和VERILOG的形式存在。你需要什么器件就往工程里加入什么器件的文件。我用CYCLONE,就把CYCLONE_ATOMS.VHD加入工程。编译时它会提示需要CYCLONE库。就在MODELSIM中创建名叫CYCLONE的库,MAP到WORK库就可以了。其实你会碰到类似的很多没有的库都可以这样产生。

我用来仿真VHDL写的工程,对于VERILOG的不清楚。我也在问别人如何用MODELSIM进行混合编程的工程?对于这种工程我现在只能用ACTIVEHDL仿真。

3. 如何在modelsim中指定Altera的仿真库?
我就是按照精华区那个帖子上说的把quartusedasim_libaltera_mf.v、lpm生成的afifo.v、testbench.v放在一起编译,照着做还是提示如下错误实在是搞不懂怎么回事?
# Loading work.afifo_sim
# ** Error: (vsim-3033) F:/Modeltech_5.7e/examples/work/afifo/afifo_testbench.v(46): Instantiation of 'Afifo' failed. The design unit was not found.
# Region: /afifo_sim
# Searched libraries:
# work

从Error上看应该是你的testbench中调用自己做的afifo出的问题,查查是不是管脚引用的不对或是名称写错了?应该不是大问题。你的步骤没错

4. [急请]在modelsim中如何导入Altera的lpm库呢?
limingnefu 你好!我用你提供的资料编译ALTERA的CYLONE库时,编译 cyclone_atoms.v可以没有错,而编译cyclone_atoms.vhd和cyclone_components.VHD时有错误,信息如下:
# ** Error: (vcom-19) Failed to access library 'cyclone' at "cyclone".
我把quartus II 输出的 *.VO文件导入仿真时出现如下错误,请问如何解决?谢谢!
Error: (vsim-3033) G:/work/LCD/testintmcu/simulation/modelsim/IntfMcu.vo(4799): Instantiation of 'cyclone_io' failed. The design unit was not found.
# Region: /testbench/u0
#Searched libraries:
# work

在Altera的网站上有对modelsim的补丁,你可以查一下你的版本号,然后下载对应的补丁!据我所知好像对vhdl和verilog的补丁是不一样的!
这个好像还需要根据自己使用的是verilog 还是 vhdl,步骤有一点调整。之需要同类的库即可

我用的是VERILOG, cyclone_atoms.v已经编译成功了,也看得见'cyclone_io' 已经编译并LOAD的信息,可是在加载我的设计项目时又不行了,请设置成功的朋友谈谈看法,谢谢!我主要是想仿真PLL,DPRAM,等LPM单元。

最后,我还没搞掂,只好把cyclone_atoms.v,220model.v,altera_mf.v,等文件作为源文件加到我的WORK里面,这样虽然在我的WORK中出现了很多单元名称,总之可以仿真了,这个办法比较笨,希望大家能帮解决我遇到的上面的问题,谢谢!!!

5. modelsim 6.0 中指定Altera的仿真库
modelsim 6.0 中指定Altera的仿真库后(即编译220model.v,220model.vhd,220model_87.vhd220pack.vhd,altera_mf.v,altera_mf.vhd,altera_mf_87.vhd,altera_mf_components.vhd后),在编译时仍出现altera_mf,lpm两个库找不到的情况,那位大侠碰到过这个问题?

我碰到的问题是不知道该如何编译仿真库,看了altera的AN204还是不知所云,向前辈指教

6. 我想用modelsim做功能仿真,不知道怎样调用altera的lpm库?
已经郁闷了几天了,就是在仿真时,提示:
Component 'u8' is not bound.
# Time: 0 ns Iteration: 0 Region: /ccd File: F:/work/modelsim/camera/ccd.vhd
我用的是modelsim6.0和quartusII4.2;帮帮忙吧!

你看看变量U8的赋值过程,很可能是你没有确定它的位宽。我也碰到过这样的情形。

在某目录编译完modelsim库后,怎么使它对其他目录也可用?库编译好后,只能在这个目录下用,当把工程建在其他目录下时,库的编译又无效了,怎么使它对任意目录都是有效的?谢谢!

vsim –L

把你的modelsim.ini只读属性去掉,然后把你所有的project统统关掉,再设置库的路径

怎么设置库的路径?能不能讲具体一点,跪谢!!!!

手工编辑modelsim.ini文件,将路径指向正确目录即可。

谢谢各位大侠!
我设置了库的路径
unisim=$MODEL_TECH/../examples/unisim
simprim=$MODEL_TECH/../examples/simprim
xilinxcorelib=$MODEL_TECH/../examples/XilinxCoreLib
可是设置后只有xilinxcorelib是可见的,而unisim库还是不可用,为什么?有什么办法?

问题解决,谢谢各位!!!!

7. modelsim中编译altera仿真库
请教各位大侠,在modelsim中编译altera的仿真库,总是有两个文件报错:220model.VHD和altera_mf.VHD:总提示两个文件里的FILE Declaring using 1076-1993 syntax Recompiling using -93 swith。其他文件编译正常。用的是quartus ii4.0和modelsim se 5.7。请知道的给予提示,不胜感激。谢谢

为什么不在仿真前把altera的库倒到modelsim的lib里呢?

那也要编译的啊。我现在找到问题所在了,也编译成功了。可是自己编了个程序,用到ALTERA的库lpm,在modelsim总编译时总提示找不到lpm这个库,不知为什么,还请给点提示。

唉,我是用的quartus4.2和modelsim6.0是在modelsim里新建了一个编译过的Altera的库文件(就是那quartursedasim_lib文件夹下,对它下面的8个文件进行编译,建立到modelsim中一个库)
每次启动modelsim都可以自己调用这个库
现在quartus启动以后,设置其仿真工具为modelsim,编译什么都能通过,工程里有波形文件,到最后一步也自己可以调用modelsim,但是调用完之后,modelsim就不动了,也不进行仿真

我也是这样编译的,但在编译时就是找不到LPM这个文件,不知何故。是不是软件版本的事啊。郁闷。

8. 如何调用仿真库(resource libraries)?必须vsim后用-L参数吗?
在quartus II内调用ModelSim后自动生成work、cyclone_ver、lpm_ver这三个库,可是我双击work库内counter进行仿真的时候却告诉我无法找到cyclone_io(此module在cyclone_ver库内),我必须在命令行下vsim counter -L cyclone_ver才能仿真,请问必须这样吗?总觉得不该啊

^_^已经解决,看来必须用-L参数,对应UI界面的操作则是"Simulate"->start simulation,切到library标签,然后add...,上下均可。真是ft啊,为这么一个问题花了一整天

9. 在modelsim里加入Quartus的仿真库。
引用:-------------------------------------------虽然这是个老话题了,但总会有刚入门的朋友不知道的。我在这里还是讲讲吧!
为什么要这样做?
1、Quartus不支持Testbench
2、调用了megafunction或者lpm库之类的Altera的函数
3、时序仿真
要在Modelsim下做仿真,总会遇到上面这几个问题,因为需要在Modelsim中加入Quartus的仿真库。Altera公司推荐的具体的做法是:
1.
在Modelsim中,File->Change Directory,将工作目录改变到想要存放仿真库的地方,然后点击OK。将来产 生的一大堆仿真库要用的文件就存放在这里。
2. Design->Create a New Library,建立一个新的库:Altera,点击OK。
3. Compile ..quartusedasim_lib下面的两个文件,220model.v和altera_mf.v,记得编译的时候上面的library一定是Altera。这样三步以后,就完成了在Modelsim中添加Altera的库!
实际中,这样做不方便。我是这样做的。
把220model.v和altera_mf.v拷贝到你要编译的文件所在的文件夹里。先编译这两个文件,等于是把Altera的器件加到了work这个library里。然后再在library下编译你要用的文件就可以了。这样方便些。
----------------------------------------------上面是引用网上的一段。问问大家是如何添加Quartus的仿真库。
有时候 只加这两个文件(220model.v和altera_mf.v)还不够,还得加各个芯片特有的库

这样做是可以的,但是有些麻烦的是必须将原设计文件中的
LIBRARY altera_mf
USE altera_mf.altera_mf_components.all
改成
USE work.altera_mf_components.all;
如果要在Quartus里面编译,又要改回来,还是比较麻烦的

楼上的是针对vhdl而言的而verilog还是要用楼主的方法

建库后是不需要LIBRARY 和USE的语句

同意这个兄弟说的!我调用了这两个库,前仿真是可以的,但后仿真出错了!真不知道问题出在哪了

10. 在modelsim中添加altera库的问题,急!!!!
我在使用modelsim时,仿真波形中输出总是高阻,但在quartus下仿真却正确,应该是添加altera库到modelsim没成功,能告诉我怎么添加吗?

找到altera_mf.v和220model.v这2个文件然后把他们一起编译一下就可以了

那么时序仿真时候,为什么还是不成功呢?

11. 请教:modelsim不能自动搜寻建立的仿真库!
利用论坛中讲述的方法在modelsim5.7中建立了altera的仿真库alt_lib,已编译了QTII下的八个文件,然后更改了modelsim.ini文件,手动添加了库的映射路径:alt_lib = $MODEL_TECH/../alt_lib。按照帖子的说明,应该这个库就可以当作系统的库来使用了吧?可是如果我要进行仿真,新建一个库work,将我的源文件在work中编译,然后load进行仿真的时候却总是报告:"can't find the design unit"。这样看来,modelsim在load我的程序时并没有自动到alt_lib模块当中去搜寻,如果真的是这样,创建仿真库就没有多大意义了,是不是还有哪儿需要设置啊?请过来人指教!

修改modelsim.ini的只读属性,编译库要是重启以后还是没有的话,右击你建的库,选edit重新映射

由于本贴已关闭,我在此转述一下网友wisdomgzy的发言:在Altera库的名字上单击右键,选中Edit,把路径指到存放库的地方,然后退出modelsim即可,肯定可以。

12. modelsim做后仿,加库后还是出现问题!//看到这个地方
modelsim做后仿,创建了library,并编译了相应的库文件到library,也在quartus里生成了.sdo文件和.vho文件,但是就是出现如下错误:
vsim -sdftyp tb_test1s25board_vhd/u0=E:/Stratix_DSPBoard_1S25/simulation/modelsim/test1s25board_vhd.sdo -t 1ps work.tb_test1s25board
# vsim -sdftyp tb_test1s25board_vhd/u0=E:/Stratix_DSPBoard_1S25/simulation/modelsim/test1s25board_vhd.sdo -t 1ps work.tb_test1s25board
# Loading C:Modeltech_5.8ewin32pe/../std.standard
# Loading C:Modeltech_5.8ewin32pe/../ieee.std_logic_1164(body)
# Loading C:Modeltech_5.8ewin32pe/../ieee.std_logic_arith(body)
# Loading C:Modeltech_5.8ewin32pe/../ieee.std_logic_signed(body)
# Loading dspbuilder.dspbuilderblock(body)
# Loading lpm.lpm_components
# Loading C:Modeltech_5.8ewin32pe/../std.textio(body)
# Loading work.tb_test1s25board(tbdspbuilder)
# ** Warning: (vsim-3473) Component 'u0' is not bound.
# Time: 0 ps Iteration: 0 Region: /tb_test1s25board File: e:/stratix_dspboard_1s25/tb_test1s25board.vhd
# ** Error: (vsim-SDF-3250) E:/Stratix_DSPBoard_1S25/simulation/modelsim/test1s25board_vhd.sdo(0): Failed to find INSTANCE 'tb_test1s25board_vhd/u0'.
# Error loading design
还有在加入.sdo文件时,有个apply to region的选项,该如何填啊?

region是指向你的design instance的位置,如果在你的测试程序模块名为test,其中设计的例示名为design那么添 /test/design

对啊,谢谢楼上的回复,但比如我的源程序叫example.vhd;testbench文件是tb_example.vhd;设计的例示名应该在哪里找啊?

我找到了例化名,在testbench中:U0:test1s25board port map....
所以,apply to region应该是/test1s25board/U0吧,但是仿真后还是出现如下错误
# ** Warning: (vsim-3473) Component 'u0' is not bound.
# Time: 0 ps Iteration: 0 Region: /tb_test1s25board File: E:/Stratix_DSPBoard_1S25/tb_test1s25board.vhd
# ** Error: (vsim-SDF-3250) E:/Stratix_DSPBoard_1S25/simulation/modelsim/test1s25board_vhd.sdo(0): Failed to find INSTANCE '/test1s25board/U0'.
# Error loading design

在testbench中:U0:test1s25board port map所以,apply to region应该是/U0。

13. 关于MODELSIM添加ALTEARA仿真库问题
根据《Altera FPGS/PLD 设计基础篇》第8章 第三方EDA工具 (260页)第2点所说添加仿真库,三种方法都不成功。
第一种:安装盘及安装目录下都无"<Altera_install_dir>quartusedasim_lib"
第二种:也未见该书有“Altera_sim_lib"压缩文件,却有Altera_lib_files文件夹,但无法导入
第三种:书中所说键接无效,也搜索不到所谓“msmindex.jsp
请问是什么问题,特别想请篇写本书的老师,说明一下

没有问题,我一直就这么用的

可以把QUARTUS中的一个叫ALTERA_MF_COMPONENTS.VHD文件加进去就可以了。

14. 在modelsim进行仿真,编译都通过了就是不能loading,请教是否是因为缺器件库的原因?
用synplify综合后的*.vm文件,在modelsim进行仿真,编译都通过了就是不能loading,请教是否是因为缺器件库的原因?
# vsim testben
# Loading work.testben
# Loading work.divider
# ** Warning: (vsim-3010) [TSCALE] - Module 'divider' has a `timescale directive in effect, but previous modules do not.
# Region: /testben/uut
# ** Error: (vsim-3033) E:/A02 Baseband Test/FPGA Test/test_mod/test.vm(51): Instantiation of 'cyclone_io' failed. The design unit was not found.
# Region: /testben/uut
# Searched libraries:
# work
# ** Error: (vsim-3033) E:/A02 Baseband Test/FPGA Test/test_mod/test.vm(69): Instantiation of 'cyclone_io' failed. The design unit was not found.
# Region: /testben/uut
# Searched libraries:
# work
# ** Error: (vsim-3033) E:/A02 Baseband Test/FPGA Test/test_mod/test.vm(87): Instantiation of 'cyclone_io' failed. The design unit was not found.
# Region: /testben/uut
# Searched libraries:
# work
# ** Error: (vsim-3033) E:/A02 Baseband Test/FPGA Test/test_mod/test.vm(105): Instantiation of 'cyclone_io' failed. The design unit was not found.
# Region: /testben/uut
# Searched libraries:
# work
# ** Error: (vsim-3033) E:/A02 Baseband Test/FPGA Test/test_mod/test.vm(127): Instantiation of 'cyclone_lcell' failed. The design unit was not found.
# Region: /testben/uut
# Searched libraries:
# work
# Error loading design
`include "cyclone_io"
`include "cyclone_lcell"
看看

你应该将cyclone_atoms.v文件编译到工程中

15. 请问各位大侠如何用Modelsim查看被仿真文件的非端口信号?
请问各位大侠如何用Modelsim查看被仿真文件的非端口信号?
用add wave * 加入的是一些乱七八糟的信号,与原来定义对不上号。求教解决办法!

功能仿真不会出现这种问题。你说的是后仿真吧?布局布线后,内部的一些信号名称会改变,可以先加几个测试端口,看完需要的信号后,再删掉即可。

哈哈,我用的也是这种笨办法,有没有更好的办法呢?如果设计有很多层,若仿真出现错误,想查看某层中的某个自定义信号用这中办法就无能为力了。

那是你testbench写得不对吧?把objects窗口调出来,Alt+v+d+b然后选择你想要看的信号,可以一个信号一个信号的加到wave里面去

add-wave-signal in design基本上所有的信号都有了

add-wave-signal in design 和add wave *一样,加入的信号和原信号名字对不上号(端口信号是一样的),一个自定义的中间信号有N个信号与之对应,分析信号时非常不便,假设设计分N层(VHD文件),在顶层仿真中要查看底层的某个信号又该如何进行呢?

16. 请教达人一个SDF的问题
我在用MODELSIM做后仿的时候,遇到这样一个问题,就是把SDO文件加进去会出现以下的问题,是不是我的APPLY TO REGION填得不对啊,我写的格式是/测试顶层模块名/例化名。各位达人帮忙分析下,谢谢
# ** Warning: (vsim-7) Failed to open SDF file "fat_v.sdo" in read mode.
# No such file or directory. (errno = ENOENT)
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "fat_v.sdo".
# Time: 0 ps Iteration: 0 Region: /testfat File: D:/modelsim pro/chugao/testfat.v

No such file or directory.
不是说了吗?没有此文件或者是路径不对!我想错误应该在两个方面:
1.库加的是否对;
2.APPLY TO REGION是否对!

17. 关于出不来波形的问题(摘自ModelSim安装目录的教程)
For ModelSim users:
This release uses the following licensing versions:
FLEXlm v9.5;
Mentor Graphics Licensing MGLS v2004.2 and PCLS 2004.328.
* * * * * * * * * * * * * * * * * * * * * * *
Access comprehensive ModelSim documentation:
Select Help > Help & Manuals
* * * * * * * * * * * * * * * * * * * * * * *
For ModelSim SE users:
The automatic invocation of the design-wide performance optimization tool "vopt" has been enabled.
The optimization step will improve run time performance and affect the visibility of objects in the design. To enable debug visibility it is recommended you add additional options to vopt on the vsim invocation via the -voptargs argument. For example:
vsim -voptargs="+acc"
which enables full debug access to objects in the optimized design. To understand the full usage of +acc and -voptargs, please refer to the following chapter in the User's Manual:
"Optimizing Designs with vopt"
If required, you may obtain the previous behavior ofvsim, where it does not perform performance optimizations, by setting the modelsim.ini variable "VoptFlow" to 0 (zero). 先要把modelsim.ini的只读属性去掉!


来自:  http://hi.baidu.com/hsyl/blog/item/46746d8195810cd4bd3e1e06.html