【问题标题】:System Verilog to Specman E系统 Verilog 到 Specman E
【发布时间】:2019-07-30 04:31:11
【问题描述】:

在 Specman E 中,$readmemh(file,array) 和 System verilog 中类似的系统任务和函数的等效语法是什么?

我正在将现有的 System verilog 代码转换为 Specman E,我已经转换并实现了大部分概念,除了下面的少数系统方法。请帮助我在 Specman E 中实现下面的方法。

$readmemh(file_s,data_2d_i);//For converting SV code into Specman E

【问题讨论】:

    标签: system-verilog specman system-verilog-dpi


    【解决方案1】:

    在 vr_ad 包中有一个等效的方法。假设您有一个名为 data_2d_i 的 vr_ad_mem 对象,您可以例如打电话

    data_2d_i.readmemh(file_s,0,1000,0,1000);
    

    从该文件中读取地址 0..1000 到内存中。

    例子:

    import vr_ad/e/vr_ad_top;
    extend sys {
       mem: vr_ad_mem;
       keep mem.addressing_width_in_bytes == 1;
       keep mem.size == 1000;
    
       run() is also {
          var data_2d_l: list of byte;
          -- read first 16 bytes of mem-file and store the result in a list
          mem.readmemh("mem.txt", 0, 15, 0, 15);
          data_2d_l = mem.fetch(0, 16);
          print data_2d_l;
       };
    };
    

    【讨论】:

    • 感谢您的回答。供您参考,“data_2d_i”不是结构,而是数组。我尝试了您的建议,但出现编译错误,“data_2d_i”不是结构。请您详细说明如何实现它或通过示例提出其他方式。
    • @SreejinTJ 在 e 中没有数组。也许你的意思是一个列表?你是怎么申报的?
    • 是的,请原谅我是 E Lang 的新手。它是一个列表,我已将其声明为“var data_2d_i : list of int”
    • @Thorsten 。谢谢你的例子。我现在可以成功转换它了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多