systemverilog读取json文件?

电子说

1.3w人已加入

描述

Verilog语言

当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如下:

 

class json_test;
  virtual function void run_test();
    string json_str,keys[$];
    JSONValue jv,node_value;
    int value_list[$];

    jv = new();
    jv.loadFromFile(json_file);

    //print string json context
    jv.dumps(json_str,4);
    $display("%s",json_str);

    // get all keys
    jv.getObjectKeys (keys);
    $display("all cfg option: %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
  virtual function void getArrayIntValue(const ref JSONValue x_jv, output int x_value[$]);
    int array_size = x_jv.getArraySize();
    for(int i=0;i

 

仿真后可以得到:

Verilog语言






审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分