UVM命令行传参uvm_cmdline_processor_硅码农的博客-程序员宅基地

技术标签: UVM 命令行传参类 uvm_cmdline_processor  UVM文章  

在UVM中环境中,在我们执行simulation的过程中,会在命令行添加一些simulation args。比如
./simv –l vcs_run.log +UVM_TESTNAME=my_test

在UVM世界中,有一个class专门来处理这些参数。这个类就是uvm_cmdline_processor

类的继承关系是:
uvm_object->uvm_report_object->uvm_cmdline_processor,这个类与factory相似,均是single模式的类,静态方法get_inst拿到唯一的对象。比如uvm_cmdline_processor cpl= uvm_cmdline_processor::get_inst();

在这个类中有3个重要的变量(队列)

1:string
m_argv[$] //存放所有cmdline参数,m_argv[0]=./simv

2:string
m_plus_argv[$]//存放所有cmdline参数中以+为开头的参数

3:string
m_uvm_argv[$]//存放所有cmdline参数中以+UVM*,+uvm或者-UVM*,-uvm为开头的参数

比如./simv –l vcs_run.log +UVM_TESTNAME=my_test

m_argv[$]有4个参数

m_plus_argv[$]有1个参数

m_uvm_argv[$]有1个参数

这个类中封装了相应的方法来获取上述3个队列的元素,(由于上述3个队列的protected属性)

get_args(output string args[$])

get_plusargs(output string plusargs[$])

get_uvm_args(output string uvm_args[$])

这个类中还有方法

get_tool_name//获取仿真器的名字

get_tool_version//获取仿真器的版本

方法:

get_arg_matches(string match,ref string args[$])//获取m_argv与string
match匹配的参数个数

get_arg_value(string match,ref string args)// 获取m_argv与string
match 最先匹配的参数个数

get_arg_values(string match,ref string args)// 获取m_argv与string
match 所有匹配的参数个数

其实uvm_cmdline_procesor只是一种实现方式,用户也可以直接使用SV自带的方法,比如valuepluson等命令行传参的方式,但是基于复用性以及集成性的角度,还是使用已经封装好的uvm_cmdline_processor来实现命令行参数的传递,这样也便于命令行传参的集中管理。

uvm_cmdline_processor的架构图
在这里插入图片描述

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/liuwei848/article/details/103121244

智能推荐

CGI、FastCGI、WSGI、uWSGI、uwsgi关系_给你骨质唱疏松的博客-程序员宅基地_cgi fastcig wsgi uwsgi uwsgi

引入CGI、FastCGI、WSGI、uWSGI、uwsgi是什么 ?之间的关系?一.CGI通用网关接口(Common Gateway Interface/CGI)是外部应用程序与Web服务器之间的接口标准,用来规定一个程序该如何与web服务器程序之间通信CGI程序可以用任何脚本语言或者是完全独立编程语言实现,只要这个语言可以在这个系统上运行用来规范web服务器传输到php解释器中的数据类型以及数据格式,包括URL、查询字符串、POST数据、HTTP header等,也就是为了保证web se

“七人分粥”- 介绍新书《软件过程管理》_softstars的博客-程序员宅基地_软件过程管理 朱少民 电子版

近十年来,软件过程越来越成为人们关注的焦点,正在打破过去人们已经习惯的面向任务的思维方式,逐渐加强面向过程的思考,软件开发和维护的运作以过程为中心的方式在进行。正如软件工程领域领袖级人物、能力成熟度模型(CMM)奠基人瓦茨·汉弗菜(Watts Humphrey)所说,要解决软件危机,首要的任务是把软件活动视作可控的、可度量的和可改进的过程。其实,通过下面这个“七人分粥”寓意的小故事,就很清楚地

初识vue系列一_ITzhongzi的博客-程序员宅基地

vuejsjquery能做什么,什么都能做angular能做什么,什么都能做vue什么都能做!谁更适合做什么!jquery适合做特效,或者是面向大众的网站!angular,vue,适合做页面数据比较多适合做管理系统,后台系统! () 特定人群去用的!提前准备一个给大家看(管理系统)1.1. 渲染html字符串v-html1.2. 属性绑定v-bind

