assertion 作用
(1) 检测一个条件有没有发生;(2)检测一系列动作有没有发生。可以直接介入硬件内部信号,bind到硬件。
1. 当拍assert,“ |-> ”。
上升沿
always @(posedge clock)
a_example1: assert(A && !B);
或者
property example1;
@(posedge clock) A |-> !B;
endproperty
a_example1: assert property(example1);
或者
a_example1: assert property(@(posedge clock) A |-> !B);
下降沿
always @(negedge clock)
a_example2: assert(A && !B);
或者
property example2;
@(negedge clock) A |-> !B;
endproperty
a_example2: assert property(example2);
或者
a_example2: assert property(@(negedge clock) A |-> !B);
变化沿
a_example2: assert property(@(A or B) C || D);
2. 下一拍assert,“ |=> ”。
always @(posedge clock)
a_example1: assert(A |=> B);
或者
property example1;
@(posedge clock) A |=> B;
endproperty
assert property(example1);
或者
a_example1: assert property(@(posedge clock) A |=> !B);
3. 推后几拍,##clcyes。
a_example1: assert property(@(posedge clock) A ##1 B ##2 C);//this will check the condition every cycle, the expression must be true every cycle.
a_example2: assert property(@(posedge clock) A |-> B ##2 C);//this will check the condition every cycle, the expression must be true only when A is true at posedge clock.
a_example3: assert property(@(posedge clock) A |=>