RM新时代网站-首页

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

如何從命令行獲取和解析參數(shù)

路科驗(yàn)證 ? 來源:芯片學(xué)堂 ? 作者:JKZHAN ? 2022-05-30 14:05 ? 次閱讀

這是一篇技術(shù)干貨快文,能夠快速閱讀完。文章內(nèi)容是關(guān)于如何從命令行獲取和解析參數(shù),包括SystemVerilog本身支持的系統(tǒng)函數(shù)和UVM提供的函數(shù)封裝,并給出示例代碼和仿真結(jié)果。

01 SV系統(tǒng)函數(shù)

通過命令行來傳遞參數(shù)在實(shí)際項(xiàng)目中算是常規(guī)操作,比如通過命令行參數(shù)來指定Testbench的配置信息等等。在SystemVerilog LRM規(guī)范里,命令行提供的仿真參數(shù)要求使用加號(hào)(+)作為引導(dǎo),這部分參數(shù)可以被驗(yàn)證環(huán)境中的SV代碼通過系統(tǒng)函數(shù)訪問到。由于是額外增加的,這些參數(shù)也就被稱之為plusargs。

訪問plugargs的系統(tǒng)函數(shù)有$test$plusagrs(arg_string)$value$plusargs(arg_string, target_var)。這兩個(gè)系統(tǒng)函數(shù)都會(huì)根據(jù)用戶指定的字符串a(chǎn)rg_string,去檢索plusargs列表。如果找到了,則系統(tǒng)函數(shù)返回值1;如果沒有找到,返回值0。

其中$test$plusargs(arg_string)可以被用于判斷命令行是否帶了arg_string參數(shù),以此來作為驗(yàn)證環(huán)境的配置開關(guān);$value$plusargs(arg_string, target_var)則是在$test$plusargs的基礎(chǔ)上,增加了對(duì)參數(shù)arg_string的值的解析:如果匹配到了arg_string,系統(tǒng)函數(shù)會(huì)將其值賦給target_var;如果沒有找到,則不修改target_var的值。

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

執(zhí)行仿真命令:

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

02UVM_CMDLINE_PROCESSOR

UVM是個(gè)非常喜歡搞封裝的類庫。UVM中有個(gè)類叫uvm_cmdline_processor,該類繼承自u(píng)vm_report_object,再往上就到uvm_object了。uvm_cmdline_processor提供的底層函數(shù)接口,說白了跟$test$plusargs和$value$plusargs沒有什么大的區(qū)別,不過其中有匹配功能或返回參數(shù)列表的函數(shù),對(duì)于uvm_root解析UVM配置相關(guān)的參數(shù)還是很有幫助的。

uvm_cmdline_processor全局單一例化,并提供了get_inst()靜態(tài)方法用來獲取對(duì)象句柄。UVM默認(rèn)在初始化的時(shí)候,會(huì)構(gòu)造uvm_cmdline_processor的全局對(duì)象,叫uvm_cmdline_proc。不過在實(shí)際使用中,我們還是可以按照習(xí)慣,先聲明一個(gè)uvm_cmdline_processor句柄,然后通過get_inst()函數(shù)來指向uvm_cmdline_processor對(duì)象。

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

執(zhí)行仿真命令:

./simv +vcs+lic+wait +UVM_TESTNAME=cmdline_test +cmd_data_int=123 +cmd_data_hex=AA +cmd_data_bin=1011
仿真結(jié)果如下:

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

原文標(biāo)題:SystemVerilog | UVM | 獲取命令行參數(shù)的方法,這些就夠用了

文章出處:【微信公眾號(hào):路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:湯梓紅
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 參數(shù)
    +關(guān)注

    關(guān)注

    11

    文章

    1829

    瀏覽量

    32195
  • 函數(shù)
    +關(guān)注

    關(guān)注

    3

    文章

    4327

    瀏覽量

    62569
  • UVM
    UVM
    +關(guān)注

    關(guān)注

    0

    文章

    182

    瀏覽量

    19167
  • 命令行
    +關(guān)注

    關(guān)注

    0

    文章

    77

    瀏覽量

    10385

原文標(biāo)題:SystemVerilog | UVM | 獲取命令行參數(shù)的方法,這些就夠用了

