开门见山,出现这个报错的根本原因其实是因为modelsim无法识别原理图,导致仿真失败。所以,如果大家使用原理图代替顶层文件进行设计,那么仿真之前一定要将原理图转换成verilog代码的形式才能仿真成功。
大家在刚开始使用quartus和modelsim联合仿真的时候,可能了解过我们是可以将一个设计的各个模块代码先实现,然后生成这些模块的原理图,创建一个原理图的顶层文件。在这个顶层文件里将各个模块用信号线连接起来,然后写一个测试文件就直接跑仿真了,那么最终结果一定是仿真失败。
那我前边也说过,由于modelsim无法识别原理图,所以我们解决这个问题的关键就是将这个原理图转换成.v文件就可以了。具体的操作过程如下:
1、在工程完整的情况下(在这里我拿“按键控制led”这个小设计为例进行说明,这个设计包括key_filter和led_ctrl两个小模块),也就说我把key_filter(按键消抖)和led_ctrl(led控制)的代码都实现以后,分别生成他们的原理图(这个操作步骤我在这里不再赘述),然后新建一个原理图文件,在这个原理图文件里将这两个模块用信号线连接(包括输入输出以及模块之间的信号流动)。具体入下图所示:
2、接下来我们就需要将这个原理图转换成verilog代码。
File→Creat/Update→Creat HDL File CurrentFile,然后需要我们选择一下语言(如下边的第二幅图所示),基本上都是verilog(选择什么语言根据自己的设计决定)
3、以上操作完成以后,就是编写测试文件,跑仿真就可以了。