估计很多人买了CB哥的书来看吧,他们在学习modelsim仿真的过程中可能遇到过明明是按照书上的步骤添加器件库的了,但还是出现如下的错误:
首先,我想说的是CB哥书上的modelsim-altera10.1d是随QuartusII一起安装的,它已经编译了altera的器件库。它是一个免费版的仿真工具,不需要破解,当然它的功能不是最强大的,仿真速度也不是最快的,但已经可以满足我们一般的仿真了。有些人可能装了速度较快的SE版本的不带altera器件库的modelsim,这时器件库的问题就来了,尤其是那些新手。为了搞定上图的错误,在这里给出了一种解决办法,希望对大家有所帮助。
(1)在我们的设计中经常会用到宏定义模块,这是就需要我们添加altera器件库,其中必要的编译资源文件有quartusII安装目录/eda/sim_lib下的220model.v和altera_mf.v(以Verilog描述电路),另外还常用到PLL,因此还要目标器件库,如quartusII安装目录/eda/sim_lib下的cycloneive_atoms.v等。接下来,让我们开始编译我们指定的器件库。以上一篇博文安装的modelsim se 6.5g来进行库的编译,首先在modelsim的安装目录下新建altera文件。
(2)启动modelsim仿真软件,点击“File”--->“Change Directory…”,在弹出的对话框中选择刚刚在modelsim安装目录下新建的altera文件,点击“确定”。
(3)点击“File”--->“New”--->”Library…”,输入库的名字:220model以新建一个库,点击“OK”。
(4)点击“Compile”--->”Compile…”,在弹出的对话框中,选Library为刚刚新建的220model,查找范围为quartusII安装目录/eda/sim_lib,选择220model.v,然后点击“Compile”,“Done”。
(5)同理,在altera文件下新建库文件altera_mf和cycloneive_atoms,然后将quartusII安装目录/eda/sim_lib下的编译资源文件altera_mf.v和cycloneive_atoms.v编译到相应的库文件。
(6)接着将上面编译的库添加到modelsim.ini文件中。右击modelsim安装目录下的modelsim.ini文件,选择“属性”,去掉只读。
(7)打开modelsim.ini文件,添加如下内容,然后关闭文件,并加上只读属性。
(8)以后打开modelsim,都可以看到我们添加的库。
(9)接下来,以CB哥的Sobel边缘检测例程为例进行仿真,看是否还出现之前的错误。打开modelsim工程,点击“Compile”--->”Compile All”,结果出现以下问题:
(10)根据错误提示可知,找不到源文件,原因是我改变了modelsim工程的路径,从而无法找到源文件。解决方法是将工程中的源文件删掉(切不可勾选从磁盘中删除),重新加载源文件。
(11)从新全编译源文件,发现编译都通过。
(12)点击“Simulate”--->”Start Simulation…”,由于本设计中使用了Shift_RAM和PLL,需在Libraries选项卡下添加搜索库220model、altera_mf和cycloneive_atoms。
(13)切换到Design选项卡,展开库work,选中Video_Image_Processor_TB,点击“OK”开始仿真。
(14)结果发现没有信号出来,由编译信息可以设计被优化了。
(15)解决的办法是将modelsim.ini文件的“VoptFlow = 1”改为“VoptFlow = 0”(修改之前记得把modelsim.ini属性去掉,修改完后把只读改回来)。
(16)有时还会出现下面的问题,我个人的解决方法是重新建立工程,不知大家是否有更好的办法(希望互相告知)。
(17)重建工程后,再进行仿真就大功告成了。
我晕,现在已经凌晨2:30了,明早8:30还要实习呢!该睡了,88,晚安*^_^*
![仿真出错_thumb[4] 仿真出错_thumb[4]](https://images0.cnblogs.com/blog/726470/201503/110248467458050.png)
![编译正确_thumb[6] 编译正确_thumb[6]](https://images0.cnblogs.com/blog/726470/201503/110249032149647.png)
![lujing_thumb[2] lujing_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110249135585643.png)
![新建库_thumb[2] 新建库_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110249315427269.png)
![编译库1_thumb[2] 编译库1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110249414021949.png)
![新建库1_thumb[2] 新建库1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110249513393184.png)
![新建库2_thumb[2] 新建库2_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110250012143634.png)
![新建库3_thumb[2] 新建库3_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110250115271386.png)
![新建库4_thumb[2] 新建库4_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110250217928420.png)
![配置1_thumb[3] 配置1_thumb[3]](https://images0.cnblogs.com/blog/726470/201503/110250464025140.png)
![去掉只读_thumb[2] 去掉只读_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110251029024981.png)
![添加1_thumb[3] 添加1_thumb[3]](https://images0.cnblogs.com/blog/726470/201503/110251103705029.png)
![只读_thumb[2] 只读_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110251280422328.png)
![库_thumb[3] 库_thumb[3]](https://images0.cnblogs.com/blog/726470/201503/110251459022384.png)
![找不到文件1_thumb[2] 找不到文件1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110252062142156.png)
![删除源文件_thumb[2] 删除源文件_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110252244174783.png)
![删除源文件1_thumb[2] 删除源文件1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110252393706352.png)
![添加源文件1_thumb[2] 添加源文件1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110252561992993.png)
![添加源文件2_thumb[2] 添加源文件2_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110253158393393.png)
![编译通过1_thumb[2] 编译通过1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110253326679034.png)
![搜索库1_thumb[2] 搜索库1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110255411673159.png)
![搜索库2_thumb[2] 搜索库2_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110255500588908.png)
![仿真1_thumb[2] 仿真1_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110256075897463.png)
![优化1_thumb[3] 优化1_thumb[3]](https://images0.cnblogs.com/blog/726470/201503/110256251837206.png)
![解决优化_thumb[3] 解决优化_thumb[3]](https://images0.cnblogs.com/blog/726470/201503/110256300114782.png)
![重建工程_thumb[2] 重建工程_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110256502452296.png)
![成功_thumb[2] 成功_thumb[2]](https://images0.cnblogs.com/blog/726470/201503/110257095429124.png)