• UVM系统验证基础知识0(Questasim搭建第一个UVM环境)


    版权声明:本文为Times_poem原创文章,转载请告知原博主。特别声明:本文在原文基础上做了简单修改以适应文中举例在questasim下的运行,敬请原博主谅解。

    需求说明:UVM系统验证

    内容       :IC设计验证

    来自       :时间的诗

    原文:http://www.ibowen.net/a/toutiao/252197.html

    1. 创建代码

    QuestaSim中建立UVM环境,使用的UVM是UVM1.1b。

    如果安装的是QuestaSim 10.1c版本及以上的话,软件自动的将UVM的库给编译好了,生成了.dll文件,供UVM验证使用。

    modelsim的安装目录下的 UVM-1.1b/win64下,就有一个uvm_dpi.dll。同样也可以在questasim安装目录下直接搜索uvm_dpi.dll以找到其确切路径。

    hello_world.sv这个例子为例,说明验证环境搭建。在这个文件目录下,有3个文件。

          Hello_world.sv: 验证的代码

          Run.bat:  windows运行的脚本

          Sim.do:  modelsim运行的脚本文件

    对于hello_world.sv,该程序,就是输出一个hello uvm。

    1. `include "uvm_pkg.sv"  
    2. module hello_world_example;  
    3.   import uvm_pkg::*;  
    4.   `include "uvm_macros.svh"  
    5.   initial begin  
    6.     `uvm_info("info1","Hello UVM!",UVM_LOW)  
    7.   end  
    8. endmodule: hello_world_example  
    9.      

    对于rum.bat,就一句,就是调用modelsim,使用-do选项,当 modelsim启动后,自动执行sim.do脚本。

    对于sim.do文件

    代码

    1. #Time: 2016-07-19  
    2. #By  : times_poem  
    3.   
    4. quit -sim  
    5.   
    6. cd F:/UVM/prj00  
    7.   
    8. set  UVM_DPI_HOME   D:/software/modelsim10/uvm-1.1b/win64  
    9. if [file exists work] {  
    10.   vdel -all  
    11. }  
    12. vlib work  
    13. vlog  -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF  hello_world.sv  
    14. vsim  -c -sv_lib $UVM_DPI_HOME/uvm_dpi   work.hello_world_example  
    15. run 100 

          设置环境变量UVM_DPI_HOME,指定modelsim下的UVM1.1d的DPI的位置

          建立work library

          编译hello_world.sv代码,通过-L 指定编译需要的几个library

          执行仿真,通过-sv_lib选项,执行UVM1.1d的uvm_dpi.dll,然后针对于哪一个module进行仿真

          运行100ns

    2.运行代码

    执行,也很简单了,直接对run.bat双击。

    如果run.bat运行不成功,可以选择打开questasim,再输入如下指令指定运行路径

    cd F:/UVM/prj00 

    再输入执行命令

    do sim.do 

    3.显示结果

    就会调用modelsim,然后开始执行sim.do脚本。 

    至此,验证环境搭建成功。后面,就是增加代码文件,然后在sim.do文件中,对增加的代码文件进行编译,然后针对于顶层module进行仿真即可。

  • 相关阅读:
    对象的强、软、弱和虚引用
    spark运行模式之一:Spark的local模式安装部署
    Spark Tungsten in-heap / off-heap 内存管理机制--待整理
    sparkContext之一:sparkContext的初始化分析
    mysql分区表之四:分区表性能
    服务的升级和降级
    怎样编写高质量的 Java 代码
    Java之代理(jdk静态代理,jdk动态代理,cglib动态代理,aop,aspectj)
    Spark Streaming之六:Transformations 普通的转换操作
    Spark Streaming之五:Window窗体相关操作
  • 原文地址:https://www.cnblogs.com/YINBin/p/6815410.html
Copyright © 2020-2023  润新知