當(dāng)plusargs的數(shù)量很多時(shí),此時(shí)的命令行參數(shù)會非常多,或者相應(yīng)的仿真配置文件也會變得復(fù)雜和冗長,且容易出錯(cuò)。此時(shí)可以考慮使用json文件傳入相關(guān)的配置信息,環(huán)境中獲取對應(yīng)的配置數(shù)據(jù)。
systemverilog讀取json文件?
是的,并且已經(jīng)有了相關(guān)的開源庫JSONinSV實(shí)現(xiàn)了常用的讀取json,獲取string、int、bool類型的數(shù)據(jù)、保存json文件、修改json數(shù)據(jù)的功能,也可以解析多個(gè)object嵌套的結(jié)構(gòu),對json語法的支持很好。
這里將常用的幾個(gè)plusargs選項(xiàng)放置在json文件中,sv側(cè)解析到對應(yīng)的配置信息。json的配置信息如下:
{ "enable_3G_clk":true, "axi_vip_enable":false, "trans_num":123, "push_data":[1,2,3], "cfg_reg":[ {"addr":100, "data":1}, {"addr":200, "data":4} ] }
sv側(cè)的解析demo如下:
classjson_test; virtualfunctionvoidrun_test(); stringjson_str,keys[$]; JSONValuejv,node_value; intvalue_list[$]; jv=new(); jv.loadFromFile(json_file); //printstringjsoncontext jv.dumps(json_str,4); $display("%s",json_str); //getallkeys jv.getObjectKeys(keys); $display("allcfgoption:%p",keys); node_value=jv.getObjectMember("trans_num"); $display("trans_num:%p",node_value.getNumber); node_value=jv.getObjectMember("push_data"); getArrayIntValue(node_value,value_list); $display("push_data:%p",value_list); endfunction virtualfunctionvoidgetArrayIntValue(constrefJSONValuex_jv,outputintx_value[$]); intarray_size=x_jv.getArraySize(); for(inti=0;i
仿真后可以得到:
審核編輯:劉清
-
仿真器
+關(guān)注
關(guān)注
14文章
1037瀏覽量
85425 -
Verilog語言
+關(guān)注
關(guān)注
0文章
113瀏覽量
8556
原文標(biāo)題:換種方式管理plusargs傳入的控制參數(shù)
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
?PLC從HTTP服務(wù)端獲取JSON文件,解析數(shù)據(jù)到寄存器
LabVIEW如何調(diào)用網(wǎng)頁返回的JSON文件?
如何從SD卡中讀取JSON格式?
SystemVerilog的斷言手冊
Json如何進(jìn)行寫入與讀取詳細(xì)方法說明
什么是JSON劫持 JSON和XML的區(qū)別
分享幾個(gè)格式化輸出json文件的方法

介紹Python中常用的文件讀取方法以及應(yīng)用示例
更低內(nèi)存占用的通用Json庫-RyanJson

評論