29 UVM Command Line Processor (CLP)

2024-01-02 02:04
文章标签 processor 29 line command uvm clp

本文主要是介绍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

这篇关于29 UVM Command Line Processor (CLP)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/561049

相关文章

jenkins 插件执行shell命令时,提示“Command not found”处理方法

首先提示找不到“Command not found,可能我们第一反应是查看目标机器是否已支持该命令,不过如果相信能找到这里来的朋友估计遇到的跟我一样,其实目标机器是没有问题的通过一些远程工具执行shell命令是可以执行。奇怪的就是通过jenkinsSSH插件无法执行,经一番折腾各种搜索发现是jenkins没有加载/etc/profile导致。 【解决办法】: 需要在jenkins调用shell脚

UVM:callback机制的意义和用法

1. 作用         Callback机制在UVM验证平台,最大用处就是为了提高验证平台的可重用性。在不创建复杂的OOP层次结构前提下,针对组件中的某些行为,在其之前后之后,内置一些函数,增加或者修改UVM组件的操作,增加新的功能,从而实现一个环境多个用例。此外还可以通过Callback机制构建异常的测试用例。 2. 使用步骤         (1)在UVM组件中内嵌callback函

基于Python的机器学习系列(29):前馈神经网络

在本篇文章中,我们将学习如何使用PyTorch构建和训练一个前馈神经网络。我们将以线性回归为例,逐步了解PyTorch的各个组件及其在神经网络中的应用。这些步骤包括: 指定输入和目标:我们将定义输入特征和目标变量。数据集和数据加载器:使用PyTorch的数据集和数据加载器来管理和加载数据。nn.Linear(全连接层):创建前馈神经网络中的线性层。定义损失函数:选择合适的损失函数

编译时出现错误 -- clang: error: linker command failed with exit code 1 (use -v to see invocation)

出现这个错误的原因有多种,常见的是因为某些文件的缺失或者是文件的重复导致的。 这类错误查看的关键在于其上一行的文字。 对于文件缺少而导致错误的情况: 例如上图中的示例,其上一行文字为 ld:library not found for -lrxl,可以看出是缺失了某一文件而导致的错误,这行文字中的最后“ -lrxl ”:-l 代表着其前缀是“lib”,连着后面的 rxl,其名称为 libr

『功能项目』Unity本地数据库读取进入游戏【29】

本章项目成果展示 打开上一篇28Unity连接读取本地数据库的项目, 本章要做的事情是通过读取本地数据库登录进入游戏场景 首先创建一个脚本文件夹: 新建脚本:MySqlAccess.cs 编写脚本:MySqlAccess.cs using UnityEngine;using MySql.Data.MySqlClient;public class MySq

ON_COMMAND_RANGE 和 ON_UPDATE_COMMAND_UI_RANGE

 ON_COMMAND_RANGE 和 ON_UPDATE_COMMAND_UI_RANGE 可以影射ID连续的Toolbar/Menu ID。 ON_COMMAND_RANGE影射的消息响应函数需要一个参数UINT表明是哪一个消息, afx_msg void OnZoom(UINT nID); 而ON_UPDATE_COMMAND_UI_RANGE的消息响应函数则无此ID,与ON

on command range

 ON_COMMAND_RANGEON_COMMAND_RANGE( id1, id2, memberFxn )参数: id1一个连续范围的命令ID的起始值。id2一个连续范围的命令ID的结束值。memberFxn该命令被映射到的消息处理函数的名字。 说明:使用这个宏把一个连续范围的命令ID映射到单个命令处理函数。ID的范围从id1开始,到id2结束。用ON_COMMAND_RAN

ON_COMMAND_RANGE的用法

 今天主要介绍一下ON_COMMAND_RANGE的用法 第一次用这个方法还是刚毕业那会,那时写过一个控制程序,界面上有很多电器的控制按钮,这些按钮的响应函数基本一致,只是相应的ID值不一样,要是一一写响应函数那不累死人,于是就东找西找,找到ON_COMMAND_RANGE。 最近一个偶然机会也要用到它,三下五除二,CODE写完了, 1.在要添加的工程上添加函数afx_msg vo

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from

org.springframework.beans.factory.xml.XmlBeanDefinitionStoreException: Line 24 in XML document from class path resource [bean1.xml] is invalid; nested exception is org.xml.sax.SAXParseException; lineN

[UVM]6.component driver monitor sequencer agent scoreboard env test

1.知识点回顾 (1)component需要有parent,因为参加构成组件,所以需要(继承); (2)object与component之间间隔report_object。 2.组件家族 (1)构建寄存器模型 :uvm_reg_predictor;激励器:driver/random_stimulus/sequencer_base/sequencer;监测器:monitor;