数字验证学习笔记——UVM学习5 config机制

本文介绍了UVM配置机制的基本概念,包括如何通过接口传递、变量设置及对象传递来进行环境配置。探讨了这些机制如何提高验证环境的灵活性和复用性,并详细解释了set和get操作的使用方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、config机制

在验证环境得创建过程build phase 中,除了组件的实例化,配置也是必不可少的。
为了验证环境的复用性,通过外部的参数设置,使得环境在创建时可以根据不同参数来选择创建得组件类型、组件实例数目、组件之间得连接以及组件得运行模式等。
在更细致得环境调节中有更多的变量需要配置,例如for-loop的阈值、字符串名称、随机变量的生成比重等。
比起重新编译来调节变量,如果在仿真中可以通过变量设置来修改环境,那么就更灵活了,而UVM config 机制正提供了这样的便捷。
在这里插入图片描述

1.1 interface 传递

在这里插入图片描述
接口传递需要发生在run_test()之前
传递过程中是传递的指针,即virtual interface
在这里插入图片描述
uvm_config_db#(virtual intf1)::get(this,“”,“vif”,vif);
this 指的是root.test.c1.vif
前3个参数指的就是上面的
在这里插入图片描述

1.2 变量设置

在这里插入图片描述
在这里插入图片描述

1.3 object传递

  • 在test配置中,需要配置的参数不只是数量多,而且可能还分属不同的组件。
  • 那么如果对这么多层次中的变量做出类似上面的变量设置,那会需要更多的代码,容易出错还不易于复用,甚至底层组件的变量被删除后,也无法通过uvm_config_db::set()得知配置是否成功。
  • 然后如果每个组件中的变量加以整合,首先放置到一个uvm_object中,再对中心化的配置对象进行传递,那么将会更有利于整体环境的修改维护。

在这里插入图片描述
在这里插入图片描述

set 传递的是父类的句柄,get得到也是父类句柄
要将父类句柄转换成子类句柄,才能访问vall、str1(子类里面的变量)

也可以将uvm_object 改成config1,传递子类句柄

1.4

  1. set/get必须成对出现,先set后get
  2. 传递的参数类型必须一致
  3. 传递的路径必须一致
引用\[1\]中提到,测试用例是对DUT施加的激励,也被称为测试向量或pattern。每个测试用例都是一种激励,不同的激励就是不同的测试用例。测试用例的数量是衡量验证人员工作成果的最直接目标。为了保证后加的测试用例不影响已经建好的测试用例,可以在命令行中指定参数来启动不同的测试用例。在UVM中,可以通过设置UVM_TEST_NAME来指定要运行的测试用例的名字。引用\[2\]中给出了一个示例,可以通过命令行参数来启动特定的测试用例。例如,使用命令行参数+UVM_TEST_NAME=my_case1来启动名为my_case1的测试用例。 在编写UVM测试用例,可以按照以下步骤进行: 1. 创建一个继承自uvm_test类的测试用例类。 2. 在测试用例类中重写build_phase方法,用于构建测试环境和配置各个组件。 3. 在测试用例类中重写run_phase方法,用于执行测试过程。 4. 在测试用例类中定义需要的sequence,用于生成测试向量。 5. 在测试用例类中定义需要的scoreboard,用于验证DUT的输出。 6. 在测试用例类中定义需要的coverage,用于评估测试覆盖率。 7. 在测试用例类中定义需要的reporting,用于生成测试报告。 引用\[3\]中给出了一个示例,展示了如何在UVM中设置和运行测试用例。在initial块中,使用run_test函数来启动名为"base_test"的测试用例。同,使用uvm_config_db来设置各个组件的接口。 总结起来,编写UVM测试用例需要创建一个继承自uvm_test类的测试用例类,并在其中重写build_phase和run_phase方法,定义sequence、scoreboard、coverage和reporting等组件,以及使用uvm_config_db来设置组件的接口。可以通过命令行参数来指定要运行的测试用例的名字。 #### 引用[.reference_title] - *1* [数字IC验证:《UVM实战》笔记 - Ch2 一个简单的UVM验证平台(下) - sequence,建造测试用例](https://blog.csdn.net/Dabie_haze/article/details/119398822)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [UVM实战 卷I学习笔记4——创建测试用例](https://blog.csdn.net/weixin_41979380/article/details/120498749)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [UVM:2.5 建造测试用例-> 2.5.1 加入base_test](https://blog.csdn.net/tingtang13/article/details/46427821)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值