當plusargs的數(shù)量很多時,此時的命令行參數(shù)會非常多,或者相應的仿真配置文件也會變得復雜和冗長,且容易出錯。此時可以考慮使用json文件傳入相關的配置信息,環(huán)境中獲取對應的配置數(shù)據(jù)。
systemverilog讀取json文件?
是的,并且已經有了相關的開源庫JSONinSV實現(xiàn)了常用的讀取json,獲取string、int、bool類型的數(shù)據(jù)、保存json文件、修改json數(shù)據(jù)的功能,也可以解析多個object嵌套的結構,對json語法的支持很好。
這里將常用的幾個plusargs選項放置在json文件中,sv側解析到對應的配置信息。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側的解析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
仿真后可以得到:
審核編輯:劉清
-
仿真器
+關注
關注
14文章
1019瀏覽量
83962 -
Verilog語言
+關注
關注
0文章
113瀏覽量
8310
原文標題:換種方式管理plusargs傳入的控制參數(shù)
文章出處:【微信號:處芯積律,微信公眾號:處芯積律】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
?PLC從HTTP服務端獲取JSON文件,解析數(shù)據(jù)到寄存器
LabVIEW如何調用網(wǎng)頁返回的JSON文件?
如何從SD卡中讀取JSON格式?
Json如何進行寫入與讀取詳細方法說明
什么是JSON劫持 JSON和XML的區(qū)別
介紹Python中常用的文件讀取方法以及應用示例
更低內存占用的通用Json庫-RyanJson
![更低內存占用的通用<b class='flag-5'>Json</b>庫-RyanJson](https://file1.elecfans.com/web2/M00/96/D3/wKgaomTnIWaAQGsHAAEPiunHcfM160.jpg)
評論