如何从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 不同。你能告诉我我错过了什么吗?
您发布的代码不会编译。放入更多打印语句或在 specview 中设置断点并逐步执行代码。您知道您正在打印输出的哪个测试阶段吗?如果您想在程序上设置 data_sys(而不是让 Specman 生成它),您应该指定不生成修饰符“!”。
[...]
!data_sys : list of uint;
[...]
请提供一个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 {...};