diff options
author | Zachary Snow <zach@zachjs.com> | 2021-07-28 17:34:24 -0400 |
---|---|---|
committer | Zachary Snow <zachary.j.snow@gmail.com> | 2021-07-29 20:55:59 -0400 |
commit | c016f6a4236fb970196f35c2afb0f2c7c237a77f (patch) | |
tree | 6d7902946f6a5b662217fbd2d9a63a513c10e70c /tests/proc/rmdead.v | |
parent | 4fec3a85cd7d0fcd35f958bfc89090df25f7de3c (diff) | |
download | yosys-c016f6a4236fb970196f35c2afb0f2c7c237a77f.tar.gz yosys-c016f6a4236fb970196f35c2afb0f2c7c237a77f.tar.bz2 yosys-c016f6a4236fb970196f35c2afb0f2c7c237a77f.zip |
proc_rmdead: use explicit pattern set when there are no wildcards
If width of a case expression was large, explicit patterns could cause
the existing logic to take an extremely long time, or exhaust the
maximum size of the underlying set. For cases where all of the patterns
are fully defined and there are no constants in the case expression,
this change uses a simple set to track which patterns have been seen.
Diffstat (limited to 'tests/proc/rmdead.v')
-rw-r--r-- | tests/proc/rmdead.v | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tests/proc/rmdead.v b/tests/proc/rmdead.v new file mode 100644 index 000000000..2be89e533 --- /dev/null +++ b/tests/proc/rmdead.v @@ -0,0 +1,46 @@ +module top ( + input wire signed x, + output reg [31:0] y +); + wire signed fail = ~x; + + always @* + case (x) + 1'b0: y = 0; + 1'b1: y = 1; + default: y = fail; + endcase + + always @* + case (x) + 2'sb00: y = 0; + 2'sb00: y = fail; + endcase + + always @* + case (x) + 2'sb00: y = 0; + default: y = fail; + 2'sb01: y = 1; + 2'sb10: y = 2; + 2'sb11: y = 3; + 2'sb00: y = fail; + 2'sb01: y = fail; + 2'sb10: y = fail; + 2'sb11: y = fail; + endcase + + + always @* + case ({x, x}) + 2'b00: y = 0; + 2'b01: y = 1; + 2'b10: y = 2; + 2'b11: y = 3; + default: y = fail; + 2'b00: y = fail; + 2'b01: y = fail; + 2'b10: y = fail; + 2'b11: y = fail; + endcase +endmodule |