UVM实战[一]
欢迎关注个人公众号摸鱼范式

一个新的连载系列,将以一个实际的UVM环境代码讲解的使用、机制等,更新周期会比较长。
文件说明
分享的文件是我个人和同学在参加复微杯大学生电子设计大赛中所完成的设计。赛题来自数字命题AI赛道,有兴趣可以了解一下
https://mp.weixin.qq.com/s/Hb4TrEDXG6uVVY7PZ0mdUw
RTL设计部分代码不予公开,提供的是通过Questasim加密后的文件,能够编译仿真但是无法阅读,例如:
`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "10.6c"
`pragma protect key_keyowner = "Mentor Graphics Corporation" , key_keyname = "MGC-VERIF-SIM-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
EBDDlVIhqXE3DzKivVjuI9OF3W7Y0FsnqRYxip5AT5Uavd7H/9i2xlih9gekfmGf
Cd0qkHQIV6O9VNGmvMgrCqG8CPHEpHWQSRjdFX8wDD3ujd9zz+RD9ESRX/5QMGni
6KvH4+Ud9W2gPqcUBW+QJJrnxusW/kwE1llXdQQtYFh5flre3gSn9uHcVRxRlVtd
PEJcD9unkcmyNMHrV4mH5MNp67AdZ5KrO6MmMPg5PYQr5ybE1UQlkxVaEDLMIfat
WVdNot6rUe6E7HTeos4bYqRI1ma/Ax3by9Xf9da41IU/TfCvSY+uX/2JSrJ31f8U
Zx9xgO7YbnPp7vhXyqu+dg==
`pragma protect data_method = "aes128-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 688 )
`pragma protect data_block
Ij4sxeYRzypcSQKWsDV4i6TeDbhU2nl3hjfQwr1KqPkZsPrTxXNXFC5H2D0rrAUd
6WDGQqEyu9obRLqowsgEMCw1Pqla8PBUJ3hycUzyiUYxvGmhP5sP/NnCA1DRZ9Y9
ya08fhTakN5V00k7AbMYGzUxz2M7iG+qpyp05fk8pYohdG3dW71b2za1CQJ7VEqc
/LxYj0eMW+QoMfwIPDdZAdKpa+Dju0oEO8+KB14EkPruq+93UyRbPlutkvsNsVDr
aMKM+mHa2i4yNgDpTZPk+7MSKC+uTcLrM7a/TQQ40p2AExumbCzSYsNd8lGe6jIh
0tcDrm+wJNyrh3eGzihXstoEwCbh/tYsxmJY8ghdWJ/xo2V7g4SHOugoWA6GGC3D
nPsMuQuJytDIErSJcPNkUZZ3Z5i7ZKx3m9kW4YOus7KdcFn21+XnDMD46rtNw/+c
b49lIMlJylLVKe0OG2KRKOO3ig/E5xnvyHt9rqYU52eHHOBAQrJ7ipvZCt7729vz
iKg5syv55Wc5og1vi7kmazU+42521T226ZodyFiQ11PZKNAQ6mMTiq27DDBTKN5z
zK+LTeejaPumeb4RsOgiPLrNTYHv96PYRzSIptGPCL8R8Rcm0ndCuo72DTKqEcxY
xFG4KEF0vhGxwHqEkZFNqDW1ATTp7s5zcZ6bXTXpFpGQnC1nOfdtwcllt/HNWHaD
9Xg4oDY2B36HlU6KeqTQBUbPb9VMNywpk9NSaVEz2MWQPv3Xh8Eg0uB4ftVZ+C9n
vfvSKO+xBTyGQgvj2QIwelMz6wDc1G4RghcxtHdi/qU64rCDvg5EOWjCSxR4O82R
Fs8c/NnWZJR1AzB8zut8bq/CKga3gzDM4DZ7qi2HMZqV44rCJOfcCfqBYl/g59LR
zZ9Boq26Vbm4yk6SnmXXIw==
`pragma protect end_protected
但是UVM环境部分代码完全公开,文件包括

顶层文件为tb.sv
结构说明
关于RTL的功能设计,可以翻阅原文连接中的答辩PPT,主要功能是实现了输入特征图(1-128)*(1-128),卷积核1-7,padding1-7,步长1-3,以及2*2pooling和Relu的功能。整体结构为

而整体的验证环境结构如下


由于时间紧迫,技能生疏,整体环境并不完善,代码也有欠缺,此外,也未加入寄存器模型,因此对寄存器的访问比较繁琐,后期会进行改进。
由于设计是进行卷积计算的,所以运行时间会比较长,checker通过软件算法对RTL的卷积计算结果进行比对,所以RTL完成一次卷积计算后,仿真时间会停滞一段时间用于软件的卷积计算,属于正常现象。
将.sv和.svp文件添加进工程后,顶层模块为tb,编译后在控制台输入vsim -voptargs=+acc work.tb即可开始默认的testcase,若要进行其他testcase,需要加上选项+UVM_TESTNAME=my_test,具体test名请查看conv_pkg.sv

推荐参考资料
推荐有一定SV基础的朋友进行学习,如果还没有可以参考下面几本书自学
绿皮书,主要包括SV的语法讲解

UVM primer,UVM入门讲解,包括OOP基本概念

白皮书,一本UVM翔实的工具书,很多参赛选手的UVM环境就是直接参考本书例子的

红皮书,包括从SV到UVM讲解,验证思想,验证管理等

微信后台回复"UVM实验"获取代码和PPT。

UVM实战[一]的更多相关文章
- UVM基础总结——基于《UVM实战》示例
一.前言 工作一直在做SoC验证,更关注模块间的连接性和匹配性,所以相比于擅长随机约束激励的UVM来说,定向测试的概念更容易debug.当然前提是IP已经被充分验证.因此觉得接触UVM的机会较少.到现 ...
- UVM实战[二]
本期将讲解UVM环境构成和启动方式.主要参考资料为 http://bbs.eetop.cn/thread-320165-1-1.html http://rockeric.com/ 环境构成 进行仿真验 ...
- UVM Top Testbench
top testbench在top_tb中包含进所有的文件,将DUT放在top_tb中(例化DUT),连接好各个端口,提供clk时钟和rst_n复位信号.最主要的是要给组件中的虚接口设置接口,一般是给 ...
- 【转】uvm 与 system verilog的理解
http://www.cnblogs.com/loves6036/p/5779691.html 数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. 验证中通常要搭建一个完整的测试平台和写所需要 ...
- FPGA验证之SystemVerilog+UVM
[转载]https://blog.csdn.net/lijiuyangzilsc/article/details/50879545 数字芯片和FPGA的验证.主要是其中的功能仿真和时序仿真. ...
- (转)新手学习System Verilog & UVM指南
从刚接触System Verilog以及后来的VMM,OVM,UVM已经有很多年了,随着电子工业的逐步发展,国内对验证人才的需求也会急剧增加,这从各大招聘网站贴出的职位上也可以看出来,不少朋友可能想尽 ...
- Verdi UVM Debug Mode 简单使用
转载:Verdi UVM Debug Mode 简单使用_Holden_Liu的博客-CSDN博客 文档与源码: User Guide: UVMDebugUserGuide.pdf in $VERD ...
- Modelsim command line 传参数到 .do 文件
gui跑mdelsim总觉得很麻烦,使用命令来启动方便了很多,类似linux一样,其实目前windows也可以做到,只是业界不怎么用windows罢了. 基于modelsim搭了一个UVM环境, 用 ...
- Verdi Transaction Debug Mode 简单使用
转载:Verdi Transaction Debug Mode 简单使用_Holden_Liu的博客-CSDN博客 文档与源码: User Guide: Verdi_Transaction_and_P ...
随机推荐
- 056、Java中continue的用法
01.代码如下: package TIANPAN; /** * 此处为文档注释 * * @author 田攀 微信382477247 */ public class TestDemo { public ...
- 偶然在博客中见对百度一个面试题的探讨,写些自己的看法以及指出探讨中不对的观点:百度面试题:求绝对值最小的数 有一个已经排序的数组(升序),数组中可能有正数、负数或0,求数组中元素的绝对值最小的数,要求,不能用顺序比较的方法(复杂度需要小于O(n)),可以使用任何语言实现 例如,数组{-20,-13,-4, 6, 77,200} ,绝对值最小的是-4。
今天申请了博客园账号,在下班后阅览博客时发现了一个关于百度面试题探讨的博客(其实是个很基础的问题),此博客url为:http://www.blogjava.net/nokiaguy/archive/2 ...
- 从0开始自己配置一个vps虚拟服务器(2)
配置php环境 1.安装php安装所依赖的包 yum -y install gcc gcc-c++ libxml2 libxml2-devel 2.cd usr/local/src 进入目录,在这个目 ...
- java.lang.NumberFormatException: For input string: "F"
在通过myBatis执行sql时,报错: java.lang.NumberFormatException: For input string: "F" xml中sql内容为: &l ...
- plsql和navicat连接远程oracle(易错点)
plsql和navicat连接远程oracle,只需要安装oracle客户端即可.注意此处是oracle客户端(Instant Client),并不是oracle数据库. oracle客户端下载地址: ...
- oracle学习笔记(4)
4.oracle数据库的启动流程 windows操作系统 启动监听: lsnrctl start; 启动数据库实例:oradim-startup-sid 实例名 linux系统 启动监听:lsnrct ...
- PostAsync与GetAsync
using Newtonsoft.Json; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; u ...
- 仿淘宝 vue
最近自己闲着无聊,用vue仿照淘宝打算写个皮囊,顺便把遇到的问题顺便记录下 1.动画问题 (1)单个元素给动画 <transition name="fade">< ...
- vue路由 视图命名
<body> <div id="app"> <p @click="go">hello app!</p> < ...
- Linux下录屏
我喜欢的: Gnome系用户,按ctrl+shift+alt+r,屏幕右上角有红点出现,开始录屏,结束的话再按一次ctrl+shift+alt+r,录好的视频在 ~/Videos下 ffmpeg # ...