Specman宏使用int_range_list对象设置减法

时间:2020-03-06 14:33:44  来源:igfitidea点击:

我使用一堆集合来生成受限的随机流量,但是我希望能够调用Specman宏,该宏使用以下语法来计算集合的补数:

COMPLEMENT begin 
   domain=[0..10,24..30],
   complementing_set=[2..3,27..30] 
end

并产生:

[0..1,4..10,24..26]

每当我需要集合的补码时,我都会使用完全填充的列表(例如{0; 1; 2; 3 ....})然后删除元素,而不是使用Specman内置的int_range_list对象。而且我还在运行时而不是编译时进行了很多这样的集合计算。

解决方案

我们可以尝试以下方法:

var domain: list of int = {0..10, 24..30}; 
var complementing_set: list of int = {2..3, 27..30};
var complement: list of int = domain.all(it in complementing set);

all伪方法生成父列表中所有元素的父列表的子列表,括号中的条件适用于该子列表。