1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50
|
module myassert(input clk,
input reset,
input [15:0] data);
property myproperty;
@(posedge clk)
$rose(reset) |-> data == 16'h0;
endproperty
//Assert, cover, and assume property statements
//support begin/end keywords. The else begin/end
//clause below is getting indented improperly.
myassert0: assert property(myproperty) begin
$display("myassert0 was successful");
a;
b;
c;
d;
end // myassert0: assert property (myproperty)
else begin
$fatal("myassert0 was unsuccessful");
end // else: !assert property(myproperty)
if (a) begin
b;
c;
end // if (a)
else begin
o;
end // else: !if(a)
assert (a) begin
o;
end // assert (a)
else begin
o;
end // else: !assert (a)
assert (statement) begin
$display("assertion passed"); //this code is correctly indented
end // assert (statement)
else begin // this whole section should be moved to the left
$error("assertion failed");
end // else: !assert (statement)
//Also, any statements following the assert,
//cover, and assume property statements get
// indented too far to the right.
always @(posedge clk) begin
a;
end // always @ (posedge clk)
endmodule
|