UVM 代码生成器 easier UVM
http://www.eetop.cn/blog/html/28/1561828-3571704.html
UVM大大提高了我们开发验证平台的效率。但同时,熟练掌握UVM搭建验证平台也并不是一件容易的事情。同时由于不同验证工程师搭建环境的风格不太一致,所以在一个项目中常会出现不好管理,甚至前后不一相互矛盾的UVM代码。对于这些问题UVM 代码生成器基本都可以解决,更为关键的是,这对于项目的开发效率提高也是一件极有意义的事情。下面转载一篇相关文章,
强烈建议去学习easier UVM以及 code guidelines
- 能够根据用户自定义的名称来替换的变量字段。这里的替换主要是指代码块名称的替换。
- 循环变量,代码常要求可以循环遍历任意的agent或配置等,这就要求有循环变量的存在。
- 条件变量,某些代码块是否存在是需要用户自定义的。
- 任意嵌套重复的语句
- 标记可以包含用户自定义的代码片段(使用“include”或“inline”)
- 标记自动生成方法被禁用的部分
- 以及一些其他的特定用法,详见下图 我们使用这些变量元素表明,我们期待自动生成的UVM代码是具有一定灵活性的,不能仅仅简单复制一段源文件来实现。我们希望以脚本来实现UVM 代码生成器的功能。这个代码生成器会生成一系列的class、package、module、和interface。
二.代码生成器的实现
- 解析命令行开关
- 解析通用的配置文件,设置内部变量
- 检查这些设置相互之间的约束
- 对于每个 interface/agent
- 解析配置文件并配置内部变量
- 检查这些设置的所有相互约束
- 根据代码模板和内部变量生成代码
- 根据代码模板和内部变量生成顶层代码
- 生成仿真脚本
- 它可以生成完整且可以运行的代码
- 是开源的,可以自由使用
- 有现成的文档可参考,如The Easier UVM Code Generator – Reference Guide, http://www.doulos.com/knowhow/sysverilog/uvm/easier_uvm_generator/ref/
- 已经经过测试,并拥有自己的回归测试套件
- 目录结构组织和文件命名
- 在生成的每个文件的顶部插入标准头文件
- 在每个编译单元周围插入条件编译器
- 使用`include指令包括类代码将类组织成包
- 缩进,间距,对齐和空白行规范
- 变量和类型的命名约定,具有标准前缀和后缀名称
- 将UVM对象的字符串名称与相应的变量名匹配
- 每个类中的声明和语句的常规排序
- 等等
- 将实例化DUT的SystemVerilog模块与实例化UVM test的模块分开
- 支持顶层agent,agent中包含这一层级的envs及多个agent的实例化
- 使用配置对象,每个agent对应一个,顶级的env对应一个
- 如何配置test和顶层env呢:1,修改配置对象并在test中设置factory overrides 2,在env中实例化根寄存器模型,并在启动底层virtual sequence
- 选取哪些UVM component 基类进行扩展呢?
- 选取使用哪些UVM marcro呢?
- 全部使用factory 方法T :: type_id :: create来实例化所有组件,序列和事务吗?
- 配置类中包含的默认变量集的选择,需要check_enable和coverage_enable吗?
- 从顶层模块通过配置数据库传递virtual interface到agent要选择哪种机制呢?
- 在哪里为driver和monitor中的interface赋值呢?
- 通过什么机制来设置和替换is_active变量呢?
- 是否要使用用户自定义的sequencer呢?还是直接使用UVM_sequencer?
- 诸如此类的其他feature
- 产生一个test封装文件,其中包含DUT实例化、DUT和interface之间的连接。
- 产生每个tranction类都会用到的通用方法,包括打包、解包等
- 为寄存器模型产生合适的adapter 和predictor
- 对于新用户:代码生成器可以迅速生成有效的代码示例模板。对于新手搭建和理解环境的好处是巨大的。
- 对于所有用户:提高了生产效率,避免了环境搭建中出现的繁琐的重复和容易出错的工作。保持了代码风格的一致性,自动生成的代码风格一定是统一的,避免了因代码风格问题导致的意外,使测试平台代码更易读、易维护。
UVM 代码生成器 easier UVM相关推荐
- Easier UVM Coding Guidelines / 便捷UVM 编码指南
简介,原则和目标 easier UVM是一组编码指南,附带一个代码生成器,可以创建符合本指南的UVM代码.创建easier UVM是为了帮助个人和项目团队学习,然后尽快使用UVM提高工作效率,并减轻在 ...
- 【UVM基础】UVM 树形组织结构
通过parent的形式, UVM建立起了树形的组织结构. 在这种树形的组织结构中, 由run_test创建的实例是树根, 并且树根的名字是固定的, 为uvm_test_top: 在树根之后会生长出枝叶 ...
- 【UVM基础】UVM 的 build_phase 执行顺序
在UVM的树形结构中, build_phase的执行遵照从树根到树叶的顺序, 即先执行my_env的build_phase, 再执行my_driver的build_phase. 当把整棵树的build ...
- 【UVM理论】uvm环境中对uvm_config_db的理解
如有错误或疑问,欢迎留言,我将尽力回答!共同学习,共同进步! 一.uvm_config_db的用途大概有如下三种: *(1) 传递virtual interface到环境中:**(2) 设置单一变量值 ...
- UVM学习整理——UVM结构(component派生类)
目录 二.UVM结构 2.1UVM组件 2.1.1uvm_driver 2.1.2uvm_monitor 2.1.3uvm_sequencer 2.1.4uvm_agent 2.1.5uvm_scor ...
- 【从零开始学习 UVM】2.6、UVM 基础功能 —— UVM Object Pack/Unpack
UVM自动化宏还包括将类变量打包(pack)成位或字节流的机制,以及解包(unpack)缩位流并填充类内容.在处理SPI.I2C和RS-232等串行通信形式时,这特别有用. 文章目录 三种 pack/ ...
- uvm 形式验证_验证平台自动化篇之二:UVM Framework
原标题:验证平台自动化篇之二:UVM Framework 一个UVM使用者,从新手到精通大致会经历三年的时间,而在经过这三年之后,verifier会有倦怠期.除了不可避免地在80%以上工作处于重复性劳 ...
- UVM Systemverilog EDA IP国外学习网站
有些链接可能要设置浏览器代理才能访问!!! SemiWiki - All Things Semiconductor! (半导体届的维基百科,罗列了各EDA,IP等供应商和行业资讯) WWW.TEST ...
- UVM:模块级 验证平台框架
目录 1. 验证框架实现方式 1.1. 默写 1.2. 验证平台自动化:Easier UVM Generator 2. aaa验证IP的实现:代码 2.1. aaa_param_def.sv 2.2. ...
最新文章
- AI顶会直播丨深度学习顶级会议ICLR中国预讲会明天召开,为期三天五大论坛
- 关于创业公司产品开发原则
- 2019年有三AI“春季”划,给我一个荣耀,还你一生荣耀
- 转载:理解机器学习中的偏差与方差
- html表单提交前验证,jquery表单提交前实现同步验证(附代码)
- C++this指针的用途
- P1496 vijos1165-火烧赤壁【离散化】
- [js] 说说你对js对象生命周期的理解
- android 自定义加载动画效果,Android自定义加载动画-旋转的叶子
- 第1讲:软件测试背景
- 3d slicer调整窗宽窗位_3D游戏模型制作技巧,掌握这些技术你也能进鹅厂!
- 配置管理的目标和主要活动
- 个人网站Timonj(Personal website)
- 蓝牙连接手表后微信语音来电不响铃
- 工业云计算技术在工业自动化系统中的作用
- Blast 几种方法的具体用法以及含义
- 热衷于摸鱼的大一新生
- php执行shell脚本
- CentOS8搭建实现私有CA和证书申请
- 离线地图for SQLite
热门文章
- 如何判断JS拿给我的是不是新机
- bonobo server 自定义
- 十位以内得自幂数_10以内加减法技巧,一年级数学考试必考
- srsLTE:高度模块化的 3GPP LTE 开源库
- 论文:EMNLP2021-End-to-End Entity Resolution and Question Answering Using Differentiable Knowledge Grap
- iojs 版本管理ivm
- 做网站的人必须遵守的N大定律
- 翻译考试用计算机作答,2019年CATTI考试改为机考,官方首次披露真题
- 各种小芯片Chiplet的机遇
- c语言rfmtdate函数,Ecshop后台流程图