版权声明:本文为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. quit -sim
  4. cd F:/UVM/prj00
  5. set  UVM_DPI_HOME   D:/software/modelsim10/uvm-1.1b/win64
  6. if [file exists work] {
  7. vdel -all
  8. }
  9. vlib work
  10. vlog  -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF  hello_world.sv
  11. vsim  -c -sv_lib $UVM_DPI_HOME/uvm_dpi   work.hello_world_example
  12. 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进行仿真即可。

UVM系统验证基础知识0(Questasim搭建第一个UVM环境)的更多相关文章

  1. vue3 自学(一)基础知识学习和搭建一个脚手架

    两年前曾自学过几天vue,那时候版本还是vue2,但后来项目中一直没用到,当时也觉得学习成本太高,便没有继续学习下去.初学者可以看下链接文章以前的吐槽~~ 学习 Vue ,从入门到放弃 最近部门决定升 ...

  2. Dubbo(一) —— 基础知识和项目搭建

      一.分布式基础理论 1.什么是分布式系统? <分布式系统原理与范型>定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distribut ...

  3. Spring基础知识1--环境搭建、bean创建、依赖注入、注解注入

    一.Spring两大核心内容 1.控制反转IOC/DI:  应用本身不负责对象的创建和维护,对象和依赖对象的创建完全交给容器管理. 2.AOP(面向切面编程):通过预编译的方式,在运行期通过动态代理的 ...

  4. Verilog基础知识0(`define、parameter、localparam三者的区别及举例)

    1.概述 `define:作用 -> 常用于定义常量可以跨模块.跨文件; 范围 -> 整个工程; parameter:     作用 -> 常用于模块间参数传递; 范围 ->  ...

  5. 从壹开始 [ Id4 ] 之二║ 基础知识集合 & 项目搭建一

    前言 哈喽大家又见面啦,感觉好久没更新了,这几天看了一本书<解忧杂货铺>,嗯挺好的,推荐一下

  6. 以太网基础知识0(UDP和TCP有什么区别)

    参考:http://zhidao.baidu.com/link?url=GSIg9_zFhWi6PHezalQveRwwUsU0as7k6MFd05r-cruLT1yDABARraHkuq8ohdIR ...

  7. 建立一个node.js服务器(使用express搭建第一个Web环境)

    一.官网下载node.js 下载地址:https://nodejs.org/en/download/ 根据向导,下一步安装就可以了! 二.使用express搭建Web环境 express是一个开源的n ...

  8. SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)

    SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...

  9. 《两地书》--Kubernetes(K8s)基础知识(docker容器技术)

    大家都知道历史上有段佳话叫“司马相如和卓文君”.“皑如山上雪,皎若云间月”.卓文君这么美,却也抵不过多情女儿薄情郎. 司马相如因一首<子虚赋>得汉武帝赏识,飞黄腾达之后便要与卓文君“故来相 ...

随机推荐

  1. vue实现随机验证码功能

    效果图: 1.html代码 <div class="form-group" style="display: flex;"> <div> ...

  2. 菜鸟去重复之Sql

    前言 本文主要是总结平时工作学习中遇到的使用Sql Server的去除重复的心得体会. 由于平时工作使用Sql并不多,此次在写本文的测试过程中,就遇到了问题,如能有幸得到高手点播,将不胜感激. 高手可 ...

  3. 看懂gc日志

    使用的是:+PrintGCDetails -XX:+PrintGCTimeStamps 输出的日志格式: [Times: user=0.03 sys=0.00, real=0.01 secs] 363 ...

  4. [c# 20问] 3.String和string的区别

    POINTS string类型为继承自object的sealed类. string类实例用来存储Unicode字符串. string关键字是System.String类的别名,因此既可以定义strin ...

  5. Java Web系列:Spring Security 基础

    Spring Security虽然比JAAS进步很大,但还是先天不足,达不到ASP.NET中的认证和授权的方便快捷.这里演示登录.注销.记住我的常规功能,认证上自定义提供程序避免对数据库的依赖,授权上 ...

  6. webservice需要的包以及demo

    包地址:http://pan.baidu.com/s/1qWyPgqo demo:http://pan.baidu.com/s/1dDvNJg9

  7. 窗口间传送数据wsprintf,WM_SETTEXT,SendMessage的理解

    对wsprintf  API函数的理解: int wsprintf ( LPTSTR lpOut, // pointer to buffer for output  LPCTSTR lpFmt, // ...

  8. Ubuntu16.04 - 怎么能够更好设置PATH变量,便于管理?

    “/etc/profile”是linux里面的全局变量设置文件,加入这里的PATH变量,全局都可以使用,非常方便.加入时候很简单了,直接在PATH末尾加入":+要加入的变量"就可以 ...

  9. 玩PHP必了解的PHP常用符号和函数

    原文:http://y312ff.blog.163.com/blog/static/12701109420119119575812/ 近在写PHP程序的时候发现了一些特殊的PHP符号,例如连续小于符号 ...

  10. lamp-linux-1

    LAMP编程之Linux(1) LAMP:Linux Apache MySQL PHP LNMP:Linux Nginx MySQL PHP WAMP:Windows Apache MySQL PHP ...