既然决定认认真真搞FPGA,学好modelsim,那么就一路坚持下去!首先,继续摸熟modelsim仿真。 今天摸清了用Modelsim做功能仿真,综合后仿真,时序仿真。纪录下过程和对比下结果。 首先在前面的博客中,各种环境已经在前面搭建完毕,包括编译仿真库等,一会会有一个简单的各个仿真比较例子。 FPGA各种仿真概念(摘自CB书中)
偶然找到一张笔试卷子的题目的module,就以他为例来做了: 首先写好v文件:如下: 写好testbench文件:
一:功能仿真 1.quartus建立工程后,编写v文件,ctrl+k,无错误(当然注意风格) 2.编写testbench文件 3.建立sim1仿真工程,在sim有单独的sim1的文件目录,将v和testbench拷贝到sim1 这里我们没有用到altera的IP核,所以在library那里可以不用设置路径,如果有用到的话,就要指定路径了。
可以看到,在wr_en拉高的时候,cnt立马就有输出,这是没有任何延时的,是纯粹的功能仿真。功能仿真需要文件:v源文件+testbench+指定仿真模型(altera仿真库等,等下就有用到) 二:综合后的仿真 1.关闭modelsim的sim1工程了,建立sim2文件目录,回到quartus 2.然后,点击编译,会在dev目录下产生一个simulation文件夹,找到vo文件 3.建立sim2的modelsim的工程,和上面的类似,但是注意:将vo文件和testbench文件拷贝到sim2文件夹,这一点和上面不同哦。 4.然后和之前不同的是,我们需要添加altera的仿真库,因为不同的器件的门延时不同,网表和器件有关。 5.然后添加信号,仿真,run 500ns 虽然,clk和wr_en是同时上升沿,但是cnt的输出晚了一个时钟周期。 综合后的仿真:vo(verilog网表)+testbench+仿真库模型 接下来看看时序仿真是怎么样子的 三:时序仿真:注意我这里没有添加约束,即这个仿真时在没有时序约束下的布局布线的仿真 1.关闭仿真工程sim2,回到quartus,做出一个设置 2.在综合后的仿真,我们有一个设置为on,现在我们改为off,这样,除了生成网表vo文件,还会生成布局布线后的延时文件sdo文件 3.建立sim3文件目录,将vo和sdo和testbench拷贝到sim3,建立sim3的modelsim工程 和综合仿真多了一个地方,就是sdf那里添加sdo文件,apply to Region那里是testbench的例化的文件,我例化为u1 综合仿真时1个clk的延时,这里不只一个clk延时,可以清楚的看到3个仿真的结果。 时序仿真:vo网表+testbench+仿真库+sdo延时文件 总结: 学会了综合后的仿真:需要哪些文件,以及一般流程。 学会了时序仿真:需要哪些文件,以及一般流程 在即使有用altera IP 核的仿真,只要在仿真的时候,设置好那个library的搜索路径就可以了,因为我之前已经编译了,在启动的时候,那些就是资源库了,设置好路径就可以了。 |
|