mirror of https://github.com/YosysHQ/yosys.git
simple enum test
This commit is contained in:
parent
cc2236d0c0
commit
febe7706a2
|
@ -0,0 +1,47 @@
|
||||||
|
|
||||||
|
module enum_simple(input clk, input rst);
|
||||||
|
|
||||||
|
enum {s0, s1, s2, s3} test_enum;
|
||||||
|
typedef enum logic [1:0] {
|
||||||
|
ts0, ts1, ts2, ts3
|
||||||
|
} states_t;
|
||||||
|
(states_t) state;
|
||||||
|
(states_t) enum_const = s1;
|
||||||
|
|
||||||
|
always @(posedge clk) begin
|
||||||
|
if (rst) begin
|
||||||
|
test_enum <= s3;
|
||||||
|
state <= ts0;
|
||||||
|
end else begin
|
||||||
|
//test_enum
|
||||||
|
if (test_enum == s0)
|
||||||
|
test_enum <= s1;
|
||||||
|
else if (test_enum == s1)
|
||||||
|
test_enum <= s2;
|
||||||
|
else if (test_enum == s2)
|
||||||
|
test_enum <= s3;
|
||||||
|
else if (test_enum == s3)
|
||||||
|
test_enum <= s0;
|
||||||
|
else
|
||||||
|
assert(1'b0); //should be unreachable
|
||||||
|
|
||||||
|
//state
|
||||||
|
if (state == ts0)
|
||||||
|
state <= ts1;
|
||||||
|
else if (state == ts1)
|
||||||
|
state <= ts2;
|
||||||
|
else if (state == ts2)
|
||||||
|
state <= ts0;
|
||||||
|
else
|
||||||
|
assert(1'b0); //should be unreachable
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
always @(*) begin
|
||||||
|
assert(state != 2'h3);
|
||||||
|
assert(s0 == '0);
|
||||||
|
assert(ts0 == '0);
|
||||||
|
assert(enum_const == s1);
|
||||||
|
end
|
||||||
|
|
||||||
|
endmodule
|
|
@ -0,0 +1,5 @@
|
||||||
|
|
||||||
|
read_verilog -sv enum_simple.sv
|
||||||
|
hierarchy; proc; opt
|
||||||
|
sat -verify -seq 1 -set-at 1 rst 1 -tempinduct -prove-asserts -show-all
|
||||||
|
|
Loading…
Reference in New Issue