summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSchuyler Eldridge2019-01-09 18:20:14 -0500
committerSchuyler Eldridge2019-01-09 18:20:14 -0500
commit3d67395ef286fb309bfb645dea2b574e77d08044 (patch)
tree17cf0f73b92c6d00905ab6c4ac96d65e61116b64 /src
parent9a0ce2272c9d5d0a8bdc90e84269749ce054664d (diff)
Avoid procedural wire assignment in test resource
Verilator 4.008 dropped the hammer on procedural wire assignment to align with the IEEE standard (first I've heard of this, though). The VerilogVendingMachine.v test resource will error in Verilator 4.008 with a PROCASSWIRE error if you try to compile it. This fixes that example to only assign to a register. Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/test/resources/chisel3/VerilogVendingMachine.v47
1 files changed, 25 insertions, 22 deletions
diff --git a/src/test/resources/chisel3/VerilogVendingMachine.v b/src/test/resources/chisel3/VerilogVendingMachine.v
index c01259bd..0902d1d2 100644
--- a/src/test/resources/chisel3/VerilogVendingMachine.v
+++ b/src/test/resources/chisel3/VerilogVendingMachine.v
@@ -10,35 +10,38 @@ module VerilogVendingMachine(
);
parameter sIdle = 3'd0, s5 = 3'd1, s10 = 3'd2, s15 = 3'd3, sOk = 3'd4;
reg [2:0] state;
- wire [2:0] next_state;
assign dispense = (state == sOk) ? 1'd1 : 1'd0;
- always @(*) begin
- case (state)
- sIdle: if (nickel) next_state <= s5;
- else if (dime) next_state <= s10;
- else next_state <= state;
- s5: if (nickel) next_state <= s10;
- else if (dime) next_state <= s15;
- else next_state <= state;
- s10: if (nickel) next_state <= s15;
- else if (dime) next_state <= sOk;
- else next_state <= state;
- s15: if (nickel) next_state <= sOk;
- else if (dime) next_state <= sOk;
- else next_state <= state;
- sOk: next_state <= sIdle;
- endcase
- end
-
- // Go to next state
always @(posedge clock) begin
if (reset) begin
state <= sIdle;
end else begin
- state <= next_state;
+ case (state)
+ sIdle: begin
+ if (nickel) state <= s5;
+ else if (dime) state <= s10;
+ else state <= state;
+ end
+ s5: begin
+ if (nickel) state <= s10;
+ else if (dime) state <= s15;
+ else state <= state;
+ end
+ s10: begin
+ if (nickel) state <= s15;
+ else if (dime) state <= sOk;
+ else state <= state;
+ end
+ s15: begin
+ if (nickel) state <= sOk;
+ else if (dime) state <= sOk;
+ else state <= state;
+ end
+ sOk: begin
+ state <= sIdle;
+ end
+ endcase
end
end
endmodule
-