zoukankan      html  css  js  c++  java
  • ModelSim功能仿真,综合仿真,时序仿真

    ModelSim功能仿真,综合仿真,时序仿真

    之前玩fpga时一直用modelsim仿真,现在玩ASIC老师要求用NC了。在这里我就简单的总结一下modelsim的用法

    功能仿真,就是在理想状态下(不考虑延迟),验证电路的功能是否符合设计的要求。

    功能仿真需要

    1.TestBench或者其他形式的输入激励

    2.设计代码(HDL源程序

    值得一提的是,可以在ModelSim直接编写TestBench,使用View->Source->Show language templates.

    综合后仿真(门级仿真),实际上就是将对综合后的门级网表进行仿真,只考虑门延迟,而没有加入时延文件。在功能仿真之后检验综合的结果是否满足功能要求。

    综合后仿真需要:

    1.综合后的门级网表(*.vo文件),而不是原来功能仿真中所需要的HDL源代码.

    2.测试激励

    3.元件库Altera的仿真库,文件位置为*:\altera\quartus\eda\sim_lib

    时序仿真,就是在综合后仿真的基础上加上时延文件(sdf文件),综合考虑了路径延迟和门延迟的情况,验证电路是否存在时序违规。

    时序仿真需要:

    1.综合后的门级网表(*.vo文件),而不是原来功能仿真中所需要的HDL源代码.

    2.测试激励

    3.元件库Altera的仿真库,位置为*:\altera\quartus\eda\sim_lib

    4.较门级仿真还需要具有包含时延信息的反标记文件*.sdf

    现在quartus ii中生成门级网表和延时文件,然后调用ModelSim进行仿真

    1.在quartus ii设置仿真工具为ModelSim,这样设置完成后,在当前目录下会生成一个simulation的目录,该目录下有

    一个simulation文件夹,里面包含了网标文件和时延反标文件,vhdl语言对应的是网表文件为*.vho,时延文件为

    *.sdo。Verilog则为*.vo,*.sdo。

    2.建立库并映射到物理目录,编译TestBench,执行仿真。

    对库的理解:

    我想所谓库,实际上就是一个代替文件夹的符号,区别就是,库中的文件的表述皆是经过了编译的实体或者

    module,一切操作都在库中进行。

    ModelSim有两种库,一种是资源库,一种是工作库(默认名为work,保存当前工程下已通过编译的所有文件,资源库放置work库已编译文件所要调用的资源)。所以编译前,一定要有work库,而且只能有一个。

    3.加入仿真库,可以看出,门级仿真和时序仿真都需要仿真库,在ModelSim中可以通过两种方法将Altera的仿真库调入进来,一种是新建一个库,用来存放仿真是需要调用的文件,另一种是将Altera的器件直接编译到work这个library中去。

    方法一:新建一个库,用来存放调用的仿真库文件

    在Modelsim中建立一个新的project,将*.vo,*.v(TestBench),所用器件的库,一起加入到project当中

    去。新建一个库,名字实际是都可以的,当然将名字命名为所用的altera库的名字比较合适。最重要的是,要对加入的所用期间的库进行右键属性,在General选项卡中,要设置compile to library到你自己新建的这个库中去,否则的话,编译的文件就都会出现在你的工作库当中,可见新建的第二库就是作为资源库来使用的。至此,我们已经完成了所有的准备工作,点击你的工作库,然后选择Simulate中的start simulation,在library标签中,将自己编译的资源库加入。在design标签中选择testbench作为设计单元,要说明的是,如果你没有使用work库的默认库名,而是自己命名了,那么此时你可以使用work库,也可以使用自己命名的库,二者是等价的。到这里,就可以完成了门级仿真,如果是时序仿真,那么还需要将反标记*.sdo文件加入,具体方法是单击start simulation后,在SDF标签中可以加入时延反标记文件。

    方法二:将库文件直接编译到work的library中,这种会比3.1简单一些,不用建立库,直接编译到工作库就可以了。

  • 相关阅读:
    HTTP协议详解
    【VC++开发实战】迅雷晒密及批量查询流量程序
    C/C++中指针和引用之相关问题研究
    C++类中拷贝构造函数详解
    构造函数为什么不能是虚函数
    High一下!
    文件搜索神器everything 你不知道的技巧总结
    不要被C++“自动生成”所蒙骗
    对象的传值与返回
    深入浅出Node.js (3)
  • 原文地址:https://www.cnblogs.com/sccdlyc/p/2637135.html
Copyright © 2011-2022 走看看