如何在specman中声明固定长度的列表?

时间:2020-03-05 18:41:41  来源:igfitidea点击:

在E(规范人)中,我想声明为列表的变量,并想固定它们的长度。

对于结构成员很容易做到:

thread[2] : list of thread_t;

而对于函数中的"常规"变量,以上操作无效,我必须执行以下操作:

var warned : list of bool;
gen warned keeping {
    it.size() == 5;
};

有没有更好的方法来声明固定大小的列表?

解决方案

回答

我对specman一无所知,但是固定大小的列表是一个数组,因此可能会将我们指向某个地方。

回答

像我们这样的硬保留只会在初始化时固定大小,但是以后仍可以添加或者删除元素,我们是否要防止这种情况发生?我能想到的确保保证以后不会添加或者删除元素的唯一方法是发出大小为!=预定量的同步事件:

event list_size_changed is true (wanted.size() != 5) @clk;

我唯一能提供的是一些语法糖,可以让我们保持精力充沛:

var warned : list of bool;
keep warned.size() == 5;