• Modelsim之时序仿真


    利用ModelSim进行时序仿真(门级仿真),可以比较真实地反映出器件的延时情况,不过它也需要相关器件atom库的支持。
    下面就用分频器实例简要说明一下:
    1、在QuartusII中新建一个div工程。注意EDA Simulator的设置,可以新建工程时设置也可以后续再设置,如图:

    Tool name选择ModelSim,Format for output netlist选择Verilog(会生成.vo的Verilog输出文件,若选择VHDL则会生成.vho的VHDL输出文件),其它的可以默认就行。
    2、添加源文件,并编译。完了就会在当前工程目录下生成Simulation>ModelSim的文件夹,里面就存放了相关仿真所需要的文件,如.vo(verilog输出文件),.sdo(延时文件)等。
    3、打开ModelSim,并在刚才生成的ModelSim文件夹路径下新建一个div的工程。为了对比,分别进行功能仿真和时序仿真。
    首先,功能仿真,这个比较简单,直接添加div.v源文件和div_tb.v测试文件,然后编译,完了直接运行仿真即可,得到结果如下:

    可以看到输入、输出是没有延时的,只进行了功能仿真验证。
    4、进行时序仿真,这时候就需要相关预编译库和延时文件的加入了。
    a)将之前的div.v文件Remove,并添加div.vo文件,(因为div.vo就是div.v的输出文件,所以直接用QuartusII编译输出的div.vo就行了),然后编译div.vo和div_tb.v。
    b)开始仿真设置。
    首先,添加预编译的器件库,本例中用的是cycloneii_atoms,找到它所在位置并添加进来(具体这个库的编译之前已经有说过,这里就不多说了),完成后如图所示:

    然后,添加SDF延时文件,也就是刚刚生成的div.sdo文件,点击Add后出现如下窗口:

    首先加入SDF文件,另外还有一个选项就是Apply to Region,这里输入u_div,这个选项主要是指明时序仿真的实体名,即Testbench中实例化的div名(u_div),完了OK。
    添加后的结果如下:

    c)完成上述相关设置后,即可开始仿真了。点击div_tb顶层实体开始仿真。

    仿真完成后的结果放大后如下:

    与之前的功能仿真结果相比,可以明显看到输入输出具有了一定的延时,经测量是6063ps,大约6ns。
    我们的器件选择是EP2C25F672C6,也就是它的速度等级是C6,即最小延时可以达到6ns,因此上面的时序仿真结果与此也是相符合的。

    上面对ModelSim的时序仿真做了简要的说明,其实还可以让仿真更加便捷,比如让时序仿真(门级)在QuartusII编译完成后自动运行,这些待后续再补充。

  • 相关阅读:
    大数据的分页优化的思路
    escape()、encodeURI()、encodeURIComponent()区别详解
    PHP面向对象知识总结
    mysql 简单优化规则
    mysql语句内部优化
    js onmouseout的冒泡事件
    Android 开机自启动
    查看 AndroidManifest.xml文件
    Hierarchy Viewer显示视图性能指标
    Profile GPU rendering
  • 原文地址:https://www.cnblogs.com/asus119/p/2003703.html
Copyright © 2020-2023  润新知