|
楼主 |
发表于 2021-8-29 08:56:52
|
显示全部楼层
生成的verilog文件内容如下:
module SimpleFSM(
input clock,
input reset,
input io_badEvent,
input io_clear,
output io_ringBell
);
reg [1:0] stateReg; // @[SimpleFSM.scala 14:25]
reg [31:0] _RAND_0;
wire _T = 2'h0 == stateReg; // @[Conditional.scala 37:30]
wire _T_1 = 2'h1 == stateReg; // @[Conditional.scala 37:30]
wire _T_2 = 2'h2 == stateReg; // @[Conditional.scala 37:30]
assign io_ringBell = stateReg == 2'h2; // @[SimpleFSM.scala 36:15]
`ifdef RANDOMIZE_GARBAGE_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_INVALID_ASSIGN
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif
`ifndef RANDOM
`define RANDOM $random
`endif
`ifdef RANDOMIZE_MEM_INIT
integer initvar;
`endif
`ifndef SYNTHESIS
initial begin
`ifdef RANDOMIZE
`ifdef INIT_RANDOM
`INIT_RANDOM
`endif
`ifndef VERILATOR
`ifdef RANDOMIZE_DELAY
#`RANDOMIZE_DELAY begin end
`else
#0.002 begin end
`endif
`endif
`ifdef RANDOMIZE_REG_INIT
_RAND_0 = {1{`RANDOM}};
stateReg = _RAND_0[1:0];
`endif // RANDOMIZE_REG_INIT
`endif // RANDOMIZE
end // initial
`endif // SYNTHESIS
always @(posedge clock) begin
if (reset) begin
stateReg <= 2'h0;
end else if (_T) begin
if (io_badEvent) begin
stateReg <= 2'h1;
end
end else if (_T_1) begin
if (io_badEvent) begin
stateReg <= 2'h2;
end else if (io_clear) begin
stateReg <= 2'h0;
end
end else if (_T_2) begin
if (io_clear) begin
stateReg <= 2'h0;
end
end
end
endmodule
|
|