当plusargs的数量很多时,此时的命令行参数会非常多,或者相应的仿真配置文件也会变得复杂和冗长,且容易出错。此时可以考虑使用json文件传入相关的配置信息,环境中获取对应的配置数据。
systemverilog读取json文件?
是的,并且已经有了相关的开源库JSONinSV实现了常用的读取json,获取string、int、bool类型的数据、保存json文件、修改json数据的功能,也可以解析多个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文章
1042浏览量
85531 -
Verilog语言
+关注
关注
0文章
113浏览量
8577
原文标题:换种方式管理plusargs传入的控制参数
文章出处:【微信号:处芯积律,微信公众号:处芯积律】欢迎添加关注!文章转载请注明出处。
发布评论请先 登录
?PLC从HTTP服务端获取JSON文件,解析数据到寄存器
LabVIEW如何调用网页返回的JSON文件?
如何从SD卡中读取JSON格式?
SystemVerilog的断言手册
Json如何进行写入与读取详细方法说明
什么是JSON劫持 JSON和XML的区别
介绍Python中常用的文件读取方法以及应用示例
更低内存占用的通用Json库-RyanJson

评论