Hardware Reference
In-Depth Information
10
20
30
40
50
60
70
80
90
100
clk
retry
bad
a
b
c
Fig. 13.13
Waveform for
a_abort_subproperties
Exercises
13.1.
Explain why assertions
a1
and
a2
below have the same passing and failing
evaluation behavior:
a1:
assert property
(@(
posedge
clk)
sync_accept_on
(a)
b[
*
2] |=> c
);
a2:
assert property
(@(
posedge
clk)
!a
throughout
b[
*
2] |=> a || c
);
Rewrite the following coverage assertion without using
sync_reject_on
:
c1:
cover property
(@(
posedge
clk)
sync_reject_on
(a)
b[
*
2] ##1 c
);
13.2.
In the module below, determine for each occurrence of a nested disable
condition whether or not the nesting is legal. Also, for each concurrent assertion that
is not involved with an illegal nested disable clause, identify the disable condition
that governs it, if any.
module
#(
parameter
BAD) m (
1
logic
a, b, c, clk, reset, retry, bad
2
);
3
default clocking
PCLK @(
posedge
clk);
endclocking
4
default disable iff
reset;
5
property
p;
disable iff
(retry) b |=> c;
endproperty
6
a0:
assert property
(a |=> b);
7
a1:
assert property
(
disable iff
(retry) a |=> b);
8
a2:
assert property
(p);
9
a3:
assert property
(a |=> p);
10
generate if
(BAD)
11
Search WWH ::
Custom Search