微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 求教:Quartus+Modelsim的后仿真问题

求教:Quartus+Modelsim的后仿真问题

时间:10-02 整理:3721RD 点击:
小弟最近在学习Modelsim,在做后仿真时总会报错。小弟也浏览了众多的EDA论坛,发现和小弟有相同错误的朋友不在少数,可是没发现有一个好的解决办法。现将相关情况说明如下:
1、小弟的软件版本:Quartus II 6.0    +     Modelsim SE plus 6.0
2、例子选用的是夏宇闻老师《Veriog数字系统设计教程》中第二部分第九讲中的RISC_CPU的例子,并在modelsim中实现前仿真。
3、在Quartus中进行相关设置,器件选用Cyclone的FPGA,全编译通过。在simulation\modelsim下(即生成的.vo文件和.sdo文件所在目录)建立modelsim工程和Cyclone仿真库,在工程中添加顶层测试文件和.vo文件,在Start Simulation对话框中加载Cyclone仿真库和.sdo文件,在Apply to Region中指定为测试文件名/例化实例名(本例为cputop/t_cpu),运行仿真,出现如下错误:
# Loading F:/CPU/simulation/modelsim/cpu_v.sdo
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/cpu_v.sdo(35): Failed to find INSTANCE '/cputop/t_cpu/m_machine|inc_pc~I/lecomb'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/cpu_v.sdo(51): Failed to find INSTANCE '/cputop/t_cpu/m_machine|inc_pc~I/lereg'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/cpu_v.sdo(67): Failed to find INSTANCE '/cputop/t_cpu/m_register|opc_iraddr[14]~I/lecomb'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/cpu_v.sdo(83): Failed to find INSTANCE '/cputop/t_cpu/m_register|opc_iraddr[14]~I/lereg'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/cpu_v.sdo(107): Failed to find INSTANCE '/cputop/t_cpu/m_register|opc_iraddr[13]~I/lecomb'.
# ** Warning: (vsim-SDF-3432) F:/CPU/simulation/modelsim/cpu_v.sdo: This file is probably applied to the wrong instance.
# Ignoring subsequent missing instances from this file.
# ** Warning: (vsim-SDF-3440) F:/CPU/simulation/modelsim/cpu_v.sdo: Failed to find any of the 214 instances from this file.
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "F:/CPU/simulation/modelsim/cpu_v.sdo".
#    Time: 0 ps  Iteration: 0  Region: /cputop  File: F:/CPU/cputop.v
# Error loading design
        另外,网上有朋友指出勾选SDF中的两个选项,将原来的警告禁止,将原来的错误变为警告,小弟试了一下,可以成功地进行反标注并运行仿真,但总觉得这样做似乎并没有解决实际问题,只不过是把错误忽略了。
    小弟想请教一下:出现这种错误的原因是什么?如何处理这种错误?
    希望大家能够各抒己见,广泛交流,共同进步;
    更希望做过这方面研究的大侠们能够不吝赐教,给我们这些后来人指点迷津。
    小弟在此先拜谢了!

自己先顶起!

在Apply to Region中指定为测试文件名/例化实例名(本例为cputop/t_cpu)?
是不是这步出错了

在Apply to Region中是不是应该这样设置,在“/”前填写顶层测试文件名,“/”后填写在顶层测试文件中引用顶层模块时给顶层模块起的实例化的名称?
小弟的顶层模块截图如下:



顶层测试模块的截图如下:



请问在Apply to Region中填写cputop/t_cpu正确吗?
恳请大侠指点迷津。

cputop是顶层模块么,还是Testbench?
应该是指出顶层模块在Testbench中的路径

cputop是顶层测试模块,也就是Testbench,用于测试cpu模块。那这样指定cputop/t_cpu是否正确呢?这个问题困扰我好长时间了。

把cpu_v.sdo改成t_cpu.sdo试试看,命名一致

