0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

路科验证 来源:芯片学堂 作者:JKZHAN 2022-05-30 14:05 次阅读

这是一篇技术干货快文,能够快速阅读完。文章内容是关于如何从命令行获取和解析参数,包括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的值。

9898b216-dfce-11ec-ba43-dac502259ad0.png

执行仿真命令:

./simv +vcs+lic+wait +HelloWorld +NAME=ictalking +DATA1=123 +DATA2=C0FFEE +DATA3=101001011101
仿真结果如下:98e1d05e-dfce-11ec-ba43-dac502259ad0.png    

02UVM_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对象。

99a9564c-dfce-11ec-ba43-dac502259ad0.png

执行仿真命令:

./simv +vcs+lic+wait +UVM_TESTNAME=cmdline_test +cmd_data_int=123 +cmd_data_hex=AA +cmd_data_bin=1011
仿真结果如下:

99e27706-dfce-11ec-ba43-dac502259ad0.png

原文标题:SystemVerilog | UVM | 获取命令行参数的方法,这些就够用了

文章出处:【微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

审核编辑:汤梓红
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 参数
    +关注

    关注

    11

    文章

    1398

    浏览量

    31502
  • 函数
    +关注

    关注

    3

    文章

    3955

    浏览量

    61377
  • UVM
    UVM
    +关注

    关注

    0

    文章

    181

    浏览量

    18983
  • 命令行
    +关注

    关注

    0

    文章

    75

    浏览量

    10351

原文标题:SystemVerilog | UVM | 获取命令行参数的方法,这些就够用了

文章出处:【微信号:Rocker-IC,微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    怎么从命令行执行Momentum

    您好我能够从ADS中的命令行运行典型的电路仿真(使用hpeesofsim命令)。是否有类似的方法从命令行运行动量模拟?我打算:1-在GUI中设置我的模拟(进行布局,设置基板......)2。将整个
    发表于 03-08 07:19

    如何从命令行指定程序员?

    如何告诉IPE它应该从命令行使用哪一个真正的ICE?我有一个板需要4个芯片需要编程。有些是5伏部分,有些是3.3。编程站的生产将使用4个真正的冰,所以他们可以编程所有4个芯片上的每一个板一次。我正在
    发表于 09-30 06:03

    如何从命令行注入宏?

    嘿,大家好,我想出了如何从命令行构建PSoC 3.3项目。但现在我不知道如何从命令行注入宏。dMaRoRyValm=2你知道怎么做吗?设置夜间创建和使用詹金斯发布构建是非常重要的。最好的问候
    发表于 10-31 10:02

    支持命令行传递的参数吗?

    从命令行通过代码文件传递代码值的语法是什么?例如,我想这样做:在过去,我定义了一个符号列表,该列表被设置为makefile中传递的值,这些符号稍后将在CFLAGSI中用于生成-D{SYMBOL}中
    发表于 03-17 06:03

    Shell脚本命令行解析

    Shell脚本解析命令行参数——Argparse(填坑)
    发表于 04-03 11:34

    哪个工具可用于从命令行从elf文件生成srec文件?

    你好我正在使用自定义构建链,使用专有工具链,我从命令行(从我的持续集成系统)启动。我使用此工具链中的工具从链接的精灵创建一个 srec 文件。我需要验证 SREC 生成的输出,我考虑过使用不同的工具
    发表于 03-22 07:50

    如何获取其它程序的命令行参数

    开发环境:VC6 Windows XP 测试环境:WindowsXP 我们都知道,在程序里获取命令行参数很简单,WinMain函数会以参数的形式传递给我们,或者可以调用API Ge
    发表于 10-14 09:24 1次下载

    C语言入门教程-命令行参数

    命令行参数 在C中,获取用户输入的命令行参数是很方便的。程序的主函数会接受一个argv参数。有
    发表于 07-29 14:22 2481次阅读

    caxa命令行中的应用

    caxa命令行中的应用 命令行对于大多用户来说往往只是输入数据的作用,但是其中的奥妙还有很多,下面就给大家
    发表于 10-18 18:18 2166次阅读

    Shell命令行解释器简介

    Shell 是一个命令行解释器,Shell 为用户提供了与设备进行命令行交互的方式,用户通过串口、以太网、无线等方式将命令传输给具有 Shell 功能的设备,设备会解析
    的头像 发表于 08-19 17:20 2719次阅读

    Golang基于flag库实现一个命令行工具

    Golang 标准库中的 flag 库提供了解析命令行选项的能力,我们可以基于此来开发命令行工具。
    的头像 发表于 10-28 09:26 986次阅读

    Fcoder从命令行批量转换为TIFF

    从命令行批量转换为TIFF 2TIFF图像转换软件是一个专业的命令行实用程序,用于以批处理模式将办公文档和图像转换为TIFF。基于简单的命令行语法,它可以在PC、服务器上使用,也可以内置到任
    的头像 发表于 05-22 14:13 458次阅读
    Fcoder<b class='flag-5'>从命令行</b>批量转换为TIFF

    LabVIEW命令行调用exe传入的参数如何获取

    有些场景下,我们用LabVIEW开发的应用程序,需要通过命令行来调用,并向该应用程序传递参数,那么在程序中如何才能获取这些参数呢?
    发表于 10-11 09:28 1216次阅读
    LabVIEW<b class='flag-5'>命令行</b>调用exe传入的<b class='flag-5'>参数</b>如何<b class='flag-5'>获取</b>

    linux虚拟机怎么调出命令行

    在Linux虚拟机中调出命令行界面,可以通过以下步骤实现: 打开虚拟机,进入到Linux系统。 在桌面或应用菜单中找到终端或命令行图标,点击打开。 输入命令行指令,执行相应的操作。 另外,也可以通过
    的头像 发表于 11-08 11:28 1719次阅读

    idea如何输入命令行参数

    在许多软件开发和系统管理的任务中,我们经常需要向应用程序传递命令行参数命令行参数是在运行时传递给程序的值,用于指定程序的行为和配置选项。本文将详细介绍如何在不同的编程语言和操作系统中
    的头像 发表于 12-06 15:01 395次阅读