如何从命令行获取和解析参数

这是一篇技术干货快文,能够快速阅读完。文章内容是关于如何从命令行获取和解析参数,包括systemverilog本身支持的系统函数和uvm提供的函数封装,并给出示例代码和仿真结果。
01 sv系统函数
通过命令行来传递参数在实际项目中算是常规操作,比如通过命令行参数来指定testbench的配置信息等等。在systemverilog lrm规范里,命令行提供的仿真参数要求使用加号(+)作为引导,这部分参数可以被验证环境中的sv代码通过系统函数访问到。由于是额外增加的,这些参数也就被称之为plusargs。
访问plugargs的系统函数有$test$plusagrs(arg_string)和$value$plusargs(arg_string, target_var)。这两个系统函数都会根据用户指定的字符串arg_string,去检索plusargs列表。如果找到了,则系统函数返回值1;如果没有找到,返回值0。
其中$test$plusargs(arg_string)可以被用于判断命令行是否带了arg_string参数,以此来作为验证环境的配置开关;$value$plusargs(arg_string, target_var)则是在$test$plusargs的基础上,增加了对参数arg_string的值的解析:如果匹配到了arg_string,系统函数会将其值赋给target_var;如果没有找到,则不修改target_var的值。
执行仿真命令:
  ./simv +vcs+lic+wait +helloworld +name=ictalking +data1=123 +data2=c0ffee +data3=101001011101 仿真结果如下:     02 uvm_cmdline_processor
uvm是个非常喜欢搞封装的类库。uvm中有个类叫uvm_cmdline_processor,该类继承自uvm_report_object,再往上就到uvm_object了。uvm_cmdline_processor提供的底层函数接口,说白了跟$test$plusargs和$value$plusargs没有什么大的区别,不过其中有匹配功能或返回参数列表的函数,对于uvm_root解析uvm配置相关的参数还是很有帮助的。
uvm_cmdline_processor全局单一例化,并提供了get_inst()静态方法用来获取对象句柄。uvm默认在初始化的时候,会构造uvm_cmdline_processor的全局对象,叫uvm_cmdline_proc。不过在实际使用中,我们还是可以按照习惯,先声明一个uvm_cmdline_processor句柄,然后通过get_inst()函数来指向uvm_cmdline_processor对象。
执行仿真命令:
  ./simv +vcs+lic+wait +uvm_testname=cmdline_test +cmd_data_int=123 +cmd_data_hex=aa +cmd_data_bin=1011 仿真结果如下:
原文标题:systemverilog | uvm | 获取命令行参数的方法,这些就够用了
文章出处:【微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。


双驱破碎机轴磨损的修复工艺
Facebook正在研究接口,3到5年内投放市场
北京字节跳动科技公司申请“抖音支付”商标
二极管的特性是具有什么特性
CI24R1超低成本高性能2.4GHzGFSK无线收发芯片
如何从命令行获取和解析参数
诺基亚C1 Plus正式发布:1GB内存
台湾AI发展可与硬件产业链接合
奥比中光3D视觉感知整体技术助力千行百业3D数智化升级
中国电子展(CEF)与中国国际小电机展(SMTCE)两大产业平台携手推动智能网联新产品不断涌现
平板电脑越趋高端化 怎样的平板电脑才叫好用?盘点平板电脑的痛点
MACsec-先进的车载网络安全解决方案
优艾智合:一体化智慧物流赋能锂电智造
众多车企加码移动充电机器人,未来移动充电机器人前景何在
亚马逊推出无线摄像头,用于快速部署深度学习
多比物联完整业务生态,系统性解决问题
处理器验证方法之系统漏洞集群
DSP篇:专用处理器比较分析(2022)
云计算助力智能化校园提升,预计到2025年市场规模将达52.75亿元
币安推出的杠杆交易与期货合约有什么区别