C语言:求1到100之间的所有素数,使用Prime函数,并设定每行输出5个素数_计算机考研大本营的博客-程序员宅基地_prime函数判断素数并输出

#include <stdio.h>#include <math.h>int prime(int n){ int k,i; k=sqrt(n); for(i=2;i<=k;i++){ if(n%i==0){ return 0; } } return 1;}int main(){ int m,i,a=0; int k; printf("1到100之间所有的素数为:\n"); for(m=1;m<=100.

[ACM] poj 1700 Crossing River (经典过河问题)_同学少年的博客-程序员宅基地

Crossing RiverTime Limit: 1000MS Memory Limit: 10000KTotal Submissions: 10212 Accepted: 3855DescriptionA group of N people wishes to go across a river with only one

Linux常用命令_maove的博客-程序员宅基地_linux start命令

1、文件操作cd dirName 进入某个目录cd / 进入到根目录cd … 回退到上一级目录ls 可以查看当前文件夹下面的所有文件ls -a 列出目录所有文件,包含以.开始的隐藏文件ls -l 除了文件名之外,还将文件的权限、所有者、所属组、文件大小等信息详细列出来eg: 执行ls -l结果如下:以红色圈出来的文件信息为例:第一列:第一个字母代表了文件的类型,有如下文件类型:文件类型-普通文件,包括纯文本文件、二进制文件、各种压缩文件等d目录

随便推点

nohup命令实现退出终端后程序继续后台运行_nsj820的博客-程序员宅基地_使用subprocess模块执行完nohup后继续下面的程序

<br />Unix/Linux下一般想让某个程序在后台运行,很多都是使用&在程序结尾来让程序自动运行;但如果要想在退出终端后,程序依然还在后台运行,则要用nohup与&组合来实现。<br />nohup 命令<br />用途:不挂断地运行命令<br />语法:nohup Command [ Arg ... ] [& ]<br />描述:nohup 命令运行由 Command参数和任何相关的Arg参数指定的命令,忽略所有挂断(SIGHUP)信号。在注销后使用 nohup 命令运行后台中的程序:要运行后台中的

生成报表(转)_weixin_30340617的博客-程序员宅基地

使用JasperReport+iReport进行WEB开发    一、JasperReport和iReport简介:   1、JasperReport简介   JasperReport是一个强大、灵活的报表生成工具,是开放源代码组织sf.net中的...

搜狗面试注意事项_还是很孤独很沉默的博客-程序员宅基地_去搜狗面试审核

前一阵总结的,暂且放到这里吧。。。算法网络编程: http协议和tcp协议也得看啊。。。多线程比较重视对倒排索引的理解, 大数据量如何建立倒排索引还有个就是对地图中的特征点如何获取数据结构类(有填空题,选择题,一共10题)1.给一种自定义的二叉树,求有2011个节点的二叉树的最小,最大高度2.A-Z表示1-26,AA,AB分别表示

fabric1.2.1新特性-访问控制列表_songbin830的博客-程序员宅基地_fabric查询列表list

访问控制列表 Access Control Lists(ACL)什么是访问控制列表?fabric 使用访问控制列表来通过将策略(在给定一组身份的情况下指定评估为“真”或“假”的规则)与资源关联来管理对资源的访问。在这篇文档中,我们将讨论如何格式化访问控制列表以及如何覆盖默认值。在做这些之前,必须先了解一些资源和策略的相关知识。资源用过通过定位用户链码、系统链码、或者事件...

System.DllNotFoundException Unable to load DLL SQLite.Interop.dll解决办法_songtzu的博客-程序员宅基地

最近在写一个c#的sdk,用到了sqlite for .net!写完之后,打包给别人调用,结果在两台客户机上面死活不可用。然后开始查原因,最后定位到问题:System.DllNotFoundException Unable to load DLL SQLite.Interop.dll在不能正常运行的客户机上面,尝试执行sqlite的官方例子,得到同样的结果,排除我代码的问题。猜

推荐文章

热门文章

相关标签