|
楼主 |
发表于 2021-9-22 11:10:13
|
显示全部楼层
Driver.execute(Array("--target-dir","generated"),()=>new VecShiftRegisterParam(4,3))产生的verilog内容如下:
module VecShiftRegisterParam(
input clock,
input reset,
input [2:0] io_in,
output [2:0] io_out
);
reg [2:0] delays_0; // @[VecShiftRegisterParam.scala 16:23]
reg [31:0] _RAND_0;
reg [2:0] delays_1; // @[VecShiftRegisterParam.scala 16:23]
reg [31:0] _RAND_1;
reg [2:0] delays_2; // @[VecShiftRegisterParam.scala 16:23]
reg [31:0] _RAND_2;
reg [2:0] delays_3; // @[VecShiftRegisterParam.scala 16:23]
reg [31:0] _RAND_3;
assign io_out = delays_3; // @[VecShiftRegisterParam.scala 21:10]
`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}};
delays_0 = _RAND_0[2:0];
`endif // RANDOMIZE_REG_INIT
`ifdef RANDOMIZE_REG_INIT
_RAND_1 = {1{`RANDOM}};
delays_1 = _RAND_1[2:0];
`endif // RANDOMIZE_REG_INIT
`ifdef RANDOMIZE_REG_INIT
_RAND_2 = {1{`RANDOM}};
delays_2 = _RAND_2[2:0];
`endif // RANDOMIZE_REG_INIT
`ifdef RANDOMIZE_REG_INIT
_RAND_3 = {1{`RANDOM}};
delays_3 = _RAND_3[2:0];
`endif // RANDOMIZE_REG_INIT
`endif // RANDOMIZE
end // initial
`endif // SYNTHESIS
always @(posedge clock) begin
if (reset) begin
delays_0 <= 3'h0;
end else begin
delays_0 <= io_in;
end
if (reset) begin
delays_1 <= 3'h0;
end else begin
delays_1 <= delays_0;
end
if (reset) begin
delays_2 <= 3'h0;
end else begin
delays_2 <= delays_1;
end
if (reset) begin
delays_3 <= 3'h0;
end else begin
delays_3 <= delays_2;
end
end
endmodule
|
|