芯路恒电子技术论坛

 找回密码
 立即注册
热搜: 合集
查看: 9977|回复: 0

【Modelsim常见问题】vsim-3033 Instantiation of ‘xxxx’ failed

[复制链接]
  • TA的每日心情
    慵懒
    2021-2-24 10:16
  • 423

    主题

    782

    帖子

    1万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    15854
    QQ
    发表于 2019-1-3 11:22:56 | 显示全部楼层 |阅读模式
    020.png
    该情况出现的问题有几种可能,以下分别说明:



    情况1    问题原因
            很多人表示前仿真正常,在做后仿真的时候会遇到这个问题,这种情况主要考虑当前的工程中是否包含了该模块,例如有网友说自己第一个二选一多路器的实验,因为误把testbench文件设置为了工程顶层文件,导致在后仿真时候因为没有对二选一多路器的逻辑内容进行全编译,导致找不到库,此种情况也出现在对IP核进行仿真测试的时候,例如FIFO、PLL、RAM等。记得一定要将被测试的逻辑设置为quartus的工程顶层文件才能进行全编译得到时序网表文件,才能进行正常的后仿真。

    举例:
    1、工程中有A.v、B.v、C.v三个文件,
    2、仿真文件中例化的A.v中的模块,要对A.v文件内容做仿真测试
    3、Quartus工程中设置的B.v文件为Quartus工程顶层。
    此时执行仿真就会报上述错误。提示找不到被例化的A模块。


    例外:
    假设B.v文件中例化了A.v文件中的模块,这样,虽然工程顶层不是A.v,但是由于被设置为工程顶层的B.v例化了,所以也会参与编译,因此不会仿真报错。

    解决方案:
    设置你需要仿真的模块为工程顶层文件,如下图(借用网友图):
    设置顶层.png

    ==========================
    情况2    问题原因
    该问题经常出现在仿真时添加了其他模块辅助仿真,典型的如仿真模型,在小梅哥FPGA设计思想与验证方法视频教程里的按键消抖、串口接收里面都有这个过程,例如对于串口接收,我们在编写testbench仿真接收模块时,使用了串口发送模块来产生测试数据,而串口发送模块并不包含在Quartus 的RTL逻辑中,因此不会自动参与编译,无法得到仿真数据库,按键消抖时,设计了一个按键模型,该模型仅用作仿真,也不会被Quartus自动交付给Modelsim编译

    解决方案
    为此我们需要在设置NativeLink的时候手动添加该文件。如下图可以看到,我们设置时不仅添加了tb文件,还添加了key_model文件,这样Moselsim才会根据该设置去编译key_model文件。

    021.png


    补充一个大家错的比较“狠”的情况
    请大家仔细把上图看清楚,看清楚,看清楚,这个地方是在哪里添加的,Edit Test Bench Settings,是在一个现有的testbench设置中,给该testbench设置再添加一个文件,而大多数人,看图不仔细,都是再新建了一个testbench设置,他们的界面是下面这样的:
    错误tb设置.jpg


    注意看一下,对的,他们不是在一个tb设置种添加了2个文件,而是创建了两个tb设置,所以错了。








    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|小黑屋|Archiver|芯路恒电子技术论坛 |鄂ICP备2021003648号

    GMT+8, 2024-4-25 11:49 , Processed in 0.226853 second(s), 35 queries .

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc. Template By 【未来科技】【 www.wekei.cn 】

    快速回复 返回顶部 返回列表