小弟又重新做了一遍,还是不成啊。错误代码如下:
# Loading F:/CPU/simulation/modelsim/t_cpu.sdo
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/t_cpu.sdo(35): Failed to find INSTANCE '/cputop/t_cpu/m_machine|inc_pc~I/lecomb'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/t_cpu.sdo(51): Failed to find INSTANCE '/cputop/t_cpu/m_machine|inc_pc~I/lereg'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/t_cpu.sdo(67): Failed to find INSTANCE '/cputop/t_cpu/m_register|opc_iraddr[14]~I/lecomb'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/t_cpu.sdo(83): Failed to find INSTANCE '/cputop/t_cpu/m_register|opc_iraddr[14]~I/lereg'.
# ** Error: (vsim-SDF-3250) F:/CPU/simulation/modelsim/t_cpu.sdo(107): Failed to find INSTANCE '/cputop/t_cpu/m_register|opc_iraddr[13]~I/lecomb'.
# ** Warning: (vsim-SDF-3432) F:/CPU/simulation/modelsim/t_cpu.sdo: This file is probably applied to the wrong instance.
# Ignoring subsequent missing instances from this file.
# ** Warning: (vsim-SDF-3440) F:/CPU/simulation/modelsim/t_cpu.sdo: Failed to find any of the 214 instances from this file.
# ** Error: (vsim-SDF-3445) Failed to parse SDF file "F:/CPU/simulation/modelsim/t_cpu.sdo".
#    Time: 0 ps  Iteration: 0  Region: /cputop  File: F:/CPU/cputop.v
# Error loading design
哎,郁闷中……

我记得以前也出现过类似问题,好像是命名问题。
你重新生成t_cpu.sdo看看

是重新生成.sdo文件然后再重命名吗?Quartus全编译以后生成的.sdo文件名是默认的吧?小弟又重新生成.sdo文件然后再重命名为t_cpu.sdo,并重新做了一遍后仿,还是同样的错误。不过小弟在重做的过程中发现了一个新的问题,在编译Cyclone仿真库的其中一个文件时,命令窗口提示出现如下错误:



再重新编译一遍,命令窗口显示如下信息:




也就是说连续两次执行vcom -reportprogress 300 -work Cyclone {D:/Program Files/QuartusII6.0/eda/sim_lib/cyclone_components.vhd}这个命令时,结果不一样。所以我怀疑是不是Cyclone仿真库的问题?
以前都是连续编译仿真库两次,没太注意过命令窗口的提示,恳请高手指教。

建议你找个小点例子试试

修改源文件名呢,cpu.v-->t_cpu.v

谢谢你的建议:)
我的这个错误好像挺普遍的,在网上一搜到处都是,可是就是不知道错在哪里,也没有好的解决办法,可能是某个细节没有设置好。

小弟按大侠所说的又从头到尾重新做了一遍,还是会出现完全相同的错误,哎,都快崩溃了。

晕,我也崩溃了

这个我也碰到过。后来解决了。
我认为原因可能是:
1。仿真库没编译全或没编译正确。
2。apply to region处要填写器件的例化名。

大侠所说的第二点,小弟可以保证没有问题。不过第一点我也没有把握,小弟用的是Verilog,在编译仿真库时对QuartusII6.0\eda\sim_lib下的下列文件进行了编译:220model.v,altera_mf.v,altera_primitives.v,cyclone_atoms.v。请教大侠,编译这些文件对吗?您当时是如何解决failed to find instance这个问题的?恳请大侠赐教。

同样的问题,有人帮忙解决吗?

今天在进行时序仿真是遇到了一个错误,Failed to find instance......,其实是一个非常简单的问题,因为刚刚接触ModelSim,所以理解不深造成的。在指定SDF文档是的Apply to Region 指定的Region不对,只要指定到应该指定的地方就行了!例如:您写的testbench叫做testrom.vhd,实体名称叫做testrom,您在实例化的时候标号叫做rominstance,(默认标号为UUT),那么,请指定到/testrom/rominstance。 或者使用命令vsim -sdftyp /testrom/rominstance=您的SDF文件 欲仿真的的Testbench配置或实体      本来,这个问题就这么解决了,但是,回到家后又做了一次,又出现了这个问题,我以为是不是哪一个库没有加进去,加了几个库后发现不行。百思......,终于发现了问题的所在,我在进行完function rtl simulation和Post-Synthesis simulation后没有将设计文件去掉,就直接加入了VHO文件。去掉原来的VHDL设计文件。现在好了。哈哈!

网上搜到的

我就进行其中一个既有pll又有rom的例子时候仿真总是不正确,就是出现这样的问题,其它的都还正确

非常感谢

学习一下,学习一下,

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top