Hardware Reference
In-Depth Information
"\nonly 1(level 0), 2(level 2), 3(both)",
"or 0 (disabled) are allowed");
if (usage_kind != ASSERT || usage_kind != ASSUME)
$warning("No assert or assume selected");
if (synthesis) begin : SYNTH
let check_onehot0 (sig, reset) =
((!|reset_n) || $onehot0(sig));
let cover_onehot0 (sig, reset) =
((|reset) && $onehot0(sig));
end : SYNTH
else begin : NO_SYNTH
let check_onehot0 (sig, reset) =
((|reset === 0) || $onehot0(sig) && !$isunknown(reset));
let cover_onehot0 (sig, reset) =
((|reset === 1) && $onehot0(sig));
end : NO_SYNTH
'ifdef ASSERT_ON
if (usage_kind == ASSERT) begin : ASSERT
Assert_onehot0:
assert final (check_onehot0(sig, reset))
else $error(msg);
end : ASSERT
else if (usage_kind == ASSUME) begin : ASSUME
Assume_onehot0:
assume final (check_onehot0(sig, reset))
else $error(msg);
end : ASSUME
'endif
'ifdef COVER_ON
if (cover_level & 1) begin : COVER_L1
Cover_onehot0_1:
cover final (cover_onehot0(sig, reset));
end : COVER_L1
if (!synthesis && (cover_level & 2))
begin : COVER_L2
function int position( logic $bits(sig) arg);
for ( int i = 0; i < $bits(sig); i++)
if (sig[i] === 1) return i;
return 0;
endfunction // position
covergroup cg_onehot0_2 with
function sample( int index);
coverpoint index;
endgroup
cg_onehot0_2 onehot0_2_index = new ();
Cover_onehot0_2:
cover #0 (cover_onehot0(sig, reset))
onehot0_2_index.sample(position(sig));
Search WWH ::




Custom Search