文章出處:【微信號(hào):Rocker-IC,微信公眾號(hào):路科驗(yàn)證】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    怎么從命令行執(zhí)行Momentum

    您好我能夠從ADS中的命令行運(yùn)行典型的電路仿真(使用hpeesofsim命令)。是否有類似的方法從命令行運(yùn)行動(dòng)量模擬?我打算:1-在GUI中設(shè)置我的模擬(進(jìn)行布局,設(shè)置基板......)2。將整個(gè)
    發(fā)表于 03-08 07:19

    如何從命令行指定程序員?

    如何告訴IPE它應(yīng)該從命令行使用哪一個(gè)真正的ICE?我有一個(gè)板需要4個(gè)芯片需要編程。有些是5伏部分,有些是3.3。編程站的生產(chǎn)將使用4個(gè)真正的冰,所以他們可以編程所有4個(gè)芯片上的每一個(gè)板一次。我正在
    發(fā)表于 09-30 06:03

    如何從命令行注入宏?

    嘿,大家好,我想出了如何從命令行構(gòu)建PSoC 3.3項(xiàng)目。但現(xiàn)在我不知道如何從命令行注入宏。dMaRoRyValm=2你知道怎么做嗎?設(shè)置夜間創(chuàng)建和使用詹金斯發(fā)布構(gòu)建是非常重要的。最好的問候
    發(fā)表于 10-31 10:02

    支持命令行傳遞的參數(shù)嗎?

    從命令行通過代碼文件傳遞代碼值的語法是什么?例如,我想這樣做:在過去,我定義了一個(gè)符號(hào)列表,該列表被設(shè)置為makefile中傳遞的值,這些符號(hào)稍后將在CFLAGSI中用于生成-D{SYMBOL}中
    發(fā)表于 03-17 06:03

    Shell腳本命令行解析

    Shell腳本解析命令行參數(shù)——Argparse(填坑)
    發(fā)表于 04-03 11:34

    如何獲取其它程序的命令行參數(shù)

    開發(fā)環(huán)境:VC6 Windows XP 測(cè)試環(huán)境:WindowsXP 我們都知道,在程序里獲取命令行參數(shù)很簡(jiǎn)單,WinMain函數(shù)會(huì)以參數(shù)的形式傳遞給我們,或者可以調(diào)用API Ge
    發(fā)表于 10-14 09:24 ?1次下載

    C語言入門教程-命令行參數(shù)

    命令行參數(shù) 在C中,獲取用戶輸入的命令行參數(shù)是很方便的。程序的主函數(shù)會(huì)接受一個(gè)argv參數(shù)。有
    發(fā)表于 07-29 14:22 ?2610次閱讀

    caxa命令行中的應(yīng)用

    caxa命令行中的應(yīng)用 命令行對(duì)于大多用戶來說往往只是輸入數(shù)據(jù)的作用,但是其中的奧妙還有很多,下面就給大家
    發(fā)表于 10-18 18:18 ?2294次閱讀

    CMD的命令行高級(jí)教程

    CMD的命令行高級(jí)教程
    發(fā)表于 10-24 08:31 ?30次下載
    CMD的<b class='flag-5'>命令行</b>高級(jí)教程

    自己動(dòng)手實(shí)現(xiàn)命令行解析

    一、介紹嵌入式里面經(jīng)常會(huì)自己做命令行,這里分享一個(gè)命令解析器代碼實(shí)現(xiàn)二、代碼實(shí)現(xiàn)mycmd.c
    發(fā)表于 12-22 18:51 ?13次下載
    自己動(dòng)手實(shí)現(xiàn)<b class='flag-5'>命令行</b><b class='flag-5'>解析</b>器

    Shell命令行解釋器簡(jiǎn)介

    Shell 是一個(gè)命令行解釋器,Shell 為用戶提供了與設(shè)備進(jìn)行命令行交互的方式,用戶通過串口、以太網(wǎng)、無線等方式將命令傳輸給具有 Shell 功能的設(shè)備,設(shè)備會(huì)解析
    的頭像 發(fā)表于 08-19 17:20 ?3214次閱讀

    Golang基于flag庫實(shí)現(xiàn)一個(gè)命令行工具

    Golang 標(biāo)準(zhǔn)庫中的 flag 庫提供了解析命令行選項(xiàng)的能力,我們可以基于此來開發(fā)命令行工具。
    的頭像 發(fā)表于 10-28 09:26 ?1290次閱讀

    Fcoder從命令行批量轉(zhuǎn)換為TIFF

    從命令行批量轉(zhuǎn)換為TIFF 2TIFF圖像轉(zhuǎn)換軟件是一個(gè)專業(yè)的命令行實(shí)用程序,用于以批處理模式將辦公文檔和圖像轉(zhuǎn)換為TIFF?;诤?jiǎn)單的命令行語法,它可以在PC、服務(wù)器上使用,也可以內(nèi)置到任
    的頭像 發(fā)表于 05-22 14:13 ?798次閱讀
    Fcoder<b class='flag-5'>從命令行</b>批量轉(zhuǎn)換為TIFF

    LabVIEW命令行調(diào)用exe傳入的參數(shù)如何獲取

    有些場(chǎng)景下,我們用LabVIEW開發(fā)的應(yīng)用程序,需要通過命令行來調(diào)用,并向該應(yīng)用程序傳遞參數(shù),那么在程序中如何才能獲取這些參數(shù)呢?
    發(fā)表于 10-11 09:28 ?2459次閱讀
    LabVIEW<b class='flag-5'>命令行</b>調(diào)用exe傳入的<b class='flag-5'>參數(shù)</b>如何<b class='flag-5'>獲取</b>

    idea如何輸入命令行參數(shù)

    在許多軟件開發(fā)和系統(tǒng)管理的任務(wù)中,我們經(jīng)常需要向應(yīng)用程序傳遞命令行參數(shù)命令行參數(shù)是在運(yùn)行時(shí)傳遞給程序的值,用于指定程序的行為和配置選項(xiàng)。本文將詳細(xì)介紹如何在不同的編程語言和操作系統(tǒng)中
    的頭像 發(fā)表于 12-06 15:01 ?1142次閱讀
    RM新时代网站-首页