几种自动产生一个UVM环境的方法!

文摘   2024-05-19 18:11   上海  

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

第一种用VCS自带的uvmgen工具

当你在命令行时直接输入uvmgen会输出如下信息



选择1

然后按照提示步骤进行UVM环境的创建



创建完之后我们看看环境目录



刚才我们创建的env,agent,scoreboar,coverage收集模块等都已经完备,跑环境的Makefile也都自动生成好了。对于一些简单的UVM环境,用uvmgen还是非常适用的。但是采用这种方式产生UVM环境的局限也比较明显,比如agent不能添加多个等,对于一些复杂的验证环境还得自己手动添加。


第二种用uvm_testbench_gen产生一个UVM环境


uvm_testbench_gen是一款开源的基于python写的脚本工具。该开源工具的下载地址在


https://github.com/hellovimo/uvm_testbench_gen。


这是一款可以通过GUI定制 UVM环境的脚本。


详细内容可以点击上方链接查看。



第三种用uvmdvgen.py产生一个UVM环境


有没有一种脚本能够将整体框架大家好,甚至将验证管理中的checklist都准备妥当。下面介绍的这个uvmdvgen.py 脚本将实现这些强大的功能。


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

  1.  可以快速生成 agent;

  2.  能够根据用户需求产生UVM环境;

  3.  自带checklist;

  4.  自带testplan;

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

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

uvmdvgen.py i2c -a

生成i2c 的agent



用-s 可以一个agent里面增添 host driver 和device driver

uvmdvgen.py i2c -a -s



讲完agent,开始讲environment,用-e 产出UVMenvironment

uvmdvgen.py i2c -e



Checklist,Testplan,UVMenvironment 一应俱全。

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

uvmdvgen.py chip -e-ea uart i2c jtag



如此在environment添加agent便完成了。

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

是不是功能超级强大,迫不及待想用这个脚本的小伙伴可以在下面链接获取。

https://github.com/lowRISC/opentitan/tree/master/util/uvmdvgen

欢迎加入知识星球。星球内每周都有高质量内容更新!每天都会解答大家提出的技术问题。欢迎加入知识星球,助您快速成长。

最后,由于TX修改规则,为了不错过后续内容,欢迎加入QQ群,

另外,由于微信群已经超过200人,添加小编的微信,拉你进入WX学习群。


感谢关注微信公众号《芯片验证日记》,
一起好好学习,天天向上!

芯片验证日记
分享芯片验证相关的知识。
 最新文章