该情况出现的问题有几种可能,以下分别说明:
情况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例化了,所以也会参与编译,因此不会仿真报错。
解决方案:设置你需要仿真的模块为工程顶层文件,如下图(借用网友图):
==========================
情况2 问题原因该问题经常出现在仿真时添加了其他模块辅助仿真,典型的如仿真模型,在小梅哥FPGA设计思想与验证方法视频教程里的按键消抖、串口接收里面都有这个过程,例如对于串口接收,我们在编写testbench仿真接收模块时,使用了串口发送模块来产生测试数据,而串口发送模块并不包含在Quartus 的RTL逻辑中,因此不会自动参与编译,无法得到仿真数据库,按键消抖时,设计了一个按键模型,该模型仅用作仿真,也不会被Quartus自动交付给Modelsim编译
解决方案为此我们需要在设置NativeLink的时候手动添加该文件。如下图可以看到,我们设置时不仅添加了tb文件,还添加了key_model文件,这样Moselsim才会根据该设置去编译key_model文件。
补充一个大家错的比较“狠”的情况 请大家仔细把上图看清楚,看清楚,看清楚,这个地方是在哪里添加的,Edit Test Bench Settings,是在一个现有的testbench设置中,给该testbench设置再添加一个文件,而大多数人,看图不仔细,都是再新建了一个testbench设置,他们的界面是下面这样的:
注意看一下,对的,他们不是在一个tb设置种添加了2个文件,而是创建了两个tb设置,所以错了。
|