当前位置: 首页 > news >正文

Modelsim UVM windows环境搭建

0、前言

  UVM本身是一个验证方法学和框架,但是它依托于SystemVeriloguvm库,所以也脱离不了理论和实践相结合的学习路线。
  相信你在学习UVM的过程中,比如看 《UVM实战》白皮书 的过程中,也会产生要把书上代码自己实现这样的想法,这是很自然的过程。因为在学习UVM的过程中,你已经发现了SystemVerilog不同于设计RTL,在验证中、在UVM中使用的SV有一种类似软件的活力。
  所以本篇旨在介绍一下一种环境搭建的方法,即 modelsim+uvm+windows,其好处就是可以快速在自己电脑上完成搭建(相比vcs,verdi框架而言),适合学习。

1、准备工作

软件准备

安装Modelsim或Questasim,并且将其加入环境变量(UVM 1.1d在Modelsim安装时就会自带)
安装 git bash 用于在windows环境下执行简单脚本和shell 命令
对UVM有基础了解

参考如下

环境搭建参考1

代码准备

代码完全参考白皮书第二章第一小节,also refer to my github repository A00 directory
可以直接clone上面我的github repository for study

2、结构概述

  书上第二章第一节讲的验证平台代码仅仅适用于环境搭建,因为它非常基础,只有driver驱动dut。当然,简单的验证平台可以将代码的错误概率降低到最小,从而使我们专注于环境的搭建是否正确。
  通过tree命令,列出我们项目的文件夹目录。主要是由design和verify构成,分别代表了设计和验证的代码。在verify/sim下有一个flist.f,它链接了其他的filelist或者直接链接了.sv,相当于罗列出所有需要编译的文件。
在这里插入图片描述
flist.f内容如下

../th/top_tb.sv
-F ../env/env.f
-F ../../design/dut.f
// -F ../tc/tclist.f

  这里使用-F用来指定链接的其他子finelist(.f)文件,大写的-F表示链接的这些filelist,其路径的起点就是链接的这些filelist各自所在的位置。而如果使用小写-f,则filelist文件路径起始位置是我们的顶层filelist,或者说调用这个filelist的位置(一般是Makefile的位置)

更多有关-F和-f 内容,refer to this article

  简而言之,-F比较好用,符合常规思维习惯。

  sim文件夹中,主要用来在此文件夹下进行仿真。由于我们是基于modelsim的,所以sim.do是一切的精髓,我对其添加了注释进行解释,注意需要把里面的路径换成自己的路径。这个过程就是指定modelsim自带的uvm 1.1d并且把它加入到编译中来。

#################create work directory#######
vlib work#################set env vairable############
set UVM_DPI_HOME D:/Modelsim/uvm-1.1d/win64
set UVM_HOME D:/Modelsim/verilog_src/uvm-1.1d#################cmp#########################
vlog +incdir+$UVM_HOME/src -L mtiAvm -L mtiOvm -L mtiUvm -L mtiUPF $UVM_HOME/src/uvm_pkg.sv -F flist.f vsim -c -novopt -sv_lib $UVM_DPI_HOME/uvm_dpi work.top_tblog -r /*run -all

  为了方便,又编写了make file,负责删除上次仿真输出的一些tmpt 文件,然后进行本次仿真

run:rm -rf work transcript vsim.wlf *.logvsim -c -do "sim.do"
view:vsim -view vsim.wlf

3、使用

只需要在sim文件夹下输入

make run

仿真结束后输入

make view

就可以查看波形了

注意(和VCS工具的区别):由于工具的原因,modelsim需要在引用class的时候,主动使用include将对应class文件进行添加(当然,这也和书本上是一致的)

除此之外,每个uvm class文件前都需要加入

`include "uvm_macros.svh"
import uvm_pkg::*;

这样就可以保证正常进行仿真

打印信息

在这里插入图片描述

波形

在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Vue3实时更新时间(年-月-日 时:分:秒)
  • Fréchet Inception Distance(FID)原理
  • Mysql中的锁机制详解
  • 屏幕像素初步认识
  • 网站如何针对不同的DDOS进行防御?
  • 步进电机基本知识
  • 前端框架的演变与选择
  • P7492 [传智杯 #3 决赛] 序列
  • 未能启动xxx.vmx文件
  • Excel 将行和列转置的两种方法
  • Python 数据分析— Pandas 基本操作(中)
  • pikachu文件包含漏洞靶场(本地文件包含+远程文件包含关卡)
  • 维信小程序禁止截屏/录屏
  • sqlalchemy简单使用
  • 统一NLP和目标检测的DETR(一)——self attention、encoder、decoder
  • [分享]iOS开发-关于在xcode中引用文件夹右边出现问号的解决办法
  • CentOS从零开始部署Nodejs项目
  • happypack两次报错的问题
  • Node + FFmpeg 实现Canvas动画导出视频
  • Node项目之评分系统(二)- 数据库设计
  • Perseus-BERT——业内性能极致优化的BERT训练方案
  • python学习笔记 - ThreadLocal
  • SpiderData 2019年2月25日 DApp数据排行榜
  • SSH 免密登录
  • windows下如何用phpstorm同步测试服务器
  • Yii源码解读-服务定位器(Service Locator)
  • 成为一名优秀的Developer的书单
  • 对象管理器(defineProperty)学习笔记
  • 看图轻松理解数据结构与算法系列(基于数组的栈)
  • 前嗅ForeSpider中数据浏览界面介绍
  • 浅谈Golang中select的用法
  • 时间复杂度与空间复杂度分析
  • 通过几道题目学习二叉搜索树
  • 用Python写一份独特的元宵节祝福
  • ​【已解决】npm install​卡主不动的情况
  • # 睡眠3秒_床上这样睡觉的人,睡眠质量多半不好
  • #pragma once
  • #前后端分离# 头条发布系统
  • #我与Java虚拟机的故事#连载17:我的Java技术水平有了一个本质的提升
  • $nextTick的使用场景介绍
  • %check_box% in rails :coditions={:has_many , :through}
  • ( 10 )MySQL中的外键
  • (007)XHTML文档之标题——h1~h6
  • (2/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (办公)springboot配置aop处理请求.
  • (简单有案例)前端实现主题切换、动态换肤的两种简单方式
  • (六)Flink 窗口计算
  • (四)opengl函数加载和错误处理
  • (原)Matlab的svmtrain和svmclassify
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core 通过 Ef Core 操作 Mysql
  • .NET 动态调用WebService + WSE + UsernameToken
  • .NET/C# 编译期能确定的字符串会在字符串暂存池中不会被 GC 垃圾回收掉
  • .NetCore Flurl.Http 升级到4.0后 https 无法建立SSL连接
  • ::什么意思