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。
- `include "uvm_pkg.sv"
- module hello_world_example;
- import uvm_pkg::*;
- `include "uvm_macros.svh"
- initial begin
- `uvm_info("info1","Hello UVM!",UVM_LOW)
- end
- endmodule: hello_world_example
对于rum.bat,就一句,就是调用modelsim,使用-do选项,当 modelsim启动后,自动执行sim.do脚本。

对于sim.do文件
代码
- #Time: 2016-07-19
- #By : times_poem
- quit -sim
- cd F:/UVM/prj00
- set UVM_DPI_HOME D:/software/modelsim10/uvm-1.1b/win64
- if [file exists work] {
- vdel -all
- }
- vlib work
- vlog -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF hello_world.sv
- vsim -c -sv_lib $UVM_DPI_HOME/uvm_dpi work.hello_world_example
- 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环境)的更多相关文章
- vue3 自学(一)基础知识学习和搭建一个脚手架
两年前曾自学过几天vue,那时候版本还是vue2,但后来项目中一直没用到,当时也觉得学习成本太高,便没有继续学习下去.初学者可以看下链接文章以前的吐槽~~ 学习 Vue ,从入门到放弃 最近部门决定升 ...
- Dubbo(一) —— 基础知识和项目搭建
一.分布式基础理论 1.什么是分布式系统? <分布式系统原理与范型>定义: “分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统” 分布式系统(distribut ...
- Spring基础知识1--环境搭建、bean创建、依赖注入、注解注入
一.Spring两大核心内容 1.控制反转IOC/DI: 应用本身不负责对象的创建和维护,对象和依赖对象的创建完全交给容器管理. 2.AOP(面向切面编程):通过预编译的方式,在运行期通过动态代理的 ...
- Verilog基础知识0(`define、parameter、localparam三者的区别及举例)
1.概述 `define:作用 -> 常用于定义常量可以跨模块.跨文件; 范围 -> 整个工程; parameter: 作用 -> 常用于模块间参数传递; 范围 -> ...
- 从壹开始 [ Id4 ] 之二║ 基础知识集合 & 项目搭建一
前言 哈喽大家又见面啦,感觉好久没更新了,这几天看了一本书<解忧杂货铺>,嗯挺好的,推荐一下
- 以太网基础知识0(UDP和TCP有什么区别)
参考:http://zhidao.baidu.com/link?url=GSIg9_zFhWi6PHezalQveRwwUsU0as7k6MFd05r-cruLT1yDABARraHkuq8ohdIR ...
- 建立一个node.js服务器(使用express搭建第一个Web环境)
一.官网下载node.js 下载地址:https://nodejs.org/en/download/ 根据向导,下一步安装就可以了! 二.使用express搭建Web环境 express是一个开源的n ...
- SpringBoot入门一:基础知识(环境搭建、注解说明、创建对象方法、注入方式、集成jsp/Thymeleaf、logback日志、全局热部署、文件上传/下载、拦截器、自动配置原理等)
SpringBoot设计目的是用来简化Spring应用的初始搭建以及开发过程.该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置.通过这种方式,SpringBoot致力于在蓬勃发 ...
- 《两地书》--Kubernetes(K8s)基础知识(docker容器技术)
大家都知道历史上有段佳话叫“司马相如和卓文君”.“皑如山上雪,皎若云间月”.卓文君这么美,却也抵不过多情女儿薄情郎. 司马相如因一首<子虚赋>得汉武帝赏识,飞黄腾达之后便要与卓文君“故来相 ...
随机推荐
- LeeDUT个人WEB作品
*****目前大三前端狗一只,听说博客里写点记点能求OFFER***** 1.微云盘upan.oureda.cn 2013.10 微云盘是基于分布式系统.提供文件分享的校园存储站点,上传文件之后随即 ...
- 简述System.Windows.Forms.Timer 与System.Timers.Timer用法区别
System.Windows.Forms.Timer 基于窗体应用程序 阻塞同步 单线程 timer中处理时间较长则导致定时误差极大. System.Timers.Timer 基于服务 非阻塞异步 多 ...
- Python 错误和异常小结
1.Python异常类 Python是面向对象语言,所以程序抛出的异常也是类.常见的Python异常有以下几个,大家只要大致扫一眼,有个映像,等到编程的时候,相信大家肯定会不只一次跟他们照面(除非你不 ...
- Hibernate 框架学习
什么是hibernate框架? 1.它是应用在javaee 三层架构中的dao层 它的底层就是JDBC 它对JDBC进行了封装,好处就是不用写jdbc的代码,和sql语句,它是一个开源的轻量级框架,现 ...
- 小A的旅行(绿豆蛙的归宿)【期望DP】
Description 给出一个有向无环的连通图,起点为1,终点为N,每条边都有一个长度.小A从起点出发,走向终点.到达每一个顶点时,如果有K条离开该点的道路,小A可以选择任意一条道路离开该点,并且走 ...
- Elasticsearch(八)【NEST高级客户端--Mapping映射】
要使用NEST与Elasticsearch进行交互,我们需要能够将我们的解决方案中的POCO类型映射到存储在Elasticsearch中的反向索引中的JSON文档和字段.本节介绍NEST中可用的所有不 ...
- ElasticSearch基本查询
词条查询 这是一个简单查询.它仅 匹配给定字段中包含该词条的稳定,且是2未经分析的确切的词条. { “query” :{ “term”:{ “title”:”crime” } } } 多词条查询 匹配 ...
- java的应用,SVN客户端的安装教程
1.先注册一个百度云账号,然后打开https://console.bce.baidu.com 这个网站,按照下面的图形点击 !!!!请注意这是要收钱的,但能学习到那用微信打开你的网站也是值得的. 2. ...
- SparkSQL开窗函数 row_number()
开始编写我们的统计逻辑,使用row_number()函数 先说明一下,row_number()开窗函数的作用 其实就是给每个分组的数据,按照其排序顺序,打上一个分组内行号 比如说,有一个分组20151 ...
- G - Game HDU - 5242 (数链剖分)
题目链接: G - Game HDU - 5242 题目大意:首先是T组测试样例,给出一颗以1节点为根的树,每个节点有各自的价值,有m次从根节点出发向下走到叶子节点的机会,每次会得到所有经过节点的权值 ...