UnityChipVerification/rtl/common/DelayNWithValid.sv

108 lines
5.1 KiB
Systemverilog

// Generated by CIRCT firtool-1.62.0
// Standard header to adapt well known macros for register randomization.
`ifndef RANDOMIZE
`ifdef RANDOMIZE_MEM_INIT
`define RANDOMIZE
`endif // RANDOMIZE_MEM_INIT
`endif // not def RANDOMIZE
`ifndef RANDOMIZE
`ifdef RANDOMIZE_REG_INIT
`define RANDOMIZE
`endif // RANDOMIZE_REG_INIT
`endif // not def RANDOMIZE
// RANDOM may be set to an expression that produces a 32-bit random unsigned value.
`ifndef RANDOM
`define RANDOM $random
`endif // not def RANDOM
// Users can define INIT_RANDOM as general code that gets injected into the
// initializer block for modules with registers.
`ifndef INIT_RANDOM
`define INIT_RANDOM
`endif // not def INIT_RANDOM
// If using random initialization, you can also define RANDOMIZE_DELAY to
// customize the delay used, otherwise 0.002 is used.
`ifndef RANDOMIZE_DELAY
`define RANDOMIZE_DELAY 0.002
`endif // not def RANDOMIZE_DELAY
// Define INIT_RANDOM_PROLOG_ for use in our modules below.
`ifndef INIT_RANDOM_PROLOG_
`ifdef RANDOMIZE
`ifdef VERILATOR
`define INIT_RANDOM_PROLOG_ `INIT_RANDOM
`else // VERILATOR
`define INIT_RANDOM_PROLOG_ `INIT_RANDOM #`RANDOMIZE_DELAY begin end
`endif // VERILATOR
`else // RANDOMIZE
`define INIT_RANDOM_PROLOG_
`endif // RANDOMIZE
`endif // not def INIT_RANDOM_PROLOG_
// Include register initializers in init blocks unless synthesis is set
`ifndef SYNTHESIS
`ifndef ENABLE_INITIAL_REG_
`define ENABLE_INITIAL_REG_
`endif // not def ENABLE_INITIAL_REG_
`endif // not def SYNTHESIS
// Include rmemory initializers in init blocks unless synthesis is set
`ifndef SYNTHESIS
`ifndef ENABLE_INITIAL_MEM_
`define ENABLE_INITIAL_MEM_
`endif // not def ENABLE_INITIAL_MEM_
`endif // not def SYNTHESIS
module DelayNWithValid( // @[utility/src/main/scala/utility/Hold.scala:106:7]
input clock, // @[utility/src/main/scala/utility/Hold.scala:106:7]
input reset, // @[utility/src/main/scala/utility/Hold.scala:106:7]
input [40:0] io_in_bits, // @[utility/src/main/scala/utility/Hold.scala:107:14]
input io_in_valid, // @[utility/src/main/scala/utility/Hold.scala:107:14]
output [40:0] io_out_bits // @[utility/src/main/scala/utility/Hold.scala:107:14]
);
reg valid_REG; // @[utility/src/main/scala/utility/Hold.scala:117:25]
reg [40:0] data; // @[utility/src/main/scala/utility/Hold.scala:121:27]
reg [40:0] res_bits; // @[utility/src/main/scala/utility/Hold.scala:121:27]
always @(posedge clock or posedge reset) begin // @[utility/src/main/scala/utility/Hold.scala:106:7]
if (reset) // @[utility/src/main/scala/utility/Hold.scala:106:7]
valid_REG <= 1'h0; // @[utility/src/main/scala/utility/Hold.scala:117:25]
else // @[utility/src/main/scala/utility/Hold.scala:106:7]
valid_REG <= io_in_valid; // @[utility/src/main/scala/utility/Hold.scala:117:25]
end // always @(posedge, posedge)
always @(posedge clock) begin // @[utility/src/main/scala/utility/Hold.scala:106:7]
if (io_in_valid) // @[utility/src/main/scala/utility/Hold.scala:107:14]
data <= io_in_bits; // @[utility/src/main/scala/utility/Hold.scala:121:27]
if (valid_REG) // @[utility/src/main/scala/utility/Hold.scala:117:25]
res_bits <= data; // @[utility/src/main/scala/utility/Hold.scala:121:27]
end // always @(posedge)
`ifdef ENABLE_INITIAL_REG_ // @[utility/src/main/scala/utility/Hold.scala:106:7]
`ifdef FIRRTL_BEFORE_INITIAL // @[utility/src/main/scala/utility/Hold.scala:106:7]
`FIRRTL_BEFORE_INITIAL // @[utility/src/main/scala/utility/Hold.scala:106:7]
`endif // FIRRTL_BEFORE_INITIAL
logic [31:0] _RANDOM[0:2]; // @[utility/src/main/scala/utility/Hold.scala:106:7]
initial begin // @[utility/src/main/scala/utility/Hold.scala:106:7]
`ifdef INIT_RANDOM_PROLOG_ // @[utility/src/main/scala/utility/Hold.scala:106:7]
`INIT_RANDOM_PROLOG_ // @[utility/src/main/scala/utility/Hold.scala:106:7]
`endif // INIT_RANDOM_PROLOG_
`ifdef RANDOMIZE_REG_INIT // @[utility/src/main/scala/utility/Hold.scala:106:7]
for (logic [1:0] i = 2'h0; i < 2'h3; i += 2'h1) begin
_RANDOM[i] = `RANDOM; // @[utility/src/main/scala/utility/Hold.scala:106:7]
end // @[utility/src/main/scala/utility/Hold.scala:106:7]
valid_REG = _RANDOM[2'h0][0]; // @[utility/src/main/scala/utility/Hold.scala:106:7, :117:25]
data = {_RANDOM[2'h0][31:1], _RANDOM[2'h1][9:0]}; // @[utility/src/main/scala/utility/Hold.scala:106:7, :117:25, :121:27]
res_bits = {_RANDOM[2'h1][31:11], _RANDOM[2'h2][19:0]}; // @[utility/src/main/scala/utility/Hold.scala:106:7, :121:27]
`endif // RANDOMIZE_REG_INIT
if (reset) // @[utility/src/main/scala/utility/Hold.scala:106:7]
valid_REG = 1'h0; // @[utility/src/main/scala/utility/Hold.scala:117:25]
end // initial
`ifdef FIRRTL_AFTER_INITIAL // @[utility/src/main/scala/utility/Hold.scala:106:7]
`FIRRTL_AFTER_INITIAL // @[utility/src/main/scala/utility/Hold.scala:106:7]
`endif // FIRRTL_AFTER_INITIAL
`endif // ENABLE_INITIAL_REG_
assign io_out_bits = res_bits; // @[utility/src/main/scala/utility/Hold.scala:106:7, :121:27]
endmodule