篇6-禁止属性not,蕴含操作符(交叠蕴含与非交叠蕴含)


1.禁止属性

当期望属性为假时,可以采用关键词not,用来表示属性永远不为真.

2.蕴含/implication

(1) 蕴含等效于if-then结构,蕴含左边的叫做"先行算子",右边叫做"后续算子";

(2) 先行算子是约束条件;当先行算子成功时,后续算子才会被计算;如果先行算子不成功,那么整个属性就默认地认为成功,这叫做"空成功";

(3) 蕴含结构只能被用在属性定义中,不能在序列中使用;

(4) 补充:为什么使用蕴含?

(1)上图中p7在每一个时钟上升沿寻找序列的有效开始,即在每个时钟上升沿检查信号a是否为高;如果a在给定的任何时钟上升沿不为高,检验器将产生一个错误信息;但这并不是一个有效的错误信息,因为并不关心只检查信号a的电平; 这个错误表明在这个时钟周期没有得到检验器的有效起始点;

(2)为了避免上图中写法引入的大量错误信息,属性需要被定义为在检查的起始点无效时忽略这次检查,这时需要采用蕴含;

2.1交叠蕴含/overlapped implication/|->

交叠蕴含用符号“|->”表示。如果先行算子匹配,在同一个时钟周期计算后续算子表达式。

2.2非交叠蕴含/non-overlapped implication/|=>

非交叠蕴含用符号“|=>”表示。如果先行算子匹配,在下一个时钟周期计算后续算子表达式。后续算子表达式的计算总是有一个时钟周期的延迟。

3.蕴含的扩展

3.1 后续算子带固定延迟的蕴含

3.2 使用序列作为先行算子的蕴含

下图中,1s,2s,3s表示属性的有效开始;

3.3 嵌套的蕴含

3.4 在蕴含中使用if/else