设置成员操作符--inside

发布时间 2023-11-10 11:38:28作者: hc_zheng

 

设置成员操作符–inside

SystemVerilog增加了一个检测是否集合中–员的操作符,这个操作符的关键字是inside。

logic [2:0] a;
if(a inside{3'b001,3'b010,3'b100})
//等价if((a==3'b001)||(a==3'b010)||(a==3'b100))
...

使用inside操作符可以方便的比较一个数值和多个可能值之间的关系。
用inside操作符,需要和第一个值进行比较的数值集合可以是其他信号。

if(data inside{bus1,bus2,bus3,bus4})

数值集合也可以是一个数组。

int d_array[0:1023];
if(13 inside d_array)
...

inside操作符可以使用Z或X(X还可以用?表示)来表示无关条件。

logic [2:0] a;
if(a inside{3'b1?1})
...
//如果a含有3'b101、3'b111、3'b1x1、3'b1z1值结果都为真。

nside操作符合casex语句看上去很类似,但是两者有两个重要的区别。首先,inside操作符可以和if判断和case语句一块使用。其次,casex语句将操作符两边的Z和X都当作无关位,而inside只把inside关键字之后(表达式右边)一系列表达式中的Z和X值当作无关位,而在关键字inside前的第一个操作数中的位不视为无关位。