29 UVM Command Line Processor (CLP)

随着设计和验证环境的复杂性增加,编译时间也增加了,这也影响了验证时间。因此,需要对其进行优化,以便在不强制重新编译的情况下考虑新的配置或参数。我们已经看到了function or task如何基于传递参数进行行为。类似地,UVM提供了一个接口来提供命令行参数,从而提供了灵活性,在“uvm_cmdline_processor”类的帮助下可以避免重新编译testbench。它允许使用不同的配置运行测试。

uvm_cmdline_processor类提供了从命令行设置各种uvm变量的功能,例如组件详细性(component verbosity)以及整数类型和字符串的配置。

1 uvm_cmdline_processor class hierarchy

2 uvm_cmdline_processor Methods

这里讨论了命令行处理器和内置命令行参数的几种方法。

`include "uvm_macros.svh"
import uvm_pkg::*;class my_test extends uvm_test;uvm_cmdline_processor clp;bit [31:0] addr;string clp_addr_str;string clp_pattern_str;string pattern;`uvm_component_utils(my_test)function new(string name = "my_test", uvm_component parent = null);super.new(name, parent);endfunctionfunction void build_phase(uvm_phase phase);super.build_phase(phase);clp = uvm_cmdline_processor::get_inst();addr = clp.get_arg_value("+ADDR=", clp_addr_str) ? clp_addr_str.atohex(): 32'hF;pattern = clp.get_arg_value("+PATTERN=", clp_pattern_str) ? clp_pattern_str: "Hello";endfunctionfunction void end_of_elaboration_phase(uvm_phase phase);super.end_of_elaboration_phase(phase);`uvm_info(get_full_name(), $sformatf("addr = %0h, pattern = %s", addr, pattern), UVM_LOW)endfunction
endclassmodule tb_top;initial beginrun_test("my_test");end
endmodule

 Please check “Run Options” while running the code.[-access +rw +ADDR=AA +PATTERN=World]

UVM: command line processor - EDA Playground

Output:

UVM_INFO testbench.sv(25) @ 0: uvm_test_top [uvm_test_top] addr = aa, pattern = World

3 Built-in command line arguments in UVM

4 System functions for command line arguments in SystemVerilog

和uvm_cmdline_processor类方法类似,SV也提供了一些系统函数。

module cmd_line_args_ex;bit [31:0] addr_1, addr_2;string pattern;initial begin// +ADDR argument uses $test$plusargs and $value$plusargsif($test$plusargs("ADDR="))void'($value$plusargs("ADDR=%0h", addr_1));elseaddr_1 = 'hF;if($test$plusargs("PATTERN="))void'($value$plusargs("PATTERN=%s", pattern));elsepattern = "Hello";$display("address = %0h, pattern = %s", addr_1, pattern);if($test$plusargs("ENABLE"))$display("You have successfully received ENABLE as argument");// +ADDR argument uses $value$plusargs onlyif($value$plusargs("ADDR=%0h", addr_2))$display("You have successfully received %0h value for ADDR argument", addr_2);end
endmodule

 Please check “Run Options” while running the code.【-access +rw +ADDR=AA +PATTERN=World +ENABLE】

Output:

address = aa, pattern = World
You have successfully received ENABLE as argument
You have successfully received aa value for ADDR argument

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/313836.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2023结婚成家,2024借势起飞

您好,我是码农飞哥(wei158556),感谢您阅读本文,欢迎一键三连哦。 💪🏻 1. Python基础专栏,基础知识一网打尽,9.9元买不了吃亏,买不了上当。 Python从入门到精…

【Redis-05】Redis如何实现保存键值对的保存及过期键的管理策略

在之前的文章我们介绍过,Redis服务器在启动之初,会初始化RedisServer的实例,在这个实例中存在很多重要的属性结构,同理本篇博客中介绍的数据库实现原理也会和其中的某些属性相关,我们继续看一下吧。 1.服务器和客户端…

2.3物理层下面的传输媒体

目录 2.3物理层下面的传输媒体2.3.1导引型传输媒体1.双绞线2.同轴电缆3.光纤 2.3.2非导引型传输媒体无线电微波通信 2.3物理层下面的传输媒体 传输媒体是数据传输系统中在发送器和接收器之间的物理通路 两大类: 导引型传输媒体:电磁波被导引沿着固体媒体…

微信小程序开发系列-11组件间通信02

微信小程序开发系列目录 《微信小程序开发系列-01创建一个最小的小程序项目》 《微信小程序开发系列-02注册小程序》 《微信小程序开发系列-03全局配置中的“window”和“tabBar”》 《微信小程序开发系列-04获取用户图像和昵称》 《微信小程序开发系列-05登录小程序》 《…

连接progressql报错Cannot load JDBC driver class ‘org.postgresql.Driver‘,亲测有效!!!

Jmeter连接progressql报错Cannot load JDBC driver class ‘org.postgresql.Driver’ 1.到官方下载驱动注意:根据项目的JDK版本来下载对应的驱动Download | pgJDBC 2.将postgresql-42.2.27.jar复制到lib目录下面, 然后重新启动 连接driver信息如下&#…

事务失效的十种常见场景

学习事务失效场景 1 概述 事务的传播类型isolationTransactionnal注解属性 事务方法未被Spring管理方法使用final类型修饰非public修饰的方法同一个类中的方法相互调用方法的事务传播类型不支持事务异常被内部catch,程序生吞异常数据库不支持事务未配置开启事务错…

golang锁源码【只有关键逻辑】

条件锁 type Cond struct {L Lockernotify notifyList } type notifyList struct {wait uint32 //表示当前 Wait 的最大 ticket 值notify uint32 //表示目前已唤醒的 goroutine 的 ticket 的最大值lock uintptr // key field of the mutexhead unsafe.Pointer //链表头…

simulink代码生成(六)——多级中断的配置

假如系统中存在多个中断,需要合理的配置中断的优先级与中断向量表;在代码生成中,要与中断向量表对应;中断相关的知识参照博客: DSP28335学习——中断向量表的初始化_中断向量表什么时候初始化-CSDN博客 F28335中断系…

Python pygame贪吃蛇小游戏 (200行完整代码+注释+可运行)

一、运行效果图 二、完整代码 #!/usr/bin/env python # -*- coding: utf-8 -*- # author:Wangdali time:2021年1月20日16:08:44 #python实现:贪吃蛇游戏玩法:回车开始游戏;空格暂停游戏/继续游戏;方向键/wsad控制小蛇…

Redis原理及常见问题

高性能之道 单线程模型基于内存操作epoll多路复用模型高效的数据存储结构redis的单线程指的是数据处理使用的单线程,实际上它主要包含 IO线程:处理网络消息收发主线程:处理数据读写操作,包括事务、Lua脚本等持久化线程:执行RDB或AOF时,使用持久化线程处理,避免主线程的阻…

服务器的TCP连接限制:如何优化并提高服务器的并发连接数?

🌈🌈🌈🌈🌈🌈🌈🌈 欢迎关注公众号(通过文章导读关注),发送【资料】可领取 深入理解 Redis 系列文章结合电商场景讲解 Redis 使用场景、中间件系列…

2024年人工智能领域10大预测

2023年人工智能领域如果只能筛选一个关键词的话,恐怕非“大模型”莫属。大模型的发展在过去一年中,让各行各业发生了天翻地覆的变化,有企业因大模型而新生,有企业因大模型而消亡。企业的变迁跟技术迭代息息相关,而大模…