1

如何从Specman中的方法调用返回数组?例如

method a : list of uint is { 
   var data: list of uint;
   .....
   result = data;

};

extend sys {
 var data_sys: list of uint;
 run() is also {
  data_sys = a();
 };
};

我的打印输出显示某些元素与数组数据和 data_sys 不同。你能告诉我我错过了什么吗?

4

2 回答 2

1

您发布的代码不会编译。放入更多打印语句或在 specview 中设置断点并逐步执行代码。您知道您正在打印输出的哪个测试阶段吗?如果您想在程序上设置 data_sys(而不是让 Specman 生成它),您应该指定不生成修饰符“!”。

[...]
!data_sys : list of uint;
[...]
于 2009-05-19T02:35:05.067 回答
1

请提供一个sscce

没有它,这个非常基本的例子可能会:

extend sys {
  m() : list of uint is {
    print result.size(); // result.size() = 0
  };

  run() is also {
    var m := m();
  };
};

方法可以返回一个数组,该数组是默认分配给你的。它是由指针返回的,所以要注意。

作为一个经验法则,在计算它们时尽量避免返回列表的方法。尝试将列表作为参数传递,以传达其动态性质,除非该方法是创建方法或 getter:

collect_packets(packets : list of packet) is {...};
get_collected_packets() : list of packet is {...};
于 2010-03-15T15:04:01.777 回答