Amiya · 2022年01月24日

如何自动产生一个UVM环境

之前有朋友问我怎么用脚本产生一个验证环境,这个问题今天和大家介绍下两种做法。

第一种用VCS自带的uvmgen工具

当你在命令行时直接输入uvmgen会输出如下信息
image.png
选择1

然后按照提示步骤进行UVM环境的创建
image.png
创建完之后我们看看环境目录
image.png
刚才我们创建的env,agent,scoreboar,coverage收集模块等都已经完备,跑环境的Makefile也都自动生成好了。对于一些简单的UVM环境,用uvmgen还是非常适用的。

但是采用这种方式产生UVM环境的局限也比较明显,比如agent不能添加多个等,对于一些复杂的验证环境还得自己手动添加。有没有一种脚本能够将整体框架大家好,甚至将验证管理中的checklist都准备妥当。下面介绍的这个uvmdvgen.py 脚本将实现这些强大的功能。

介绍下这个脚本实现的功能

  1. 可以快速生成 agent;
  2. 能够根据用户需求产生UVM环境;
  3. 自带checklist;
  4. 自带testplan;

这里产生的UVM环境可以支持多个不同的agent,并且UVM环境的编码风格对复用性非常友好。让我们看看这款UVM的脚本是怎么使用的。

用-a 单独生成一个agent,例如

uvmdvgen.py i2c -a

生成i2c 的agent
image.png
用-s 可以一个agent里面增添 host driver 和device driver

uvmdvgen.py i2c -a -s
image.png
讲完agent,开始讲environment,用-e 产出UVMenvironment

uvmdvgen.py i2c -e
image.png
Checklist,Testplan,UVMenvironment 一应俱全。

用-ea添加agent,可以随便添加多少个agent

uvmdvgen.py chip -e-ea uart i2c jtag
image.png
如此在environment添加agent便完成了。

该脚本还可以用-hi和-hr实现是否有interrupt,register model等功能。

是不是功能超级强大,迫不及待想用这个脚本的小伙伴可以在下面链接获取。
https://github.com/lowRISC/opentitan/tree/master/util/uvmdvgen

还有另外一种uvmgen工具,大家可以在处芯积律公众号对话框回复"uvmgen" 获取,感谢大家关注处芯积律,码字不易,没关注的点个关注,感谢大家。

作者:IC bug 猎人
原文链接:处芯积律

推荐阅读

更多IC设计技术干货请关注IC设计技术专栏。
推荐阅读
关注数
20197
内容数
1307
主要交流IC以及SoC设计流程相关的技术和知识
目录
极术微信服务号
关注极术微信号
实时接收点赞提醒和评论通知
安谋科技学堂公众号
关注安谋科技学堂
实时获取安谋科技及 Arm 教学资源
安谋科技招聘公众号
关注安谋科技招聘
实时获取安谋科技中国职位信息