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容器技术)
大家都知道历史上有段佳话叫“司马相如和卓文君”.“皑如山上雪,皎若云间月”.卓文君这么美,却也抵不过多情女儿薄情郎. 司马相如因一首<子虚赋>得汉武帝赏识,飞黄腾达之后便要与卓文君“故来相 ...
随机推荐
- django model中的save()方法
Model.save(force_insert=False, force_update=False, using=DEFAULT_DB_ALIAS, update_fields=None) id和pk ...
- windows服务安装记录
首先打开cmd. 进入这个地址 C:\Windows\Microsoft.NET\Framework\v4.0.30319 执行操作 InstallUtil.exe E:\QueueWinServi ...
- “全栈2019”Java异常第十七章:Error详解
难度 初级 学习时间 10分钟 适合人群 零基础 开发语言 Java 开发环境 JDK v11 IntelliJ IDEA v2018.3 文章原文链接 "全栈2019"Java异 ...
- zTree第三章,异步加载,前端
zTree异步加载 ---------------------------------------------------------------------------------- 具体详见API ...
- aspx代码审计-1
今天和大家分享一下aspx网站的代码审计,漏洞类型就是SQL注入和cookie欺骗. 本文作者:i春秋签约作家——非主流 今天看的cms名字叫做:XX星员工请假系统 我们首先看一下网站的目录结构: 其 ...
- ElasticSearch基本查询
词条查询 这是一个简单查询.它仅 匹配给定字段中包含该词条的稳定,且是2未经分析的确切的词条. { “query” :{ “term”:{ “title”:”crime” } } } 多词条查询 匹配 ...
- html中文字溢出处理(text-overflow)
文字溢出处理有两种方式: 一.css overflow:hidden; white-space: nowrap; text-overflow: ellips ...
- css 做幻灯片效果
设置一个div 盒子 <div class="ani"></div> 设置css 样式 .ani{ width:480px; height:320px; ...
- angular核心原理解析1:angular自启动过程
angularJS的源代码整体上来说是一个自执行函数,在angularJS加载完成后,就会自动执行了. angular源代码中: angular = window.angular || (window ...
- [Linux] 如何在 Linux 中提取随机数
如何在 Linux 中提取随机数 一.设备文件 /dev/random & /dev/urandom 字符特殊文件 /dev/random 和 /dev/urandom (存在于Linux 1 ...