| module WishboneHost( |
| input clock, |
| input reset, |
| input io_wbMasterTransmitter_ready, |
| output io_wbMasterTransmitter_valid, |
| output io_wbMasterTransmitter_bits_cyc, |
| output io_wbMasterTransmitter_bits_stb, |
| output io_wbMasterTransmitter_bits_we, |
| output [31:0] io_wbMasterTransmitter_bits_adr, |
| output [31:0] io_wbMasterTransmitter_bits_dat, |
| output [3:0] io_wbMasterTransmitter_bits_sel, |
| output io_wbSlaveReceiver_ready, |
| input io_wbSlaveReceiver_bits_ack, |
| input [31:0] io_wbSlaveReceiver_bits_dat, |
| input io_wbSlaveReceiver_bits_err, |
| output io_reqIn_ready, |
| input io_reqIn_valid, |
| input [31:0] io_reqIn_bits_addrRequest, |
| input [31:0] io_reqIn_bits_dataRequest, |
| input [3:0] io_reqIn_bits_activeByteLane, |
| input io_reqIn_bits_isWrite, |
| output io_rspOut_valid, |
| output [31:0] io_rspOut_bits_dataResponse |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| reg [31:0] _RAND_1; |
| reg [31:0] _RAND_2; |
| reg [31:0] _RAND_3; |
| reg [31:0] _RAND_4; |
| reg [31:0] _RAND_5; |
| reg [31:0] _RAND_6; |
| reg [31:0] _RAND_7; |
| reg [31:0] _RAND_8; |
| reg [31:0] _RAND_9; |
| reg [31:0] _RAND_10; |
| `endif // RANDOMIZE_REG_INIT |
| reg startWBTransaction; // @[WishboneHost.scala 39:35] |
| reg [31:0] dataReg; // @[WishboneHost.scala 41:24] |
| reg respReg; // @[WishboneHost.scala 42:24] |
| reg stbReg; // @[WishboneHost.scala 45:23] |
| reg cycReg; // @[WishboneHost.scala 46:23] |
| reg weReg; // @[WishboneHost.scala 47:22] |
| reg [31:0] datReg; // @[WishboneHost.scala 48:23] |
| reg [31:0] adrReg; // @[WishboneHost.scala 49:23] |
| reg [3:0] selReg; // @[WishboneHost.scala 50:23] |
| reg stateReg; // @[WishboneHost.scala 55:25] |
| reg readyReg; // @[WishboneHost.scala 61:25] |
| wire _T_2 = io_reqIn_valid & io_wbMasterTransmitter_ready; // @[WishboneHost.scala 18:37] |
| wire _GEN_0 = _T_2 ? 1'h0 : readyReg; // @[WishboneHost.scala 62:14 WishboneHost.scala 63:14 WishboneHost.scala 61:25] |
| wire _GEN_1 = stateReg | _GEN_0; // @[WishboneHost.scala 65:33 WishboneHost.scala 66:14] |
| wire _GEN_2 = io_reqIn_bits_isWrite & readyReg & io_reqIn_valid | startWBTransaction; // @[WishboneHost.scala 84:92 WishboneHost.scala 85:26 WishboneHost.scala 39:35] |
| wire _GEN_3 = io_reqIn_bits_isWrite & readyReg & io_reqIn_valid | stbReg; // @[WishboneHost.scala 84:92 WishboneHost.scala 86:14 WishboneHost.scala 45:23] |
| wire _GEN_4 = io_reqIn_bits_isWrite & readyReg & io_reqIn_valid | cycReg; // @[WishboneHost.scala 84:92 WishboneHost.scala 87:14 WishboneHost.scala 46:23] |
| wire _GEN_9 = ~io_reqIn_bits_isWrite & readyReg & io_reqIn_valid | _GEN_2; // @[WishboneHost.scala 76:86 WishboneHost.scala 77:26] |
| wire _GEN_10 = ~io_reqIn_bits_isWrite & readyReg & io_reqIn_valid | _GEN_3; // @[WishboneHost.scala 76:86 WishboneHost.scala 78:14] |
| wire _GEN_11 = ~io_reqIn_bits_isWrite & readyReg & io_reqIn_valid | _GEN_4; // @[WishboneHost.scala 76:86 WishboneHost.scala 79:14] |
| wire _GEN_23 = io_wbSlaveReceiver_bits_err & ~io_wbSlaveReceiver_bits_ack | respReg; // @[WishboneHost.scala 111:78 WishboneHost.scala 113:15 WishboneHost.scala 42:24] |
| wire _GEN_27 = io_wbSlaveReceiver_bits_ack & ~io_wbSlaveReceiver_bits_err | _GEN_23; // @[WishboneHost.scala 105:71 WishboneHost.scala 107:15] |
| assign io_wbMasterTransmitter_valid = io_wbMasterTransmitter_bits_stb; // @[WishboneHost.scala 23:32] |
| assign io_wbMasterTransmitter_bits_cyc = ~startWBTransaction ? 1'h0 : cycReg; // @[WishboneHost.scala 101:31 WishboneHost.scala 102:118 WishboneHost.scala 95:37] |
| assign io_wbMasterTransmitter_bits_stb = ~startWBTransaction ? 1'h0 : stbReg; // @[WishboneHost.scala 101:31 WishboneHost.scala 102:118 WishboneHost.scala 94:37] |
| assign io_wbMasterTransmitter_bits_we = ~startWBTransaction ? 1'h0 : weReg; // @[WishboneHost.scala 101:31 WishboneHost.scala 102:118 WishboneHost.scala 96:36] |
| assign io_wbMasterTransmitter_bits_adr = ~startWBTransaction ? 32'h0 : adrReg; // @[WishboneHost.scala 101:31 WishboneHost.scala 102:118 WishboneHost.scala 97:37] |
| assign io_wbMasterTransmitter_bits_dat = ~startWBTransaction ? 32'h0 : datReg; // @[WishboneHost.scala 101:31 WishboneHost.scala 102:118 WishboneHost.scala 98:37] |
| assign io_wbMasterTransmitter_bits_sel = ~startWBTransaction ? 4'h0 : selReg; // @[WishboneHost.scala 101:31 WishboneHost.scala 102:118 WishboneHost.scala 99:37] |
| assign io_wbSlaveReceiver_ready = 1'h1; // @[WishboneHost.scala 26:28] |
| assign io_reqIn_ready = readyReg; // @[WishboneHost.scala 75:20] |
| assign io_rspOut_valid = respReg; // @[WishboneHost.scala 127:21] |
| assign io_rspOut_bits_dataResponse = dataReg; // @[WishboneHost.scala 128:33] |
| always @(posedge clock) begin |
| if (reset) begin // @[WishboneHost.scala 39:35] |
| startWBTransaction <= 1'h0; // @[WishboneHost.scala 39:35] |
| end else if (io_wbSlaveReceiver_bits_ack & ~io_wbSlaveReceiver_bits_err) begin // @[WishboneHost.scala 105:71] |
| startWBTransaction <= 1'h0; // @[WishboneHost.scala 110:26] |
| end else if (io_wbSlaveReceiver_bits_err & ~io_wbSlaveReceiver_bits_ack) begin // @[WishboneHost.scala 111:78] |
| startWBTransaction <= 1'h0; // @[WishboneHost.scala 115:26] |
| end else begin |
| startWBTransaction <= _GEN_9; |
| end |
| if (reset) begin // @[WishboneHost.scala 41:24] |
| dataReg <= 32'h0; // @[WishboneHost.scala 41:24] |
| end else if (io_wbSlaveReceiver_bits_ack & ~io_wbSlaveReceiver_bits_err) begin // @[WishboneHost.scala 105:71] |
| dataReg <= io_wbSlaveReceiver_bits_dat; // @[WishboneHost.scala 106:15] |
| end else if (io_wbSlaveReceiver_bits_err & ~io_wbSlaveReceiver_bits_ack) begin // @[WishboneHost.scala 111:78] |
| dataReg <= io_wbSlaveReceiver_bits_dat; // @[WishboneHost.scala 112:15] |
| end |
| if (reset) begin // @[WishboneHost.scala 42:24] |
| respReg <= 1'h0; // @[WishboneHost.scala 42:24] |
| end else if (~stateReg) begin // @[WishboneHost.scala 118:29] |
| respReg <= _GEN_27; |
| end else if (stateReg) begin // @[WishboneHost.scala 120:42] |
| respReg <= 1'h0; // @[WishboneHost.scala 121:15] |
| end else begin |
| respReg <= _GEN_27; |
| end |
| if (reset) begin // @[WishboneHost.scala 45:23] |
| stbReg <= 1'h0; // @[WishboneHost.scala 45:23] |
| end else begin |
| stbReg <= _GEN_10; |
| end |
| if (reset) begin // @[WishboneHost.scala 46:23] |
| cycReg <= 1'h0; // @[WishboneHost.scala 46:23] |
| end else begin |
| cycReg <= _GEN_11; |
| end |
| if (reset) begin // @[WishboneHost.scala 47:22] |
| weReg <= 1'h0; // @[WishboneHost.scala 47:22] |
| end else if (~io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 76:86] |
| weReg <= io_reqIn_bits_isWrite; // @[WishboneHost.scala 80:13] |
| end else if (io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 84:92] |
| weReg <= io_reqIn_bits_isWrite; // @[WishboneHost.scala 88:13] |
| end |
| if (reset) begin // @[WishboneHost.scala 48:23] |
| datReg <= 32'h0; // @[WishboneHost.scala 48:23] |
| end else if (~io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 76:86] |
| datReg <= 32'h0; // @[WishboneHost.scala 82:14] |
| end else if (io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 84:92] |
| datReg <= io_reqIn_bits_dataRequest; // @[WishboneHost.scala 90:14] |
| end |
| if (reset) begin // @[WishboneHost.scala 49:23] |
| adrReg <= 32'h0; // @[WishboneHost.scala 49:23] |
| end else if (~io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 76:86] |
| adrReg <= io_reqIn_bits_addrRequest; // @[WishboneHost.scala 81:14] |
| end else if (io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 84:92] |
| adrReg <= io_reqIn_bits_addrRequest; // @[WishboneHost.scala 89:14] |
| end |
| if (reset) begin // @[WishboneHost.scala 50:23] |
| selReg <= 4'h0; // @[WishboneHost.scala 50:23] |
| end else if (~io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 76:86] |
| selReg <= io_reqIn_bits_activeByteLane; // @[WishboneHost.scala 83:14] |
| end else if (io_reqIn_bits_isWrite & readyReg & io_reqIn_valid) begin // @[WishboneHost.scala 84:92] |
| selReg <= io_reqIn_bits_activeByteLane; // @[WishboneHost.scala 91:14] |
| end |
| if (reset) begin // @[WishboneHost.scala 55:25] |
| stateReg <= 1'h0; // @[WishboneHost.scala 55:25] |
| end else if (~stateReg) begin // @[WishboneHost.scala 118:29] |
| stateReg <= io_wbSlaveReceiver_bits_ack | io_wbSlaveReceiver_bits_err; // @[WishboneHost.scala 119:16] |
| end else if (stateReg) begin // @[WishboneHost.scala 120:42] |
| stateReg <= 1'h0; // @[WishboneHost.scala 122:16] |
| end |
| readyReg <= reset | _GEN_1; // @[WishboneHost.scala 61:25 WishboneHost.scala 61:25] |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| startWBTransaction = _RAND_0[0:0]; |
| _RAND_1 = {1{`RANDOM}}; |
| dataReg = _RAND_1[31:0]; |
| _RAND_2 = {1{`RANDOM}}; |
| respReg = _RAND_2[0:0]; |
| _RAND_3 = {1{`RANDOM}}; |
| stbReg = _RAND_3[0:0]; |
| _RAND_4 = {1{`RANDOM}}; |
| cycReg = _RAND_4[0:0]; |
| _RAND_5 = {1{`RANDOM}}; |
| weReg = _RAND_5[0:0]; |
| _RAND_6 = {1{`RANDOM}}; |
| datReg = _RAND_6[31:0]; |
| _RAND_7 = {1{`RANDOM}}; |
| adrReg = _RAND_7[31:0]; |
| _RAND_8 = {1{`RANDOM}}; |
| selReg = _RAND_8[3:0]; |
| _RAND_9 = {1{`RANDOM}}; |
| stateReg = _RAND_9[0:0]; |
| _RAND_10 = {1{`RANDOM}}; |
| readyReg = _RAND_10[0:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module WishboneDevice( |
| input io_wbSlaveTransmitter_ready, |
| output io_wbSlaveTransmitter_bits_ack, |
| output [31:0] io_wbSlaveTransmitter_bits_dat, |
| output io_wbSlaveTransmitter_bits_err, |
| output io_wbMasterReceiver_ready, |
| input io_wbMasterReceiver_valid, |
| input io_wbMasterReceiver_bits_cyc, |
| input io_wbMasterReceiver_bits_stb, |
| input io_wbMasterReceiver_bits_we, |
| input [31:0] io_wbMasterReceiver_bits_adr, |
| input [31:0] io_wbMasterReceiver_bits_dat, |
| input [3:0] io_wbMasterReceiver_bits_sel, |
| output io_reqOut_valid, |
| output [31:0] io_reqOut_bits_addrRequest, |
| output [31:0] io_reqOut_bits_dataRequest, |
| output [3:0] io_reqOut_bits_activeByteLane, |
| output io_reqOut_bits_isWrite, |
| input io_rspIn_valid, |
| input [31:0] io_rspIn_bits_dataResponse, |
| input io_rspIn_bits_error |
| ); |
| wire _T_1 = io_wbMasterReceiver_valid & io_wbMasterReceiver_bits_cyc & io_wbMasterReceiver_bits_stb; // @[WishboneDevice.scala 16:80] |
| wire _T_4 = io_rspIn_valid & ~io_rspIn_bits_error; // @[WishboneDevice.scala 36:27] |
| wire _T_5 = io_rspIn_valid & io_rspIn_bits_error; // @[WishboneDevice.scala 42:34] |
| wire _GEN_5 = io_rspIn_valid & ~io_rspIn_bits_error ? 1'h0 : _T_5; // @[WishboneDevice.scala 36:52 WishboneDevice.scala 40:40] |
| wire _GEN_18 = ~io_wbMasterReceiver_bits_we ? _T_4 : _T_4; // @[WishboneDevice.scala 26:40] |
| wire _GEN_19 = ~io_wbMasterReceiver_bits_we ? _GEN_5 : _GEN_5; // @[WishboneDevice.scala 26:40] |
| assign io_wbSlaveTransmitter_bits_ack = _T_1 & _GEN_18; // @[WishboneDevice.scala 25:16 WishboneDevice.scala 88:9] |
| assign io_wbSlaveTransmitter_bits_dat = io_rspIn_bits_dataResponse; // @[WishboneDevice.scala 36:52 WishboneDevice.scala 41:40] |
| assign io_wbSlaveTransmitter_bits_err = _T_1 & _GEN_19; // @[WishboneDevice.scala 25:16 WishboneDevice.scala 89:36] |
| assign io_wbMasterReceiver_ready = 1'h1; // @[WishboneDevice.scala 19:29] |
| assign io_reqOut_valid = io_wbMasterReceiver_valid & io_wbMasterReceiver_bits_cyc & io_wbMasterReceiver_bits_stb; // @[WishboneDevice.scala 16:80] |
| assign io_reqOut_bits_addrRequest = io_wbMasterReceiver_bits_adr; // @[WishboneDevice.scala 26:40 WishboneDevice.scala 32:34 WishboneDevice.scala 56:34] |
| assign io_reqOut_bits_dataRequest = io_wbMasterReceiver_bits_dat; // @[WishboneDevice.scala 26:40 WishboneDevice.scala 57:34] |
| assign io_reqOut_bits_activeByteLane = io_wbMasterReceiver_bits_sel; // @[WishboneDevice.scala 26:40 WishboneDevice.scala 34:37 WishboneDevice.scala 58:37] |
| assign io_reqOut_bits_isWrite = ~io_wbMasterReceiver_bits_we ? 1'h0 : io_wbMasterReceiver_bits_we; // @[WishboneDevice.scala 26:40 WishboneDevice.scala 35:30 WishboneDevice.scala 59:30] |
| endmodule |
| module SRAM1kb( |
| input clock, |
| input reset, |
| input io_req_valid, |
| input [31:0] io_req_bits_addrRequest, |
| input [31:0] io_req_bits_dataRequest, |
| input [3:0] io_req_bits_activeByteLane, |
| input io_req_bits_isWrite, |
| output io_rsp_valid, |
| output [31:0] io_rsp_bits_dataResponse |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| `endif // RANDOMIZE_REG_INIT |
| wire sram_clk0; // @[SRAM1kb.scala 24:20] |
| wire sram_csb0; // @[SRAM1kb.scala 24:20] |
| wire sram_web0; // @[SRAM1kb.scala 24:20] |
| wire [3:0] sram_wmask0; // @[SRAM1kb.scala 24:20] |
| wire [9:0] sram_addr0; // @[SRAM1kb.scala 24:20] |
| wire [31:0] sram_din0; // @[SRAM1kb.scala 24:20] |
| wire [31:0] sram_dout0; // @[SRAM1kb.scala 24:20] |
| wire sram_clk1; // @[SRAM1kb.scala 24:20] |
| wire sram_csb1; // @[SRAM1kb.scala 24:20] |
| wire [9:0] sram_addr1; // @[SRAM1kb.scala 24:20] |
| wire [31:0] sram_dout1; // @[SRAM1kb.scala 24:20] |
| reg validReg; // @[SRAM1kb.scala 16:25] |
| wire _T_2 = io_req_valid & io_req_bits_isWrite; // @[SRAM1kb.scala 51:28] |
| wire _GEN_0 = io_req_valid & io_req_bits_isWrite ? 1'h0 : 1'h1; // @[SRAM1kb.scala 51:52 SRAM1kb.scala 56:18 SRAM1kb.scala 29:16] |
| wire _GEN_6 = io_req_valid & ~io_req_bits_isWrite | _T_2; // @[SRAM1kb.scala 42:46 SRAM1kb.scala 45:14] |
| sky130_sram_1kbyte_1rw1r_32x256_8 dccm ( // @[SRAM1kb.scala 24:20] |
| .clk0(sram_clk0), |
| .csb0(sram_csb0), |
| .web0(sram_web0), |
| .wmask0(sram_wmask0), |
| .addr0(sram_addr0), |
| .din0(sram_din0), |
| .dout0(sram_dout0), |
| .clk1(sram_clk1), |
| .csb1(sram_csb1), |
| .addr1(sram_addr1), |
| .dout1(sram_dout1) |
| ); |
| assign io_rsp_valid = validReg; // @[SRAM1kb.scala 17:16] |
| assign io_rsp_bits_dataResponse = sram_dout0; // @[SRAM1kb.scala 42:46 SRAM1kb.scala 50:11] |
| assign sram_clk0 = clock; // @[SRAM1kb.scala 26:34] |
| assign sram_csb0 = io_req_valid & ~io_req_bits_isWrite ? 1'h0 : _GEN_0; // @[SRAM1kb.scala 42:46 SRAM1kb.scala 46:18] |
| assign sram_web0 = io_req_valid & ~io_req_bits_isWrite; // @[SRAM1kb.scala 42:21] |
| assign sram_wmask0 = io_req_bits_activeByteLane; // @[SRAM1kb.scala 51:52 SRAM1kb.scala 58:20] |
| assign sram_addr0 = io_req_bits_addrRequest[9:0]; |
| assign sram_din0 = io_req_bits_dataRequest; // @[SRAM1kb.scala 51:52 SRAM1kb.scala 60:18] |
| assign sram_clk1 = 1'h0; |
| assign sram_csb1 = 1'h0; |
| assign sram_addr1 = 10'h0; |
| always @(posedge clock) begin |
| if (reset) begin // @[SRAM1kb.scala 16:25] |
| validReg <= 1'h0; // @[SRAM1kb.scala 16:25] |
| end else begin |
| validReg <= _GEN_6; |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| validReg = _RAND_0[0:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module SramImem( |
| input clock, |
| input reset, |
| input io_req_valid, |
| input [31:0] io_req_bits_addrRequest, |
| input io_req_bits_isWrite, |
| output io_rsp_valid, |
| output [31:0] io_rsp_bits_dataResponse, |
| input io_writeEnable, |
| input [31:0] io_addrIn, |
| input [31:0] io_dataIn |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| `endif // RANDOMIZE_REG_INIT |
| wire sram_clk0; // @[SramImem.scala 28:20] |
| wire sram_csb0; // @[SramImem.scala 28:20] |
| wire sram_web0; // @[SramImem.scala 28:20] |
| wire [3:0] sram_wmask0; // @[SramImem.scala 28:20] |
| wire [9:0] sram_addr0; // @[SramImem.scala 28:20] |
| wire [31:0] sram_din0; // @[SramImem.scala 28:20] |
| wire [31:0] sram_dout0; // @[SramImem.scala 28:20] |
| wire sram_clk1; // @[SramImem.scala 28:20] |
| wire sram_csb1; // @[SramImem.scala 28:20] |
| wire [9:0] sram_addr1; // @[SramImem.scala 28:20] |
| wire [31:0] sram_dout1; // @[SramImem.scala 28:20] |
| reg validReg; // @[SramImem.scala 20:25] |
| wire _T_2 = ~io_writeEnable; // @[SramImem.scala 55:15] |
| wire _GEN_0 = ~io_writeEnable ? 1'h0 : 1'h1; // @[SramImem.scala 55:32 SramImem.scala 60:18 SramImem.scala 33:16] |
| wire _GEN_6 = io_req_valid & ~io_req_bits_isWrite | _T_2; // @[SramImem.scala 46:46 SramImem.scala 49:14] |
| wire [31:0] _GEN_9 = io_req_valid & ~io_req_bits_isWrite ? io_req_bits_addrRequest : io_addrIn; // @[SramImem.scala 46:46 SramImem.scala 52:19] |
| sky130_sram_1kbyte_1rw1r_32x256_8 iccm ( // @[SramImem.scala 28:20] |
| .clk0(sram_clk0), |
| .csb0(sram_csb0), |
| .web0(sram_web0), |
| .wmask0(sram_wmask0), |
| .addr0(sram_addr0), |
| .din0(sram_din0), |
| .dout0(sram_dout0), |
| .clk1(sram_clk1), |
| .csb1(sram_csb1), |
| .addr1(sram_addr1), |
| .dout1(sram_dout1) |
| ); |
| assign io_rsp_valid = validReg; // @[SramImem.scala 21:16] |
| assign io_rsp_bits_dataResponse = sram_dout0; // @[SramImem.scala 46:46 SramImem.scala 54:11] |
| assign sram_clk0 = clock; // @[SramImem.scala 30:34] |
| assign sram_csb0 = io_req_valid & ~io_req_bits_isWrite ? 1'h0 : _GEN_0; // @[SramImem.scala 46:46 SramImem.scala 50:18] |
| assign sram_web0 = io_req_valid & ~io_req_bits_isWrite | io_writeEnable; // @[SramImem.scala 46:46 SramImem.scala 51:18] |
| assign sram_wmask0 = 4'hf; // @[SramImem.scala 55:32 SramImem.scala 62:20] |
| assign sram_addr0 = _GEN_9[9:0]; |
| assign sram_din0 = io_dataIn; // @[SramImem.scala 55:32 SramImem.scala 64:18] |
| assign sram_clk1 = 1'h0; |
| assign sram_csb1 = 1'h0; |
| assign sram_addr1 = 10'h0; |
| always @(posedge clock) begin |
| if (reset) begin // @[SramImem.scala 20:25] |
| validReg <= 1'h0; // @[SramImem.scala 20:25] |
| end else begin |
| validReg <= _GEN_6; |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| validReg = _RAND_0[0:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module SubReg( |
| input clock, |
| input reset, |
| input io_we, |
| input [31:0] io_wd, |
| input io_de, |
| input [31:0] io_d, |
| output [31:0] io_q, |
| output [31:0] io_qs |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| `endif // RANDOMIZE_REG_INIT |
| reg [31:0] q_reg; // @[SubReg.scala 24:22] |
| wire wr_en = io_we | io_de; // @[SubReg.scala 33:20] |
| wire [31:0] _wr_data_T = io_de ? io_d : q_reg; // @[SubReg.scala 34:19] |
| wire [31:0] _wr_data_T_1 = ~io_wd; // @[SubReg.scala 34:53] |
| wire [31:0] _wr_data_T_3 = io_we ? _wr_data_T_1 : 32'hffffffff; // @[SubReg.scala 34:45] |
| wire [31:0] wr_data = _wr_data_T & _wr_data_T_3; // @[SubReg.scala 34:40] |
| assign io_q = q_reg; // @[SubReg.scala 52:8] |
| assign io_qs = q_reg; // @[SubReg.scala 51:9] |
| always @(posedge clock) begin |
| if (reset) begin // @[SubReg.scala 24:22] |
| q_reg <= 32'h0; // @[SubReg.scala 24:22] |
| end else if (wr_en) begin // @[SubReg.scala 47:15] |
| q_reg <= wr_data; // @[SubReg.scala 48:11] |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| q_reg = _RAND_0[31:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module SubReg_1( |
| input clock, |
| input reset, |
| input io_we, |
| input [31:0] io_wd, |
| output [31:0] io_q, |
| output [31:0] io_qs |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| `endif // RANDOMIZE_REG_INIT |
| reg [31:0] q_reg; // @[SubReg.scala 24:22] |
| assign io_q = q_reg; // @[SubReg.scala 52:8] |
| assign io_qs = q_reg; // @[SubReg.scala 51:9] |
| always @(posedge clock) begin |
| if (reset) begin // @[SubReg.scala 24:22] |
| q_reg <= 32'h0; // @[SubReg.scala 24:22] |
| end else if (io_we) begin // @[SubReg.scala 47:15] |
| if (io_we) begin // @[SubReg.scala 28:19] |
| q_reg <= io_wd; |
| end else begin |
| q_reg <= 32'h0; |
| end |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| q_reg = _RAND_0[31:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module SubRegExt( |
| input io_we, |
| input [31:0] io_wd, |
| input [31:0] io_d, |
| output io_qe, |
| output [31:0] io_q, |
| output [31:0] io_qs |
| ); |
| assign io_qe = io_we; // @[SubRegExt.scala 25:9] |
| assign io_q = io_wd; // @[SubRegExt.scala 24:8] |
| assign io_qs = io_d; // @[SubRegExt.scala 23:9] |
| endmodule |
| module SubReg_2( |
| input clock, |
| input reset, |
| input [31:0] io_d, |
| output [31:0] io_qs |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| `endif // RANDOMIZE_REG_INIT |
| reg [31:0] q_reg; // @[SubReg.scala 24:22] |
| assign io_qs = q_reg; // @[SubReg.scala 51:9] |
| always @(posedge clock) begin |
| if (reset) begin // @[SubReg.scala 24:22] |
| q_reg <= 32'h0; // @[SubReg.scala 24:22] |
| end else begin |
| q_reg <= io_d; |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| q_reg = _RAND_0[31:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module SubRegExt_2( |
| input io_we, |
| input [15:0] io_wd, |
| input [15:0] io_d, |
| output io_qe, |
| output [15:0] io_q, |
| output [15:0] io_qs |
| ); |
| assign io_qe = io_we; // @[SubRegExt.scala 25:9] |
| assign io_q = io_wd; // @[SubRegExt.scala 24:8] |
| assign io_qs = io_d; // @[SubRegExt.scala 23:9] |
| endmodule |
| module GpioRegTop( |
| input clock, |
| input reset, |
| output io_req_ready, |
| input io_req_valid, |
| input [31:0] io_req_bits_addrRequest, |
| input [31:0] io_req_bits_dataRequest, |
| input [3:0] io_req_bits_activeByteLane, |
| input io_req_bits_isWrite, |
| output io_rsp_valid, |
| output [31:0] io_rsp_bits_dataResponse, |
| output io_rsp_bits_error, |
| output [31:0] io_reg2hw_intr_state_q, |
| output [31:0] io_reg2hw_intr_test_q, |
| output io_reg2hw_intr_test_qe, |
| output [31:0] io_reg2hw_direct_out_q, |
| output io_reg2hw_direct_out_qe, |
| output [15:0] io_reg2hw_masked_out_lower_data_q, |
| output io_reg2hw_masked_out_lower_data_qe, |
| output [15:0] io_reg2hw_masked_out_lower_mask_q, |
| output [15:0] io_reg2hw_masked_out_upper_data_q, |
| output io_reg2hw_masked_out_upper_data_qe, |
| output [15:0] io_reg2hw_masked_out_upper_mask_q, |
| output [31:0] io_reg2hw_direct_oe_q, |
| output io_reg2hw_direct_oe_qe, |
| output [15:0] io_reg2hw_masked_oe_lower_data_q, |
| output io_reg2hw_masked_oe_lower_data_qe, |
| output [15:0] io_reg2hw_masked_oe_lower_mask_q, |
| output [15:0] io_reg2hw_masked_oe_upper_data_q, |
| output io_reg2hw_masked_oe_upper_data_qe, |
| output [15:0] io_reg2hw_masked_oe_upper_mask_q, |
| output [31:0] io_reg2hw_intr_ctrl_en_rising_q, |
| output [31:0] io_reg2hw_intr_ctrl_en_falling_q, |
| output [31:0] io_reg2hw_intr_ctrl_en_lvlHigh_q, |
| output [31:0] io_reg2hw_intr_ctrl_en_lvlLow_q, |
| input [31:0] io_hw2reg_intr_state_d, |
| input io_hw2reg_intr_state_de, |
| input [31:0] io_hw2reg_data_in_d, |
| input [31:0] io_hw2reg_direct_out_d, |
| input [15:0] io_hw2reg_masked_out_lower_data_d, |
| input [15:0] io_hw2reg_masked_out_upper_data_d, |
| input [31:0] io_hw2reg_direct_oe_d, |
| input [15:0] io_hw2reg_masked_oe_lower_data_d, |
| input [15:0] io_hw2reg_masked_oe_upper_data_d |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| `endif // RANDOMIZE_REG_INIT |
| wire intr_state_reg_clock; // @[GpioRegTop.scala 93:30] |
| wire intr_state_reg_reset; // @[GpioRegTop.scala 93:30] |
| wire intr_state_reg_io_we; // @[GpioRegTop.scala 93:30] |
| wire [31:0] intr_state_reg_io_wd; // @[GpioRegTop.scala 93:30] |
| wire intr_state_reg_io_de; // @[GpioRegTop.scala 93:30] |
| wire [31:0] intr_state_reg_io_d; // @[GpioRegTop.scala 93:30] |
| wire [31:0] intr_state_reg_io_q; // @[GpioRegTop.scala 93:30] |
| wire [31:0] intr_state_reg_io_qs; // @[GpioRegTop.scala 93:30] |
| wire intr_enable_reg_clock; // @[GpioRegTop.scala 108:31] |
| wire intr_enable_reg_reset; // @[GpioRegTop.scala 108:31] |
| wire intr_enable_reg_io_we; // @[GpioRegTop.scala 108:31] |
| wire [31:0] intr_enable_reg_io_wd; // @[GpioRegTop.scala 108:31] |
| wire [31:0] intr_enable_reg_io_q; // @[GpioRegTop.scala 108:31] |
| wire [31:0] intr_enable_reg_io_qs; // @[GpioRegTop.scala 108:31] |
| wire intr_test_reg_io_we; // @[GpioRegTop.scala 117:29] |
| wire [31:0] intr_test_reg_io_wd; // @[GpioRegTop.scala 117:29] |
| wire [31:0] intr_test_reg_io_d; // @[GpioRegTop.scala 117:29] |
| wire intr_test_reg_io_qe; // @[GpioRegTop.scala 117:29] |
| wire [31:0] intr_test_reg_io_q; // @[GpioRegTop.scala 117:29] |
| wire [31:0] intr_test_reg_io_qs; // @[GpioRegTop.scala 117:29] |
| wire data_in_reg_clock; // @[GpioRegTop.scala 126:27] |
| wire data_in_reg_reset; // @[GpioRegTop.scala 126:27] |
| wire [31:0] data_in_reg_io_d; // @[GpioRegTop.scala 126:27] |
| wire [31:0] data_in_reg_io_qs; // @[GpioRegTop.scala 126:27] |
| wire direct_out_reg_io_we; // @[GpioRegTop.scala 134:30] |
| wire [31:0] direct_out_reg_io_wd; // @[GpioRegTop.scala 134:30] |
| wire [31:0] direct_out_reg_io_d; // @[GpioRegTop.scala 134:30] |
| wire direct_out_reg_io_qe; // @[GpioRegTop.scala 134:30] |
| wire [31:0] direct_out_reg_io_q; // @[GpioRegTop.scala 134:30] |
| wire [31:0] direct_out_reg_io_qs; // @[GpioRegTop.scala 134:30] |
| wire masked_out_lower_data_reg_io_we; // @[GpioRegTop.scala 145:41] |
| wire [15:0] masked_out_lower_data_reg_io_wd; // @[GpioRegTop.scala 145:41] |
| wire [15:0] masked_out_lower_data_reg_io_d; // @[GpioRegTop.scala 145:41] |
| wire masked_out_lower_data_reg_io_qe; // @[GpioRegTop.scala 145:41] |
| wire [15:0] masked_out_lower_data_reg_io_q; // @[GpioRegTop.scala 145:41] |
| wire [15:0] masked_out_lower_data_reg_io_qs; // @[GpioRegTop.scala 145:41] |
| wire masked_out_lower_mask_reg_io_we; // @[GpioRegTop.scala 156:41] |
| wire [15:0] masked_out_lower_mask_reg_io_wd; // @[GpioRegTop.scala 156:41] |
| wire [15:0] masked_out_lower_mask_reg_io_d; // @[GpioRegTop.scala 156:41] |
| wire masked_out_lower_mask_reg_io_qe; // @[GpioRegTop.scala 156:41] |
| wire [15:0] masked_out_lower_mask_reg_io_q; // @[GpioRegTop.scala 156:41] |
| wire [15:0] masked_out_lower_mask_reg_io_qs; // @[GpioRegTop.scala 156:41] |
| wire masked_out_upper_data_reg_io_we; // @[GpioRegTop.scala 166:41] |
| wire [15:0] masked_out_upper_data_reg_io_wd; // @[GpioRegTop.scala 166:41] |
| wire [15:0] masked_out_upper_data_reg_io_d; // @[GpioRegTop.scala 166:41] |
| wire masked_out_upper_data_reg_io_qe; // @[GpioRegTop.scala 166:41] |
| wire [15:0] masked_out_upper_data_reg_io_q; // @[GpioRegTop.scala 166:41] |
| wire [15:0] masked_out_upper_data_reg_io_qs; // @[GpioRegTop.scala 166:41] |
| wire masked_out_upper_mask_reg_io_we; // @[GpioRegTop.scala 177:41] |
| wire [15:0] masked_out_upper_mask_reg_io_wd; // @[GpioRegTop.scala 177:41] |
| wire [15:0] masked_out_upper_mask_reg_io_d; // @[GpioRegTop.scala 177:41] |
| wire masked_out_upper_mask_reg_io_qe; // @[GpioRegTop.scala 177:41] |
| wire [15:0] masked_out_upper_mask_reg_io_q; // @[GpioRegTop.scala 177:41] |
| wire [15:0] masked_out_upper_mask_reg_io_qs; // @[GpioRegTop.scala 177:41] |
| wire direct_oe_reg_io_we; // @[GpioRegTop.scala 186:29] |
| wire [31:0] direct_oe_reg_io_wd; // @[GpioRegTop.scala 186:29] |
| wire [31:0] direct_oe_reg_io_d; // @[GpioRegTop.scala 186:29] |
| wire direct_oe_reg_io_qe; // @[GpioRegTop.scala 186:29] |
| wire [31:0] direct_oe_reg_io_q; // @[GpioRegTop.scala 186:29] |
| wire [31:0] direct_oe_reg_io_qs; // @[GpioRegTop.scala 186:29] |
| wire masked_oe_lower_data_reg_io_we; // @[GpioRegTop.scala 197:40] |
| wire [15:0] masked_oe_lower_data_reg_io_wd; // @[GpioRegTop.scala 197:40] |
| wire [15:0] masked_oe_lower_data_reg_io_d; // @[GpioRegTop.scala 197:40] |
| wire masked_oe_lower_data_reg_io_qe; // @[GpioRegTop.scala 197:40] |
| wire [15:0] masked_oe_lower_data_reg_io_q; // @[GpioRegTop.scala 197:40] |
| wire [15:0] masked_oe_lower_data_reg_io_qs; // @[GpioRegTop.scala 197:40] |
| wire masked_oe_lower_mask_reg_io_we; // @[GpioRegTop.scala 208:40] |
| wire [15:0] masked_oe_lower_mask_reg_io_wd; // @[GpioRegTop.scala 208:40] |
| wire [15:0] masked_oe_lower_mask_reg_io_d; // @[GpioRegTop.scala 208:40] |
| wire masked_oe_lower_mask_reg_io_qe; // @[GpioRegTop.scala 208:40] |
| wire [15:0] masked_oe_lower_mask_reg_io_q; // @[GpioRegTop.scala 208:40] |
| wire [15:0] masked_oe_lower_mask_reg_io_qs; // @[GpioRegTop.scala 208:40] |
| wire masked_oe_upper_data_reg_io_we; // @[GpioRegTop.scala 219:40] |
| wire [15:0] masked_oe_upper_data_reg_io_wd; // @[GpioRegTop.scala 219:40] |
| wire [15:0] masked_oe_upper_data_reg_io_d; // @[GpioRegTop.scala 219:40] |
| wire masked_oe_upper_data_reg_io_qe; // @[GpioRegTop.scala 219:40] |
| wire [15:0] masked_oe_upper_data_reg_io_q; // @[GpioRegTop.scala 219:40] |
| wire [15:0] masked_oe_upper_data_reg_io_qs; // @[GpioRegTop.scala 219:40] |
| wire masked_oe_upper_mask_reg_io_we; // @[GpioRegTop.scala 230:40] |
| wire [15:0] masked_oe_upper_mask_reg_io_wd; // @[GpioRegTop.scala 230:40] |
| wire [15:0] masked_oe_upper_mask_reg_io_d; // @[GpioRegTop.scala 230:40] |
| wire masked_oe_upper_mask_reg_io_qe; // @[GpioRegTop.scala 230:40] |
| wire [15:0] masked_oe_upper_mask_reg_io_q; // @[GpioRegTop.scala 230:40] |
| wire [15:0] masked_oe_upper_mask_reg_io_qs; // @[GpioRegTop.scala 230:40] |
| wire intr_ctrl_en_rising_reg_clock; // @[GpioRegTop.scala 240:39] |
| wire intr_ctrl_en_rising_reg_reset; // @[GpioRegTop.scala 240:39] |
| wire intr_ctrl_en_rising_reg_io_we; // @[GpioRegTop.scala 240:39] |
| wire [31:0] intr_ctrl_en_rising_reg_io_wd; // @[GpioRegTop.scala 240:39] |
| wire [31:0] intr_ctrl_en_rising_reg_io_q; // @[GpioRegTop.scala 240:39] |
| wire [31:0] intr_ctrl_en_rising_reg_io_qs; // @[GpioRegTop.scala 240:39] |
| wire intr_ctrl_en_falling_reg_clock; // @[GpioRegTop.scala 249:40] |
| wire intr_ctrl_en_falling_reg_reset; // @[GpioRegTop.scala 249:40] |
| wire intr_ctrl_en_falling_reg_io_we; // @[GpioRegTop.scala 249:40] |
| wire [31:0] intr_ctrl_en_falling_reg_io_wd; // @[GpioRegTop.scala 249:40] |
| wire [31:0] intr_ctrl_en_falling_reg_io_q; // @[GpioRegTop.scala 249:40] |
| wire [31:0] intr_ctrl_en_falling_reg_io_qs; // @[GpioRegTop.scala 249:40] |
| wire intr_ctrl_en_lvlhigh_reg_clock; // @[GpioRegTop.scala 258:40] |
| wire intr_ctrl_en_lvlhigh_reg_reset; // @[GpioRegTop.scala 258:40] |
| wire intr_ctrl_en_lvlhigh_reg_io_we; // @[GpioRegTop.scala 258:40] |
| wire [31:0] intr_ctrl_en_lvlhigh_reg_io_wd; // @[GpioRegTop.scala 258:40] |
| wire [31:0] intr_ctrl_en_lvlhigh_reg_io_q; // @[GpioRegTop.scala 258:40] |
| wire [31:0] intr_ctrl_en_lvlhigh_reg_io_qs; // @[GpioRegTop.scala 258:40] |
| wire intr_ctrl_en_lvllow_reg_clock; // @[GpioRegTop.scala 267:39] |
| wire intr_ctrl_en_lvllow_reg_reset; // @[GpioRegTop.scala 267:39] |
| wire intr_ctrl_en_lvllow_reg_io_we; // @[GpioRegTop.scala 267:39] |
| wire [31:0] intr_ctrl_en_lvllow_reg_io_wd; // @[GpioRegTop.scala 267:39] |
| wire [31:0] intr_ctrl_en_lvllow_reg_io_q; // @[GpioRegTop.scala 267:39] |
| wire [31:0] intr_ctrl_en_lvllow_reg_io_qs; // @[GpioRegTop.scala 267:39] |
| wire _reg_we_T = io_req_ready & io_req_valid; // @[Decoupled.scala 40:37] |
| wire reg_we = _reg_we_T & io_req_bits_isWrite; // @[GpioRegTop.scala 33:16] |
| wire reg_re = _reg_we_T & ~io_req_bits_isWrite; // @[GpioRegTop.scala 34:16] |
| reg io_rsp_valid_REG; // @[GpioRegTop.scala 39:26] |
| wire [5:0] reg_addr = io_req_bits_addrRequest[5:0]; // @[GpioRegTop.scala 26:22 GpioRegTop.scala 36:12] |
| wire addr_hit_0 = reg_addr == 6'h0; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_1 = reg_addr == 6'h4; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_2 = reg_addr == 6'h8; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_3 = reg_addr == 6'hc; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_4 = reg_addr == 6'h10; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_5 = reg_addr == 6'h14; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_6 = reg_addr == 6'h18; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_7 = reg_addr == 6'h1c; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_8 = reg_addr == 6'h20; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_9 = reg_addr == 6'h24; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_10 = reg_addr == 6'h28; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_11 = reg_addr == 6'h2c; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_12 = reg_addr == 6'h30; // @[GpioRegTop.scala 277:29] |
| wire addr_hit_13 = reg_addr == 6'h34; // @[GpioRegTop.scala 277:29] |
| wire addr_miss = (reg_re | reg_we) & ~(addr_hit_0 | addr_hit_1 | addr_hit_2 | addr_hit_3 | addr_hit_4 | addr_hit_5 | |
| addr_hit_6 | addr_hit_7 | addr_hit_8 | addr_hit_9 | addr_hit_10 | addr_hit_11 | addr_hit_12 | addr_hit_13); // @[GpioRegTop.scala 280:19] |
| wire _T = addr_hit_0 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_3 = addr_hit_0 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_4 = addr_hit_1 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_7 = addr_hit_1 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_8 = addr_hit_2 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_11 = addr_hit_2 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_15 = addr_hit_3 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_16 = addr_hit_4 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_19 = addr_hit_4 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_20 = addr_hit_5 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_23 = addr_hit_5 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_24 = addr_hit_6 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_27 = addr_hit_6 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_28 = addr_hit_7 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_31 = addr_hit_7 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_32 = addr_hit_8 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_35 = addr_hit_8 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_36 = addr_hit_9 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_39 = addr_hit_9 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_40 = addr_hit_10 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_43 = addr_hit_10 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_44 = addr_hit_11 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_47 = addr_hit_11 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_48 = addr_hit_12 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_51 = addr_hit_12 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire _T_52 = addr_hit_13 & reg_we; // @[GpioRegTop.scala 289:8] |
| wire _T_55 = addr_hit_13 & reg_we & 4'hf != io_req_bits_activeByteLane; // @[GpioRegTop.scala 289:18] |
| wire wr_err = _T_3 | (_T_7 | (_T_11 | (_T_15 | (_T_19 | (_T_23 | (_T_27 | (_T_31 | (_T_35 | (_T_39 | (_T_43 | (_T_47 |
| | (_T_51 | _T_55)))))))))))); // @[Mux.scala 98:16] |
| wire _intr_state_we_T_1 = ~wr_err; // @[GpioRegTop.scala 296:43] |
| wire [15:0] masked_out_lower_data_qs = masked_out_lower_data_reg_io_qs; // @[GpioRegTop.scala 61:90 GpioRegTop.scala 152:28] |
| wire [31:0] _reg_rdata_next_T = {16'h0,masked_out_lower_data_qs}; // @[Cat.scala 30:58] |
| wire [15:0] masked_out_upper_data_qs = masked_out_upper_data_reg_io_qs; // @[GpioRegTop.scala 64:90 GpioRegTop.scala 173:28] |
| wire [31:0] _reg_rdata_next_T_1 = {16'h0,masked_out_upper_data_qs}; // @[Cat.scala 30:58] |
| wire [15:0] masked_oe_lower_mask_qs = masked_oe_lower_mask_reg_io_qs; // @[GpioRegTop.scala 71:112 GpioRegTop.scala 215:27] |
| wire [15:0] masked_oe_lower_data_qs = masked_oe_lower_data_reg_io_qs; // @[GpioRegTop.scala 71:112 GpioRegTop.scala 204:27] |
| wire [31:0] _reg_rdata_next_T_2 = {masked_oe_lower_mask_qs,masked_oe_lower_data_qs}; // @[Cat.scala 30:58] |
| wire [15:0] masked_oe_upper_mask_qs = masked_oe_upper_mask_reg_io_qs; // @[GpioRegTop.scala 74:112 GpioRegTop.scala 237:27] |
| wire [15:0] masked_oe_upper_data_qs = masked_oe_upper_data_reg_io_qs; // @[GpioRegTop.scala 74:112 GpioRegTop.scala 226:27] |
| wire [31:0] _reg_rdata_next_T_3 = {masked_oe_upper_mask_qs,masked_oe_upper_data_qs}; // @[Cat.scala 30:58] |
| wire [31:0] intr_ctrl_en_lvllow_qs = intr_ctrl_en_lvllow_reg_io_qs; // @[GpioRegTop.scala 86:60 GpioRegTop.scala 273:26] |
| wire [31:0] _GEN_0 = addr_hit_13 ? intr_ctrl_en_lvllow_qs : 32'hffffffff; // @[GpioRegTop.scala 382:28 GpioRegTop.scala 383:20 GpioRegTop.scala 385:20] |
| wire [31:0] intr_ctrl_en_lvlhigh_qs = intr_ctrl_en_lvlhigh_reg_io_qs; // @[GpioRegTop.scala 83:62 GpioRegTop.scala 264:27] |
| wire [31:0] _GEN_1 = addr_hit_12 ? intr_ctrl_en_lvlhigh_qs : _GEN_0; // @[GpioRegTop.scala 380:28 GpioRegTop.scala 381:20] |
| wire [31:0] intr_ctrl_en_falling_qs = intr_ctrl_en_falling_reg_io_qs; // @[GpioRegTop.scala 80:62 GpioRegTop.scala 255:27] |
| wire [31:0] _GEN_2 = addr_hit_11 ? intr_ctrl_en_falling_qs : _GEN_1; // @[GpioRegTop.scala 378:28 GpioRegTop.scala 379:20] |
| wire [31:0] intr_ctrl_en_rising_qs = intr_ctrl_en_rising_reg_io_qs; // @[GpioRegTop.scala 77:60 GpioRegTop.scala 246:26] |
| wire [31:0] _GEN_3 = addr_hit_10 ? intr_ctrl_en_rising_qs : _GEN_2; // @[GpioRegTop.scala 376:28 GpioRegTop.scala 377:20] |
| wire [31:0] _GEN_4 = addr_hit_9 ? _reg_rdata_next_T_3 : _GEN_3; // @[GpioRegTop.scala 374:27 GpioRegTop.scala 375:20] |
| wire [31:0] _GEN_5 = addr_hit_8 ? _reg_rdata_next_T_2 : _GEN_4; // @[GpioRegTop.scala 372:27 GpioRegTop.scala 373:20] |
| wire [31:0] direct_oe_qs = direct_oe_reg_io_qs; // @[GpioRegTop.scala 67:26 GpioRegTop.scala 193:16] |
| wire [31:0] _GEN_6 = addr_hit_7 ? direct_oe_qs : _GEN_5; // @[GpioRegTop.scala 370:27 GpioRegTop.scala 371:20] |
| wire [31:0] _GEN_7 = addr_hit_6 ? _reg_rdata_next_T_1 : _GEN_6; // @[GpioRegTop.scala 368:27 GpioRegTop.scala 369:20] |
| wire [31:0] _GEN_8 = addr_hit_5 ? _reg_rdata_next_T : _GEN_7; // @[GpioRegTop.scala 366:27 GpioRegTop.scala 367:20] |
| wire [31:0] direct_out_qs = direct_out_reg_io_qs; // @[GpioRegTop.scala 58:42 GpioRegTop.scala 141:17] |
| wire [31:0] _GEN_9 = addr_hit_4 ? direct_out_qs : _GEN_8; // @[GpioRegTop.scala 364:27 GpioRegTop.scala 365:20] |
| wire [31:0] data_in_qs = data_in_reg_io_qs; // @[GpioRegTop.scala 56:24 GpioRegTop.scala 131:14] |
| wire [31:0] _GEN_10 = addr_hit_3 ? data_in_qs : _GEN_9; // @[GpioRegTop.scala 362:27 GpioRegTop.scala 363:20] |
| wire [31:0] _GEN_11 = addr_hit_2 ? 32'h0 : _GEN_10; // @[GpioRegTop.scala 360:27 GpioRegTop.scala 361:20] |
| wire [31:0] intr_enable_qs = intr_enable_reg_io_qs; // @[GpioRegTop.scala 50:44 GpioRegTop.scala 114:18] |
| wire [31:0] _GEN_12 = addr_hit_1 ? intr_enable_qs : _GEN_11; // @[GpioRegTop.scala 358:27 GpioRegTop.scala 359:20] |
| wire [31:0] intr_state_qs = intr_state_reg_io_qs; // @[GpioRegTop.scala 47:42 GpioRegTop.scala 105:17] |
| SubReg intr_state_reg ( // @[GpioRegTop.scala 93:30] |
| .clock(intr_state_reg_clock), |
| .reset(intr_state_reg_reset), |
| .io_we(intr_state_reg_io_we), |
| .io_wd(intr_state_reg_io_wd), |
| .io_de(intr_state_reg_io_de), |
| .io_d(intr_state_reg_io_d), |
| .io_q(intr_state_reg_io_q), |
| .io_qs(intr_state_reg_io_qs) |
| ); |
| SubReg_1 intr_enable_reg ( // @[GpioRegTop.scala 108:31] |
| .clock(intr_enable_reg_clock), |
| .reset(intr_enable_reg_reset), |
| .io_we(intr_enable_reg_io_we), |
| .io_wd(intr_enable_reg_io_wd), |
| .io_q(intr_enable_reg_io_q), |
| .io_qs(intr_enable_reg_io_qs) |
| ); |
| SubRegExt intr_test_reg ( // @[GpioRegTop.scala 117:29] |
| .io_we(intr_test_reg_io_we), |
| .io_wd(intr_test_reg_io_wd), |
| .io_d(intr_test_reg_io_d), |
| .io_qe(intr_test_reg_io_qe), |
| .io_q(intr_test_reg_io_q), |
| .io_qs(intr_test_reg_io_qs) |
| ); |
| SubReg_2 data_in_reg ( // @[GpioRegTop.scala 126:27] |
| .clock(data_in_reg_clock), |
| .reset(data_in_reg_reset), |
| .io_d(data_in_reg_io_d), |
| .io_qs(data_in_reg_io_qs) |
| ); |
| SubRegExt direct_out_reg ( // @[GpioRegTop.scala 134:30] |
| .io_we(direct_out_reg_io_we), |
| .io_wd(direct_out_reg_io_wd), |
| .io_d(direct_out_reg_io_d), |
| .io_qe(direct_out_reg_io_qe), |
| .io_q(direct_out_reg_io_q), |
| .io_qs(direct_out_reg_io_qs) |
| ); |
| SubRegExt_2 masked_out_lower_data_reg ( // @[GpioRegTop.scala 145:41] |
| .io_we(masked_out_lower_data_reg_io_we), |
| .io_wd(masked_out_lower_data_reg_io_wd), |
| .io_d(masked_out_lower_data_reg_io_d), |
| .io_qe(masked_out_lower_data_reg_io_qe), |
| .io_q(masked_out_lower_data_reg_io_q), |
| .io_qs(masked_out_lower_data_reg_io_qs) |
| ); |
| SubRegExt_2 masked_out_lower_mask_reg ( // @[GpioRegTop.scala 156:41] |
| .io_we(masked_out_lower_mask_reg_io_we), |
| .io_wd(masked_out_lower_mask_reg_io_wd), |
| .io_d(masked_out_lower_mask_reg_io_d), |
| .io_qe(masked_out_lower_mask_reg_io_qe), |
| .io_q(masked_out_lower_mask_reg_io_q), |
| .io_qs(masked_out_lower_mask_reg_io_qs) |
| ); |
| SubRegExt_2 masked_out_upper_data_reg ( // @[GpioRegTop.scala 166:41] |
| .io_we(masked_out_upper_data_reg_io_we), |
| .io_wd(masked_out_upper_data_reg_io_wd), |
| .io_d(masked_out_upper_data_reg_io_d), |
| .io_qe(masked_out_upper_data_reg_io_qe), |
| .io_q(masked_out_upper_data_reg_io_q), |
| .io_qs(masked_out_upper_data_reg_io_qs) |
| ); |
| SubRegExt_2 masked_out_upper_mask_reg ( // @[GpioRegTop.scala 177:41] |
| .io_we(masked_out_upper_mask_reg_io_we), |
| .io_wd(masked_out_upper_mask_reg_io_wd), |
| .io_d(masked_out_upper_mask_reg_io_d), |
| .io_qe(masked_out_upper_mask_reg_io_qe), |
| .io_q(masked_out_upper_mask_reg_io_q), |
| .io_qs(masked_out_upper_mask_reg_io_qs) |
| ); |
| SubRegExt direct_oe_reg ( // @[GpioRegTop.scala 186:29] |
| .io_we(direct_oe_reg_io_we), |
| .io_wd(direct_oe_reg_io_wd), |
| .io_d(direct_oe_reg_io_d), |
| .io_qe(direct_oe_reg_io_qe), |
| .io_q(direct_oe_reg_io_q), |
| .io_qs(direct_oe_reg_io_qs) |
| ); |
| SubRegExt_2 masked_oe_lower_data_reg ( // @[GpioRegTop.scala 197:40] |
| .io_we(masked_oe_lower_data_reg_io_we), |
| .io_wd(masked_oe_lower_data_reg_io_wd), |
| .io_d(masked_oe_lower_data_reg_io_d), |
| .io_qe(masked_oe_lower_data_reg_io_qe), |
| .io_q(masked_oe_lower_data_reg_io_q), |
| .io_qs(masked_oe_lower_data_reg_io_qs) |
| ); |
| SubRegExt_2 masked_oe_lower_mask_reg ( // @[GpioRegTop.scala 208:40] |
| .io_we(masked_oe_lower_mask_reg_io_we), |
| .io_wd(masked_oe_lower_mask_reg_io_wd), |
| .io_d(masked_oe_lower_mask_reg_io_d), |
| .io_qe(masked_oe_lower_mask_reg_io_qe), |
| .io_q(masked_oe_lower_mask_reg_io_q), |
| .io_qs(masked_oe_lower_mask_reg_io_qs) |
| ); |
| SubRegExt_2 masked_oe_upper_data_reg ( // @[GpioRegTop.scala 219:40] |
| .io_we(masked_oe_upper_data_reg_io_we), |
| .io_wd(masked_oe_upper_data_reg_io_wd), |
| .io_d(masked_oe_upper_data_reg_io_d), |
| .io_qe(masked_oe_upper_data_reg_io_qe), |
| .io_q(masked_oe_upper_data_reg_io_q), |
| .io_qs(masked_oe_upper_data_reg_io_qs) |
| ); |
| SubRegExt_2 masked_oe_upper_mask_reg ( // @[GpioRegTop.scala 230:40] |
| .io_we(masked_oe_upper_mask_reg_io_we), |
| .io_wd(masked_oe_upper_mask_reg_io_wd), |
| .io_d(masked_oe_upper_mask_reg_io_d), |
| .io_qe(masked_oe_upper_mask_reg_io_qe), |
| .io_q(masked_oe_upper_mask_reg_io_q), |
| .io_qs(masked_oe_upper_mask_reg_io_qs) |
| ); |
| SubReg_1 intr_ctrl_en_rising_reg ( // @[GpioRegTop.scala 240:39] |
| .clock(intr_ctrl_en_rising_reg_clock), |
| .reset(intr_ctrl_en_rising_reg_reset), |
| .io_we(intr_ctrl_en_rising_reg_io_we), |
| .io_wd(intr_ctrl_en_rising_reg_io_wd), |
| .io_q(intr_ctrl_en_rising_reg_io_q), |
| .io_qs(intr_ctrl_en_rising_reg_io_qs) |
| ); |
| SubReg_1 intr_ctrl_en_falling_reg ( // @[GpioRegTop.scala 249:40] |
| .clock(intr_ctrl_en_falling_reg_clock), |
| .reset(intr_ctrl_en_falling_reg_reset), |
| .io_we(intr_ctrl_en_falling_reg_io_we), |
| .io_wd(intr_ctrl_en_falling_reg_io_wd), |
| .io_q(intr_ctrl_en_falling_reg_io_q), |
| .io_qs(intr_ctrl_en_falling_reg_io_qs) |
| ); |
| SubReg_1 intr_ctrl_en_lvlhigh_reg ( // @[GpioRegTop.scala 258:40] |
| .clock(intr_ctrl_en_lvlhigh_reg_clock), |
| .reset(intr_ctrl_en_lvlhigh_reg_reset), |
| .io_we(intr_ctrl_en_lvlhigh_reg_io_we), |
| .io_wd(intr_ctrl_en_lvlhigh_reg_io_wd), |
| .io_q(intr_ctrl_en_lvlhigh_reg_io_q), |
| .io_qs(intr_ctrl_en_lvlhigh_reg_io_qs) |
| ); |
| SubReg_1 intr_ctrl_en_lvllow_reg ( // @[GpioRegTop.scala 267:39] |
| .clock(intr_ctrl_en_lvllow_reg_clock), |
| .reset(intr_ctrl_en_lvllow_reg_reset), |
| .io_we(intr_ctrl_en_lvllow_reg_io_we), |
| .io_wd(intr_ctrl_en_lvllow_reg_io_wd), |
| .io_q(intr_ctrl_en_lvllow_reg_io_q), |
| .io_qs(intr_ctrl_en_lvllow_reg_io_qs) |
| ); |
| assign io_req_ready = 1'h1; // @[GpioRegTop.scala 18:16] |
| assign io_rsp_valid = io_rsp_valid_REG; // @[GpioRegTop.scala 39:16] |
| assign io_rsp_bits_dataResponse = addr_hit_0 ? intr_state_qs : _GEN_12; // @[GpioRegTop.scala 356:21 GpioRegTop.scala 357:20] |
| assign io_rsp_bits_error = addr_miss | wr_err; // @[GpioRegTop.scala 44:26] |
| assign io_reg2hw_intr_state_q = intr_state_reg_io_q; // @[GpioRegTop.scala 103:26] |
| assign io_reg2hw_intr_test_q = intr_test_reg_io_q; // @[GpioRegTop.scala 123:25] |
| assign io_reg2hw_intr_test_qe = intr_test_reg_io_qe; // @[GpioRegTop.scala 122:26] |
| assign io_reg2hw_direct_out_q = direct_out_reg_io_q; // @[GpioRegTop.scala 140:26] |
| assign io_reg2hw_direct_out_qe = direct_out_reg_io_qe; // @[GpioRegTop.scala 139:27] |
| assign io_reg2hw_masked_out_lower_data_q = masked_out_lower_data_reg_io_q; // @[GpioRegTop.scala 151:37] |
| assign io_reg2hw_masked_out_lower_data_qe = masked_out_lower_data_reg_io_qe; // @[GpioRegTop.scala 150:38] |
| assign io_reg2hw_masked_out_lower_mask_q = masked_out_lower_mask_reg_io_q; // @[GpioRegTop.scala 162:37] |
| assign io_reg2hw_masked_out_upper_data_q = masked_out_upper_data_reg_io_q; // @[GpioRegTop.scala 172:37] |
| assign io_reg2hw_masked_out_upper_data_qe = masked_out_upper_data_reg_io_qe; // @[GpioRegTop.scala 171:38] |
| assign io_reg2hw_masked_out_upper_mask_q = masked_out_upper_mask_reg_io_q; // @[GpioRegTop.scala 183:37] |
| assign io_reg2hw_direct_oe_q = direct_oe_reg_io_q; // @[GpioRegTop.scala 192:25] |
| assign io_reg2hw_direct_oe_qe = direct_oe_reg_io_qe; // @[GpioRegTop.scala 191:26] |
| assign io_reg2hw_masked_oe_lower_data_q = masked_oe_lower_data_reg_io_q; // @[GpioRegTop.scala 203:36] |
| assign io_reg2hw_masked_oe_lower_data_qe = masked_oe_lower_data_reg_io_qe; // @[GpioRegTop.scala 202:37] |
| assign io_reg2hw_masked_oe_lower_mask_q = masked_oe_lower_mask_reg_io_q; // @[GpioRegTop.scala 214:36] |
| assign io_reg2hw_masked_oe_upper_data_q = masked_oe_upper_data_reg_io_q; // @[GpioRegTop.scala 225:36] |
| assign io_reg2hw_masked_oe_upper_data_qe = masked_oe_upper_data_reg_io_qe; // @[GpioRegTop.scala 224:37] |
| assign io_reg2hw_masked_oe_upper_mask_q = masked_oe_upper_mask_reg_io_q; // @[GpioRegTop.scala 236:36] |
| assign io_reg2hw_intr_ctrl_en_rising_q = intr_ctrl_en_rising_reg_io_q; // @[GpioRegTop.scala 245:35] |
| assign io_reg2hw_intr_ctrl_en_falling_q = intr_ctrl_en_falling_reg_io_q; // @[GpioRegTop.scala 254:36] |
| assign io_reg2hw_intr_ctrl_en_lvlHigh_q = intr_ctrl_en_lvlhigh_reg_io_q; // @[GpioRegTop.scala 263:36] |
| assign io_reg2hw_intr_ctrl_en_lvlLow_q = intr_ctrl_en_lvllow_reg_io_q; // @[GpioRegTop.scala 272:35] |
| assign intr_state_reg_clock = clock; |
| assign intr_state_reg_reset = reset; |
| assign intr_state_reg_io_we = _T & ~wr_err; // @[GpioRegTop.scala 296:41] |
| assign intr_state_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign intr_state_reg_io_de = io_hw2reg_intr_state_de; // @[GpioRegTop.scala 99:24] |
| assign intr_state_reg_io_d = io_hw2reg_intr_state_d; // @[GpioRegTop.scala 101:23] |
| assign intr_enable_reg_clock = clock; |
| assign intr_enable_reg_reset = reset; |
| assign intr_enable_reg_io_we = _T_4 & _intr_state_we_T_1; // @[GpioRegTop.scala 299:42] |
| assign intr_enable_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign intr_test_reg_io_we = _T_8 & _intr_state_we_T_1; // @[GpioRegTop.scala 302:40] |
| assign intr_test_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign intr_test_reg_io_d = 32'h0; // @[GpioRegTop.scala 121:22] |
| assign data_in_reg_clock = clock; |
| assign data_in_reg_reset = reset; |
| assign data_in_reg_io_d = io_hw2reg_data_in_d; // @[GpioRegTop.scala 130:20] |
| assign direct_out_reg_io_we = _T_16 & _intr_state_we_T_1; // @[GpioRegTop.scala 305:41] |
| assign direct_out_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign direct_out_reg_io_d = io_hw2reg_direct_out_d; // @[GpioRegTop.scala 138:23] |
| assign masked_out_lower_data_reg_io_we = _T_20 & _intr_state_we_T_1; // @[GpioRegTop.scala 309:52] |
| assign masked_out_lower_data_reg_io_wd = io_req_bits_dataRequest[15:0]; // @[GpioRegTop.scala 310:40] |
| assign masked_out_lower_data_reg_io_d = io_hw2reg_masked_out_lower_data_d; // @[GpioRegTop.scala 149:34] |
| assign masked_out_lower_mask_reg_io_we = _T_20 & _intr_state_we_T_1; // @[GpioRegTop.scala 313:52] |
| assign masked_out_lower_mask_reg_io_wd = io_req_bits_dataRequest[31:16]; // @[GpioRegTop.scala 314:40] |
| assign masked_out_lower_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 160:34] |
| assign masked_out_upper_data_reg_io_we = _T_24 & _intr_state_we_T_1; // @[GpioRegTop.scala 316:52] |
| assign masked_out_upper_data_reg_io_wd = io_req_bits_dataRequest[15:0]; // @[GpioRegTop.scala 317:40] |
| assign masked_out_upper_data_reg_io_d = io_hw2reg_masked_out_upper_data_d; // @[GpioRegTop.scala 170:34] |
| assign masked_out_upper_mask_reg_io_we = _T_24 & _intr_state_we_T_1; // @[GpioRegTop.scala 320:52] |
| assign masked_out_upper_mask_reg_io_wd = io_req_bits_dataRequest[31:16]; // @[GpioRegTop.scala 321:40] |
| assign masked_out_upper_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 181:34] |
| assign direct_oe_reg_io_we = _T_28 & _intr_state_we_T_1; // @[GpioRegTop.scala 323:40] |
| assign direct_oe_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign direct_oe_reg_io_d = io_hw2reg_direct_oe_d; // @[GpioRegTop.scala 190:22] |
| assign masked_oe_lower_data_reg_io_we = _T_32 & _intr_state_we_T_1; // @[GpioRegTop.scala 327:51] |
| assign masked_oe_lower_data_reg_io_wd = io_req_bits_dataRequest[15:0]; // @[GpioRegTop.scala 328:39] |
| assign masked_oe_lower_data_reg_io_d = io_hw2reg_masked_oe_lower_data_d; // @[GpioRegTop.scala 201:33] |
| assign masked_oe_lower_mask_reg_io_we = _T_32 & _intr_state_we_T_1; // @[GpioRegTop.scala 331:51] |
| assign masked_oe_lower_mask_reg_io_wd = io_req_bits_dataRequest[31:16]; // @[GpioRegTop.scala 332:39] |
| assign masked_oe_lower_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 212:33] |
| assign masked_oe_upper_data_reg_io_we = _T_36 & _intr_state_we_T_1; // @[GpioRegTop.scala 335:51] |
| assign masked_oe_upper_data_reg_io_wd = io_req_bits_dataRequest[15:0]; // @[GpioRegTop.scala 336:39] |
| assign masked_oe_upper_data_reg_io_d = io_hw2reg_masked_oe_upper_data_d; // @[GpioRegTop.scala 223:33] |
| assign masked_oe_upper_mask_reg_io_we = _T_36 & _intr_state_we_T_1; // @[GpioRegTop.scala 339:51] |
| assign masked_oe_upper_mask_reg_io_wd = io_req_bits_dataRequest[31:16]; // @[GpioRegTop.scala 340:39] |
| assign masked_oe_upper_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 234:33] |
| assign intr_ctrl_en_rising_reg_clock = clock; |
| assign intr_ctrl_en_rising_reg_reset = reset; |
| assign intr_ctrl_en_rising_reg_io_we = _T_40 & _intr_state_we_T_1; // @[GpioRegTop.scala 343:51] |
| assign intr_ctrl_en_rising_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign intr_ctrl_en_falling_reg_clock = clock; |
| assign intr_ctrl_en_falling_reg_reset = reset; |
| assign intr_ctrl_en_falling_reg_io_we = _T_44 & _intr_state_we_T_1; // @[GpioRegTop.scala 346:52] |
| assign intr_ctrl_en_falling_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign intr_ctrl_en_lvlhigh_reg_clock = clock; |
| assign intr_ctrl_en_lvlhigh_reg_reset = reset; |
| assign intr_ctrl_en_lvlhigh_reg_io_we = _T_48 & _intr_state_we_T_1; // @[GpioRegTop.scala 349:52] |
| assign intr_ctrl_en_lvlhigh_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| assign intr_ctrl_en_lvllow_reg_clock = clock; |
| assign intr_ctrl_en_lvllow_reg_reset = reset; |
| assign intr_ctrl_en_lvllow_reg_io_we = _T_52 & _intr_state_we_T_1; // @[GpioRegTop.scala 352:51] |
| assign intr_ctrl_en_lvllow_reg_io_wd = io_req_bits_dataRequest; // @[GpioRegTop.scala 25:34 GpioRegTop.scala 35:13] |
| always @(posedge clock) begin |
| io_rsp_valid_REG <= reg_we | reg_re; // @[GpioRegTop.scala 39:38] |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| io_rsp_valid_REG = _RAND_0[0:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module IntrHardware( |
| input [31:0] io_event_intr_i, |
| input [31:0] io_reg2hw_intr_test_q_i, |
| input io_reg2hw_intr_test_qe_i, |
| input [31:0] io_reg2hw_intr_state_q_i, |
| output io_hw2reg_intr_state_de_o, |
| output [31:0] io_hw2reg_intr_state_d_o |
| ); |
| wire [31:0] _new_event_T_1 = io_reg2hw_intr_test_qe_i ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] _new_event_T_2 = _new_event_T_1 & io_reg2hw_intr_test_q_i; // @[IntrHardware.scala 25:54] |
| wire [31:0] new_event = _new_event_T_2 | io_event_intr_i; // @[IntrHardware.scala 25:80] |
| assign io_hw2reg_intr_state_de_o = |new_event; // @[IntrHardware.scala 26:45] |
| assign io_hw2reg_intr_state_d_o = new_event | io_reg2hw_intr_state_q_i; // @[IntrHardware.scala 27:41] |
| endmodule |
| module Gpio( |
| input clock, |
| input reset, |
| input io_req_valid, |
| input [31:0] io_req_bits_addrRequest, |
| input [31:0] io_req_bits_dataRequest, |
| input [3:0] io_req_bits_activeByteLane, |
| input io_req_bits_isWrite, |
| output io_rsp_valid, |
| output [31:0] io_rsp_bits_dataResponse, |
| output io_rsp_bits_error, |
| input [31:0] io_cio_gpio_i, |
| output [31:0] io_cio_gpio_o, |
| output [31:0] io_cio_gpio_en_o |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| reg [31:0] _RAND_1; |
| reg [31:0] _RAND_2; |
| `endif // RANDOMIZE_REG_INIT |
| wire gpioRegTop_clock; // @[Gpio.scala 23:26] |
| wire gpioRegTop_reset; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_req_ready; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_req_valid; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_req_bits_addrRequest; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_req_bits_dataRequest; // @[Gpio.scala 23:26] |
| wire [3:0] gpioRegTop_io_req_bits_activeByteLane; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_req_bits_isWrite; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_rsp_valid; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_rsp_bits_dataResponse; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_rsp_bits_error; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_intr_state_q; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_intr_test_q; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_reg2hw_intr_test_qe; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_direct_out_q; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_reg2hw_direct_out_qe; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_out_lower_data_q; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_reg2hw_masked_out_lower_data_qe; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_out_upper_data_q; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_reg2hw_masked_out_upper_data_qe; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_direct_oe_q; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_reg2hw_direct_oe_qe; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_oe_lower_data_q; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_reg2hw_masked_oe_lower_data_qe; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_oe_upper_data_q; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_reg2hw_masked_oe_upper_data_qe; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_rising_q; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_falling_q; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_lvlHigh_q; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_lvlLow_q; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_hw2reg_intr_state_d; // @[Gpio.scala 23:26] |
| wire gpioRegTop_io_hw2reg_intr_state_de; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_hw2reg_data_in_d; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_hw2reg_direct_out_d; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_hw2reg_masked_out_lower_data_d; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_hw2reg_masked_out_upper_data_d; // @[Gpio.scala 23:26] |
| wire [31:0] gpioRegTop_io_hw2reg_direct_oe_d; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_hw2reg_masked_oe_lower_data_d; // @[Gpio.scala 23:26] |
| wire [15:0] gpioRegTop_io_hw2reg_masked_oe_upper_data_d; // @[Gpio.scala 23:26] |
| wire [31:0] intr_hw_io_event_intr_i; // @[Gpio.scala 115:23] |
| wire [31:0] intr_hw_io_reg2hw_intr_test_q_i; // @[Gpio.scala 115:23] |
| wire intr_hw_io_reg2hw_intr_test_qe_i; // @[Gpio.scala 115:23] |
| wire [31:0] intr_hw_io_reg2hw_intr_state_q_i; // @[Gpio.scala 115:23] |
| wire intr_hw_io_hw2reg_intr_state_de_o; // @[Gpio.scala 115:23] |
| wire [31:0] intr_hw_io_hw2reg_intr_state_d_o; // @[Gpio.scala 115:23] |
| reg [31:0] cio_gpio_q; // @[Gpio.scala 31:27] |
| reg [31:0] cio_gpio_en_q; // @[Gpio.scala 32:30] |
| reg [31:0] data_in_q; // @[Gpio.scala 33:26] |
| wire [15:0] hw2reg_masked_out_upper_data_d = cio_gpio_q[31:16]; // @[Gpio.scala 48:47] |
| wire [15:0] hw2reg_masked_out_lower_data_d = cio_gpio_q[15:0]; // @[Gpio.scala 50:47] |
| wire [15:0] reg2hw_masked_out_upper_data_q = gpioRegTop_io_reg2hw_masked_out_upper_data_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] reg2hw_masked_out_upper_mask_q = gpioRegTop_io_reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] _cio_gpio_q_T = reg2hw_masked_out_upper_data_q & reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 57:39] |
| wire [15:0] _cio_gpio_q_T_1 = ~reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 58:10] |
| wire [15:0] _cio_gpio_q_T_3 = _cio_gpio_q_T_1 & hw2reg_masked_out_upper_data_d; // @[Gpio.scala 58:42] |
| wire [15:0] cio_gpio_q_hi = _cio_gpio_q_T | _cio_gpio_q_T_3; // @[Gpio.scala 57:73] |
| wire [31:0] _cio_gpio_q_T_4 = {cio_gpio_q_hi,16'h0}; // @[Cat.scala 30:58] |
| wire [15:0] reg2hw_masked_out_lower_data_q = gpioRegTop_io_reg2hw_masked_out_lower_data_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] reg2hw_masked_out_lower_mask_q = gpioRegTop_io_reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] _cio_gpio_q_T_5 = reg2hw_masked_out_lower_data_q & reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 67:66] |
| wire [15:0] _cio_gpio_q_T_6 = ~reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 68:8] |
| wire [15:0] _cio_gpio_q_T_8 = _cio_gpio_q_T_6 & hw2reg_masked_out_lower_data_d; // @[Gpio.scala 68:40] |
| wire [15:0] cio_gpio_q_lo = _cio_gpio_q_T_5 | _cio_gpio_q_T_8; // @[Gpio.scala 67:100] |
| wire [31:0] _cio_gpio_q_T_9 = {16'h0,cio_gpio_q_lo}; // @[Cat.scala 30:58] |
| wire reg2hw_masked_out_lower_data_qe = gpioRegTop_io_reg2hw_masked_out_lower_data_qe; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire reg2hw_masked_out_upper_data_qe = gpioRegTop_io_reg2hw_masked_out_upper_data_qe; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire reg2hw_direct_out_qe = gpioRegTop_io_reg2hw_direct_out_qe; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [31:0] reg2hw_direct_out_q = gpioRegTop_io_reg2hw_direct_out_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] hw2reg_masked_oe_upper_data_d = cio_gpio_en_q[31:16]; // @[Gpio.scala 73:49] |
| wire [15:0] hw2reg_masked_oe_lower_data_d = cio_gpio_en_q[15:0]; // @[Gpio.scala 75:49] |
| wire [15:0] reg2hw_masked_oe_upper_data_q = gpioRegTop_io_reg2hw_masked_oe_upper_data_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] reg2hw_masked_oe_upper_mask_q = gpioRegTop_io_reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] _cio_gpio_en_q_T = reg2hw_masked_oe_upper_data_q & reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 81:57] |
| wire [15:0] _cio_gpio_en_q_T_1 = ~reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 82:8] |
| wire [15:0] _cio_gpio_en_q_T_3 = _cio_gpio_en_q_T_1 & hw2reg_masked_oe_upper_data_d; // @[Gpio.scala 82:39] |
| wire [15:0] cio_gpio_en_q_hi = _cio_gpio_en_q_T | _cio_gpio_en_q_T_3; // @[Gpio.scala 81:90] |
| wire [31:0] _cio_gpio_en_q_T_4 = {cio_gpio_en_q_hi,16'h0}; // @[Cat.scala 30:58] |
| wire [15:0] reg2hw_masked_oe_lower_data_q = gpioRegTop_io_reg2hw_masked_oe_lower_data_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] reg2hw_masked_oe_lower_mask_q = gpioRegTop_io_reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [15:0] _cio_gpio_en_q_T_5 = reg2hw_masked_oe_lower_data_q & reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 84:68] |
| wire [15:0] _cio_gpio_en_q_T_6 = ~reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 85:8] |
| wire [15:0] _cio_gpio_en_q_T_8 = _cio_gpio_en_q_T_6 & hw2reg_masked_oe_lower_data_d; // @[Gpio.scala 85:39] |
| wire [15:0] cio_gpio_en_q_lo = _cio_gpio_en_q_T_5 | _cio_gpio_en_q_T_8; // @[Gpio.scala 84:101] |
| wire [31:0] _cio_gpio_en_q_T_9 = {16'h0,cio_gpio_en_q_lo}; // @[Cat.scala 30:58] |
| wire reg2hw_masked_oe_lower_data_qe = gpioRegTop_io_reg2hw_masked_oe_lower_data_qe; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire reg2hw_masked_oe_upper_data_qe = gpioRegTop_io_reg2hw_masked_oe_upper_data_qe; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire reg2hw_direct_oe_qe = gpioRegTop_io_reg2hw_direct_oe_qe; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [31:0] reg2hw_direct_oe_q = gpioRegTop_io_reg2hw_direct_oe_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [31:0] _event_intr_rise_T = ~data_in_q; // @[Gpio.scala 95:23] |
| wire [31:0] _event_intr_rise_T_1 = _event_intr_rise_T & io_cio_gpio_i; // @[Gpio.scala 95:34] |
| wire [31:0] reg2hw_intr_ctrl_en_rising_q = gpioRegTop_io_reg2hw_intr_ctrl_en_rising_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [31:0] event_intr_rise = _event_intr_rise_T_1 & reg2hw_intr_ctrl_en_rising_q; // @[Gpio.scala 95:47] |
| wire [31:0] _event_intr_fall_T = ~io_cio_gpio_i; // @[Gpio.scala 99:35] |
| wire [31:0] _event_intr_fall_T_1 = data_in_q & _event_intr_fall_T; // @[Gpio.scala 99:33] |
| wire [31:0] reg2hw_intr_ctrl_en_falling_q = gpioRegTop_io_reg2hw_intr_ctrl_en_falling_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [31:0] event_intr_fall = _event_intr_fall_T_1 & reg2hw_intr_ctrl_en_falling_q; // @[Gpio.scala 99:47] |
| wire [31:0] reg2hw_intr_ctrl_en_lvlHigh_q = gpioRegTop_io_reg2hw_intr_ctrl_en_lvlHigh_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [31:0] event_intr_acthigh = io_cio_gpio_i & reg2hw_intr_ctrl_en_lvlHigh_q; // @[Gpio.scala 105:35] |
| wire [31:0] reg2hw_intr_ctrl_en_lvlLow_q = gpioRegTop_io_reg2hw_intr_ctrl_en_lvlLow_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| wire [31:0] event_intr_actlow = _event_intr_fall_T & reg2hw_intr_ctrl_en_lvlLow_q; // @[Gpio.scala 111:35] |
| wire [31:0] _event_intr_combined_T = event_intr_rise | event_intr_fall; // @[Gpio.scala 113:42] |
| wire [31:0] _event_intr_combined_T_1 = _event_intr_combined_T | event_intr_acthigh; // @[Gpio.scala 113:60] |
| GpioRegTop gpioRegTop ( // @[Gpio.scala 23:26] |
| .clock(gpioRegTop_clock), |
| .reset(gpioRegTop_reset), |
| .io_req_ready(gpioRegTop_io_req_ready), |
| .io_req_valid(gpioRegTop_io_req_valid), |
| .io_req_bits_addrRequest(gpioRegTop_io_req_bits_addrRequest), |
| .io_req_bits_dataRequest(gpioRegTop_io_req_bits_dataRequest), |
| .io_req_bits_activeByteLane(gpioRegTop_io_req_bits_activeByteLane), |
| .io_req_bits_isWrite(gpioRegTop_io_req_bits_isWrite), |
| .io_rsp_valid(gpioRegTop_io_rsp_valid), |
| .io_rsp_bits_dataResponse(gpioRegTop_io_rsp_bits_dataResponse), |
| .io_rsp_bits_error(gpioRegTop_io_rsp_bits_error), |
| .io_reg2hw_intr_state_q(gpioRegTop_io_reg2hw_intr_state_q), |
| .io_reg2hw_intr_test_q(gpioRegTop_io_reg2hw_intr_test_q), |
| .io_reg2hw_intr_test_qe(gpioRegTop_io_reg2hw_intr_test_qe), |
| .io_reg2hw_direct_out_q(gpioRegTop_io_reg2hw_direct_out_q), |
| .io_reg2hw_direct_out_qe(gpioRegTop_io_reg2hw_direct_out_qe), |
| .io_reg2hw_masked_out_lower_data_q(gpioRegTop_io_reg2hw_masked_out_lower_data_q), |
| .io_reg2hw_masked_out_lower_data_qe(gpioRegTop_io_reg2hw_masked_out_lower_data_qe), |
| .io_reg2hw_masked_out_lower_mask_q(gpioRegTop_io_reg2hw_masked_out_lower_mask_q), |
| .io_reg2hw_masked_out_upper_data_q(gpioRegTop_io_reg2hw_masked_out_upper_data_q), |
| .io_reg2hw_masked_out_upper_data_qe(gpioRegTop_io_reg2hw_masked_out_upper_data_qe), |
| .io_reg2hw_masked_out_upper_mask_q(gpioRegTop_io_reg2hw_masked_out_upper_mask_q), |
| .io_reg2hw_direct_oe_q(gpioRegTop_io_reg2hw_direct_oe_q), |
| .io_reg2hw_direct_oe_qe(gpioRegTop_io_reg2hw_direct_oe_qe), |
| .io_reg2hw_masked_oe_lower_data_q(gpioRegTop_io_reg2hw_masked_oe_lower_data_q), |
| .io_reg2hw_masked_oe_lower_data_qe(gpioRegTop_io_reg2hw_masked_oe_lower_data_qe), |
| .io_reg2hw_masked_oe_lower_mask_q(gpioRegTop_io_reg2hw_masked_oe_lower_mask_q), |
| .io_reg2hw_masked_oe_upper_data_q(gpioRegTop_io_reg2hw_masked_oe_upper_data_q), |
| .io_reg2hw_masked_oe_upper_data_qe(gpioRegTop_io_reg2hw_masked_oe_upper_data_qe), |
| .io_reg2hw_masked_oe_upper_mask_q(gpioRegTop_io_reg2hw_masked_oe_upper_mask_q), |
| .io_reg2hw_intr_ctrl_en_rising_q(gpioRegTop_io_reg2hw_intr_ctrl_en_rising_q), |
| .io_reg2hw_intr_ctrl_en_falling_q(gpioRegTop_io_reg2hw_intr_ctrl_en_falling_q), |
| .io_reg2hw_intr_ctrl_en_lvlHigh_q(gpioRegTop_io_reg2hw_intr_ctrl_en_lvlHigh_q), |
| .io_reg2hw_intr_ctrl_en_lvlLow_q(gpioRegTop_io_reg2hw_intr_ctrl_en_lvlLow_q), |
| .io_hw2reg_intr_state_d(gpioRegTop_io_hw2reg_intr_state_d), |
| .io_hw2reg_intr_state_de(gpioRegTop_io_hw2reg_intr_state_de), |
| .io_hw2reg_data_in_d(gpioRegTop_io_hw2reg_data_in_d), |
| .io_hw2reg_direct_out_d(gpioRegTop_io_hw2reg_direct_out_d), |
| .io_hw2reg_masked_out_lower_data_d(gpioRegTop_io_hw2reg_masked_out_lower_data_d), |
| .io_hw2reg_masked_out_upper_data_d(gpioRegTop_io_hw2reg_masked_out_upper_data_d), |
| .io_hw2reg_direct_oe_d(gpioRegTop_io_hw2reg_direct_oe_d), |
| .io_hw2reg_masked_oe_lower_data_d(gpioRegTop_io_hw2reg_masked_oe_lower_data_d), |
| .io_hw2reg_masked_oe_upper_data_d(gpioRegTop_io_hw2reg_masked_oe_upper_data_d) |
| ); |
| IntrHardware intr_hw ( // @[Gpio.scala 115:23] |
| .io_event_intr_i(intr_hw_io_event_intr_i), |
| .io_reg2hw_intr_test_q_i(intr_hw_io_reg2hw_intr_test_q_i), |
| .io_reg2hw_intr_test_qe_i(intr_hw_io_reg2hw_intr_test_qe_i), |
| .io_reg2hw_intr_state_q_i(intr_hw_io_reg2hw_intr_state_q_i), |
| .io_hw2reg_intr_state_de_o(intr_hw_io_hw2reg_intr_state_de_o), |
| .io_hw2reg_intr_state_d_o(intr_hw_io_hw2reg_intr_state_d_o) |
| ); |
| assign io_rsp_valid = gpioRegTop_io_rsp_valid; // @[Gpio.scala 26:10] |
| assign io_rsp_bits_dataResponse = gpioRegTop_io_rsp_bits_dataResponse; // @[Gpio.scala 26:10] |
| assign io_rsp_bits_error = gpioRegTop_io_rsp_bits_error; // @[Gpio.scala 26:10] |
| assign io_cio_gpio_o = cio_gpio_q; // @[Gpio.scala 44:17] |
| assign io_cio_gpio_en_o = cio_gpio_en_q; // @[Gpio.scala 45:20] |
| assign gpioRegTop_clock = clock; |
| assign gpioRegTop_reset = reset; |
| assign gpioRegTop_io_req_valid = io_req_valid; // @[Gpio.scala 25:21] |
| assign gpioRegTop_io_req_bits_addrRequest = io_req_bits_addrRequest; // @[Gpio.scala 25:21] |
| assign gpioRegTop_io_req_bits_dataRequest = io_req_bits_dataRequest; // @[Gpio.scala 25:21] |
| assign gpioRegTop_io_req_bits_activeByteLane = io_req_bits_activeByteLane; // @[Gpio.scala 25:21] |
| assign gpioRegTop_io_req_bits_isWrite = io_req_bits_isWrite; // @[Gpio.scala 25:21] |
| assign gpioRegTop_io_hw2reg_intr_state_d = intr_hw_io_hw2reg_intr_state_d_o; // @[Gpio.scala 21:20 Gpio.scala 122:23] |
| assign gpioRegTop_io_hw2reg_intr_state_de = intr_hw_io_hw2reg_intr_state_de_o; // @[Gpio.scala 21:20 Gpio.scala 121:24] |
| assign gpioRegTop_io_hw2reg_data_in_d = io_cio_gpio_i; // @[Gpio.scala 35:23 Gpio.scala 36:13] |
| assign gpioRegTop_io_hw2reg_direct_out_d = cio_gpio_q; // @[Gpio.scala 21:20 Gpio.scala 47:23] |
| assign gpioRegTop_io_hw2reg_masked_out_lower_data_d = cio_gpio_q[15:0]; // @[Gpio.scala 50:47] |
| assign gpioRegTop_io_hw2reg_masked_out_upper_data_d = cio_gpio_q[31:16]; // @[Gpio.scala 48:47] |
| assign gpioRegTop_io_hw2reg_direct_oe_d = cio_gpio_en_q; // @[Gpio.scala 21:20 Gpio.scala 72:22] |
| assign gpioRegTop_io_hw2reg_masked_oe_lower_data_d = cio_gpio_en_q[15:0]; // @[Gpio.scala 75:49] |
| assign gpioRegTop_io_hw2reg_masked_oe_upper_data_d = cio_gpio_en_q[31:16]; // @[Gpio.scala 73:49] |
| assign intr_hw_io_event_intr_i = _event_intr_combined_T_1 | event_intr_actlow; // @[Gpio.scala 113:81] |
| assign intr_hw_io_reg2hw_intr_test_q_i = gpioRegTop_io_reg2hw_intr_test_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| assign intr_hw_io_reg2hw_intr_test_qe_i = gpioRegTop_io_reg2hw_intr_test_qe; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| assign intr_hw_io_reg2hw_intr_state_q_i = gpioRegTop_io_reg2hw_intr_state_q; // @[Gpio.scala 20:20 Gpio.scala 28:10] |
| always @(posedge clock) begin |
| if (reset) begin // @[Gpio.scala 31:27] |
| cio_gpio_q <= 32'h0; // @[Gpio.scala 31:27] |
| end else if (reg2hw_direct_out_qe) begin // @[Gpio.scala 53:30] |
| cio_gpio_q <= reg2hw_direct_out_q; // @[Gpio.scala 54:16] |
| end else if (reg2hw_masked_out_upper_data_qe) begin // @[Gpio.scala 55:48] |
| cio_gpio_q <= _cio_gpio_q_T_4; // @[Gpio.scala 56:16] |
| end else if (reg2hw_masked_out_lower_data_qe) begin // @[Gpio.scala 66:48] |
| cio_gpio_q <= _cio_gpio_q_T_9; // @[Gpio.scala 67:16] |
| end |
| if (reset) begin // @[Gpio.scala 32:30] |
| cio_gpio_en_q <= 32'h0; // @[Gpio.scala 32:30] |
| end else if (reg2hw_direct_oe_qe) begin // @[Gpio.scala 78:29] |
| cio_gpio_en_q <= reg2hw_direct_oe_q; // @[Gpio.scala 79:19] |
| end else if (reg2hw_masked_oe_upper_data_qe) begin // @[Gpio.scala 80:47] |
| cio_gpio_en_q <= _cio_gpio_en_q_T_4; // @[Gpio.scala 81:19] |
| end else if (reg2hw_masked_oe_lower_data_qe) begin // @[Gpio.scala 83:47] |
| cio_gpio_en_q <= _cio_gpio_en_q_T_9; // @[Gpio.scala 84:19] |
| end |
| if (reset) begin // @[Gpio.scala 33:26] |
| data_in_q <= 32'h0; // @[Gpio.scala 33:26] |
| end else begin |
| data_in_q <= io_cio_gpio_i; // @[Gpio.scala 37:13] |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| cio_gpio_q = _RAND_0[31:0]; |
| _RAND_1 = {1{`RANDOM}}; |
| cio_gpio_en_q = _RAND_1[31:0]; |
| _RAND_2 = {1{`RANDOM}}; |
| data_in_q = _RAND_2[31:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module WishboneErr( |
| input clock, |
| input reset, |
| output [31:0] io_wbSlaveTransmitter_bits_dat, |
| output io_wbSlaveTransmitter_bits_err, |
| input io_wbMasterReceiver_valid, |
| input io_wbMasterReceiver_bits_cyc, |
| input io_wbMasterReceiver_bits_stb |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| reg [31:0] _RAND_1; |
| `endif // RANDOMIZE_REG_INIT |
| reg [31:0] dataReg; // @[WishboneErr.scala 15:24] |
| reg errReg; // @[WishboneErr.scala 16:23] |
| wire _T_1 = io_wbMasterReceiver_valid & io_wbMasterReceiver_bits_cyc & io_wbMasterReceiver_bits_stb; // @[WishboneErr.scala 12:80] |
| assign io_wbSlaveTransmitter_bits_dat = dataReg; // @[WishboneErr.scala 44:34] |
| assign io_wbSlaveTransmitter_bits_err = errReg; // @[WishboneErr.scala 45:35] |
| always @(posedge clock) begin |
| if (reset) begin // @[WishboneErr.scala 15:24] |
| dataReg <= 32'h0; // @[WishboneErr.scala 15:24] |
| end else if (_T_1) begin // @[WishboneErr.scala 21:16] |
| dataReg <= 32'hffffffff; |
| end else begin |
| dataReg <= 32'h0; // @[WishboneErr.scala 37:13] |
| end |
| if (reset) begin // @[WishboneErr.scala 16:23] |
| errReg <= 1'h0; // @[WishboneErr.scala 16:23] |
| end else begin |
| errReg <= _T_1; |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| dataReg = _RAND_0[31:0]; |
| _RAND_1 = {1{`RANDOM}}; |
| errReg = _RAND_1[0:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module InstructionFetch( |
| input [31:0] io_address, |
| output [31:0] io_instruction, |
| input io_coreInstrReq_ready, |
| output io_coreInstrReq_valid, |
| output [31:0] io_coreInstrReq_bits_addrRequest, |
| input io_coreInstrResp_valid, |
| input [31:0] io_coreInstrResp_bits_dataResponse |
| ); |
| assign io_instruction = io_coreInstrResp_valid ? io_coreInstrResp_bits_dataResponse : 32'h0; // @[InstructionFetch.scala 26:24] |
| assign io_coreInstrReq_valid = io_coreInstrReq_ready; // @[InstructionFetch.scala 24:31] |
| assign io_coreInstrReq_bits_addrRequest = {{2'd0}, io_address[31:2]}; // @[InstructionFetch.scala 23:50] |
| endmodule |
| module HazardUnit( |
| input io_id_ex_memRead, |
| input io_ex_mem_memRead, |
| input io_id_ex_branch, |
| input [4:0] io_id_ex_rd, |
| input [4:0] io_ex_mem_rd, |
| input [4:0] io_id_rs1, |
| input [4:0] io_id_rs2, |
| input io_taken, |
| input [1:0] io_jump, |
| input io_branch, |
| output io_if_reg_write, |
| output io_pc_write, |
| output io_ctl_mux, |
| output io_ifid_flush, |
| output io_take_branch |
| ); |
| wire _T_3 = io_id_ex_rd == io_id_rs1 | io_id_ex_rd == io_id_rs2; // @[HazardUnit.scala 35:34] |
| wire _T_4 = (io_id_ex_memRead | io_branch) & _T_3; // @[HazardUnit.scala 34:37] |
| wire _T_5 = io_id_ex_rd != 5'h0; // @[HazardUnit.scala 36:21] |
| wire _T_10 = _T_5 & io_id_rs2 != 5'h0; // @[HazardUnit.scala 37:28] |
| wire _T_11 = io_id_ex_rd != 5'h0 & io_id_rs1 != 5'h0 | _T_10; // @[HazardUnit.scala 36:51] |
| wire _T_12 = _T_4 & _T_11; // @[HazardUnit.scala 35:65] |
| wire _T_13 = ~io_id_ex_branch; // @[HazardUnit.scala 38:7] |
| wire _T_14 = _T_12 & _T_13; // @[HazardUnit.scala 37:51] |
| wire _GEN_0 = _T_14 ? 1'h0 : 1'h1; // @[HazardUnit.scala 40:3 HazardUnit.scala 41:16 HazardUnit.scala 26:14] |
| assign io_if_reg_write = io_ex_mem_memRead & io_branch & (io_ex_mem_rd == io_id_rs1 | io_ex_mem_rd == io_id_rs2) ? 1'h0 |
| : _GEN_0; // @[HazardUnit.scala 47:101 HazardUnit.scala 48:16] |
| assign io_pc_write = io_ex_mem_memRead & io_branch & (io_ex_mem_rd == io_id_rs1 | io_ex_mem_rd == io_id_rs2) ? 1'h0 : |
| _GEN_0; // @[HazardUnit.scala 47:101 HazardUnit.scala 48:16] |
| assign io_ctl_mux = io_ex_mem_memRead & io_branch & (io_ex_mem_rd == io_id_rs1 | io_ex_mem_rd == io_id_rs2) ? 1'h0 : |
| _GEN_0; // @[HazardUnit.scala 47:101 HazardUnit.scala 48:16] |
| assign io_ifid_flush = io_taken | io_jump != 2'h0; // @[HazardUnit.scala 55:17] |
| assign io_take_branch = io_ex_mem_memRead & io_branch & (io_ex_mem_rd == io_id_rs1 | io_ex_mem_rd == io_id_rs2) ? 1'h0 |
| : _GEN_0; // @[HazardUnit.scala 47:101 HazardUnit.scala 48:16] |
| endmodule |
| module Control( |
| input [31:0] io_in, |
| output io_aluSrc, |
| output [1:0] io_memToReg, |
| output io_regWrite, |
| output io_memRead, |
| output io_memWrite, |
| output io_branch, |
| output [1:0] io_aluOp, |
| output [1:0] io_jump, |
| output [1:0] io_aluSrc1 |
| ); |
| wire [31:0] _signals_T = io_in & 32'h7f; // @[Lookup.scala 31:38] |
| wire _signals_T_1 = 32'h33 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_3 = 32'h13 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_5 = 32'h3 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_7 = 32'h23 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_9 = 32'h63 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_11 = 32'h37 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_13 = 32'h17 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_15 = 32'h6f == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_17 = 32'h67 == _signals_T; // @[Lookup.scala 31:38] |
| wire _signals_T_23 = _signals_T_7 ? 1'h0 : _signals_T_9; // @[Lookup.scala 33:37] |
| wire _signals_T_24 = _signals_T_5 ? 1'h0 : _signals_T_23; // @[Lookup.scala 33:37] |
| wire _signals_T_25 = _signals_T_3 ? 1'h0 : _signals_T_24; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_26 = _signals_T_17 ? 2'h2 : 2'h0; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_27 = _signals_T_15 ? 2'h2 : _signals_T_26; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_28 = _signals_T_13 ? 2'h0 : _signals_T_27; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_29 = _signals_T_11 ? 2'h0 : _signals_T_28; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_30 = _signals_T_9 ? 2'h0 : _signals_T_29; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_31 = _signals_T_7 ? 2'h0 : _signals_T_30; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_32 = _signals_T_5 ? 2'h1 : _signals_T_31; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_33 = _signals_T_3 ? 2'h0 : _signals_T_32; // @[Lookup.scala 33:37] |
| wire _signals_T_38 = _signals_T_9 ? 1'h0 : _signals_T_11 | (_signals_T_13 | (_signals_T_15 | _signals_T_17)); // @[Lookup.scala 33:37] |
| wire _signals_T_39 = _signals_T_7 ? 1'h0 : _signals_T_38; // @[Lookup.scala 33:37] |
| wire _signals_T_49 = _signals_T_3 ? 1'h0 : _signals_T_5; // @[Lookup.scala 33:37] |
| wire _signals_T_56 = _signals_T_5 ? 1'h0 : _signals_T_7; // @[Lookup.scala 33:37] |
| wire _signals_T_57 = _signals_T_3 ? 1'h0 : _signals_T_56; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_67 = _signals_T_15 ? 2'h1 : _signals_T_26; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_68 = _signals_T_13 ? 2'h0 : _signals_T_67; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_69 = _signals_T_11 ? 2'h0 : _signals_T_68; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_70 = _signals_T_9 ? 2'h0 : _signals_T_69; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_71 = _signals_T_7 ? 2'h0 : _signals_T_70; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_72 = _signals_T_5 ? 2'h0 : _signals_T_71; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_73 = _signals_T_3 ? 2'h0 : _signals_T_72; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_81 = _signals_T_3 ? 2'h2 : 2'h0; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_85 = _signals_T_11 ? 2'h2 : {{1'd0}, _signals_T_13}; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_86 = _signals_T_9 ? 2'h0 : _signals_T_85; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_87 = _signals_T_7 ? 2'h0 : _signals_T_86; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_88 = _signals_T_5 ? 2'h0 : _signals_T_87; // @[Lookup.scala 33:37] |
| wire [1:0] _signals_T_89 = _signals_T_3 ? 2'h0 : _signals_T_88; // @[Lookup.scala 33:37] |
| assign io_aluSrc = _signals_T_1 | _signals_T_25; // @[Lookup.scala 33:37] |
| assign io_memToReg = _signals_T_1 ? 2'h0 : _signals_T_33; // @[Lookup.scala 33:37] |
| assign io_regWrite = _signals_T_1 | (_signals_T_3 | (_signals_T_5 | _signals_T_39)); // @[Lookup.scala 33:37] |
| assign io_memRead = _signals_T_1 ? 1'h0 : _signals_T_49; // @[Lookup.scala 33:37] |
| assign io_memWrite = _signals_T_1 ? 1'h0 : _signals_T_57; // @[Lookup.scala 33:37] |
| assign io_branch = _signals_T_1 ? 1'h0 : _signals_T_25; // @[Lookup.scala 33:37] |
| assign io_aluOp = _signals_T_1 ? 2'h2 : _signals_T_81; // @[Lookup.scala 33:37] |
| assign io_jump = _signals_T_1 ? 2'h0 : _signals_T_73; // @[Lookup.scala 33:37] |
| assign io_aluSrc1 = _signals_T_1 ? 2'h0 : _signals_T_89; // @[Lookup.scala 33:37] |
| endmodule |
| module Registers( |
| input clock, |
| input reset, |
| input [4:0] io_readAddress_0, |
| input [4:0] io_readAddress_1, |
| input io_writeEnable, |
| input [4:0] io_writeAddress, |
| input [31:0] io_writeData, |
| output [31:0] io_readData_0, |
| output [31:0] io_readData_1 |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| reg [31:0] _RAND_1; |
| reg [31:0] _RAND_2; |
| reg [31:0] _RAND_3; |
| reg [31:0] _RAND_4; |
| reg [31:0] _RAND_5; |
| reg [31:0] _RAND_6; |
| reg [31:0] _RAND_7; |
| reg [31:0] _RAND_8; |
| reg [31:0] _RAND_9; |
| reg [31:0] _RAND_10; |
| reg [31:0] _RAND_11; |
| reg [31:0] _RAND_12; |
| reg [31:0] _RAND_13; |
| reg [31:0] _RAND_14; |
| reg [31:0] _RAND_15; |
| reg [31:0] _RAND_16; |
| reg [31:0] _RAND_17; |
| reg [31:0] _RAND_18; |
| reg [31:0] _RAND_19; |
| reg [31:0] _RAND_20; |
| reg [31:0] _RAND_21; |
| reg [31:0] _RAND_22; |
| reg [31:0] _RAND_23; |
| reg [31:0] _RAND_24; |
| reg [31:0] _RAND_25; |
| reg [31:0] _RAND_26; |
| reg [31:0] _RAND_27; |
| reg [31:0] _RAND_28; |
| reg [31:0] _RAND_29; |
| reg [31:0] _RAND_30; |
| reg [31:0] _RAND_31; |
| `endif // RANDOMIZE_REG_INIT |
| reg [31:0] reg_0; // @[Registers.scala 14:20] |
| reg [31:0] reg_1; // @[Registers.scala 14:20] |
| reg [31:0] reg_2; // @[Registers.scala 14:20] |
| reg [31:0] reg_3; // @[Registers.scala 14:20] |
| reg [31:0] reg_4; // @[Registers.scala 14:20] |
| reg [31:0] reg_5; // @[Registers.scala 14:20] |
| reg [31:0] reg_6; // @[Registers.scala 14:20] |
| reg [31:0] reg_7; // @[Registers.scala 14:20] |
| reg [31:0] reg_8; // @[Registers.scala 14:20] |
| reg [31:0] reg_9; // @[Registers.scala 14:20] |
| reg [31:0] reg_10; // @[Registers.scala 14:20] |
| reg [31:0] reg_11; // @[Registers.scala 14:20] |
| reg [31:0] reg_12; // @[Registers.scala 14:20] |
| reg [31:0] reg_13; // @[Registers.scala 14:20] |
| reg [31:0] reg_14; // @[Registers.scala 14:20] |
| reg [31:0] reg_15; // @[Registers.scala 14:20] |
| reg [31:0] reg_16; // @[Registers.scala 14:20] |
| reg [31:0] reg_17; // @[Registers.scala 14:20] |
| reg [31:0] reg_18; // @[Registers.scala 14:20] |
| reg [31:0] reg_19; // @[Registers.scala 14:20] |
| reg [31:0] reg_20; // @[Registers.scala 14:20] |
| reg [31:0] reg_21; // @[Registers.scala 14:20] |
| reg [31:0] reg_22; // @[Registers.scala 14:20] |
| reg [31:0] reg_23; // @[Registers.scala 14:20] |
| reg [31:0] reg_24; // @[Registers.scala 14:20] |
| reg [31:0] reg_25; // @[Registers.scala 14:20] |
| reg [31:0] reg_26; // @[Registers.scala 14:20] |
| reg [31:0] reg_27; // @[Registers.scala 14:20] |
| reg [31:0] reg_28; // @[Registers.scala 14:20] |
| reg [31:0] reg_29; // @[Registers.scala 14:20] |
| reg [31:0] reg_30; // @[Registers.scala 14:20] |
| reg [31:0] reg_31; // @[Registers.scala 14:20] |
| wire [31:0] _GEN_65 = 5'h1 == io_readAddress_0 ? reg_1 : reg_0; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_66 = 5'h2 == io_readAddress_0 ? reg_2 : _GEN_65; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_67 = 5'h3 == io_readAddress_0 ? reg_3 : _GEN_66; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_68 = 5'h4 == io_readAddress_0 ? reg_4 : _GEN_67; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_69 = 5'h5 == io_readAddress_0 ? reg_5 : _GEN_68; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_70 = 5'h6 == io_readAddress_0 ? reg_6 : _GEN_69; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_71 = 5'h7 == io_readAddress_0 ? reg_7 : _GEN_70; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_72 = 5'h8 == io_readAddress_0 ? reg_8 : _GEN_71; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_73 = 5'h9 == io_readAddress_0 ? reg_9 : _GEN_72; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_74 = 5'ha == io_readAddress_0 ? reg_10 : _GEN_73; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_75 = 5'hb == io_readAddress_0 ? reg_11 : _GEN_74; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_76 = 5'hc == io_readAddress_0 ? reg_12 : _GEN_75; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_77 = 5'hd == io_readAddress_0 ? reg_13 : _GEN_76; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_78 = 5'he == io_readAddress_0 ? reg_14 : _GEN_77; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_79 = 5'hf == io_readAddress_0 ? reg_15 : _GEN_78; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_80 = 5'h10 == io_readAddress_0 ? reg_16 : _GEN_79; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_81 = 5'h11 == io_readAddress_0 ? reg_17 : _GEN_80; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_82 = 5'h12 == io_readAddress_0 ? reg_18 : _GEN_81; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_83 = 5'h13 == io_readAddress_0 ? reg_19 : _GEN_82; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_84 = 5'h14 == io_readAddress_0 ? reg_20 : _GEN_83; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_85 = 5'h15 == io_readAddress_0 ? reg_21 : _GEN_84; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_86 = 5'h16 == io_readAddress_0 ? reg_22 : _GEN_85; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_87 = 5'h17 == io_readAddress_0 ? reg_23 : _GEN_86; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_88 = 5'h18 == io_readAddress_0 ? reg_24 : _GEN_87; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_89 = 5'h19 == io_readAddress_0 ? reg_25 : _GEN_88; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_90 = 5'h1a == io_readAddress_0 ? reg_26 : _GEN_89; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_91 = 5'h1b == io_readAddress_0 ? reg_27 : _GEN_90; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_92 = 5'h1c == io_readAddress_0 ? reg_28 : _GEN_91; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_93 = 5'h1d == io_readAddress_0 ? reg_29 : _GEN_92; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_94 = 5'h1e == io_readAddress_0 ? reg_30 : _GEN_93; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_95 = 5'h1f == io_readAddress_0 ? reg_31 : _GEN_94; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_98 = 5'h1 == io_readAddress_1 ? reg_1 : reg_0; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_99 = 5'h2 == io_readAddress_1 ? reg_2 : _GEN_98; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_100 = 5'h3 == io_readAddress_1 ? reg_3 : _GEN_99; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_101 = 5'h4 == io_readAddress_1 ? reg_4 : _GEN_100; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_102 = 5'h5 == io_readAddress_1 ? reg_5 : _GEN_101; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_103 = 5'h6 == io_readAddress_1 ? reg_6 : _GEN_102; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_104 = 5'h7 == io_readAddress_1 ? reg_7 : _GEN_103; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_105 = 5'h8 == io_readAddress_1 ? reg_8 : _GEN_104; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_106 = 5'h9 == io_readAddress_1 ? reg_9 : _GEN_105; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_107 = 5'ha == io_readAddress_1 ? reg_10 : _GEN_106; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_108 = 5'hb == io_readAddress_1 ? reg_11 : _GEN_107; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_109 = 5'hc == io_readAddress_1 ? reg_12 : _GEN_108; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_110 = 5'hd == io_readAddress_1 ? reg_13 : _GEN_109; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_111 = 5'he == io_readAddress_1 ? reg_14 : _GEN_110; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_112 = 5'hf == io_readAddress_1 ? reg_15 : _GEN_111; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_113 = 5'h10 == io_readAddress_1 ? reg_16 : _GEN_112; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_114 = 5'h11 == io_readAddress_1 ? reg_17 : _GEN_113; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_115 = 5'h12 == io_readAddress_1 ? reg_18 : _GEN_114; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_116 = 5'h13 == io_readAddress_1 ? reg_19 : _GEN_115; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_117 = 5'h14 == io_readAddress_1 ? reg_20 : _GEN_116; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_118 = 5'h15 == io_readAddress_1 ? reg_21 : _GEN_117; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_119 = 5'h16 == io_readAddress_1 ? reg_22 : _GEN_118; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_120 = 5'h17 == io_readAddress_1 ? reg_23 : _GEN_119; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_121 = 5'h18 == io_readAddress_1 ? reg_24 : _GEN_120; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_122 = 5'h19 == io_readAddress_1 ? reg_25 : _GEN_121; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_123 = 5'h1a == io_readAddress_1 ? reg_26 : _GEN_122; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_124 = 5'h1b == io_readAddress_1 ? reg_27 : _GEN_123; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_125 = 5'h1c == io_readAddress_1 ? reg_28 : _GEN_124; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_126 = 5'h1d == io_readAddress_1 ? reg_29 : _GEN_125; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_127 = 5'h1e == io_readAddress_1 ? reg_30 : _GEN_126; // @[Registers.scala 23:22 Registers.scala 23:22] |
| wire [31:0] _GEN_128 = 5'h1f == io_readAddress_1 ? reg_31 : _GEN_127; // @[Registers.scala 23:22 Registers.scala 23:22] |
| assign io_readData_0 = io_readAddress_0 == 5'h0 ? 32'h0 : _GEN_95; // @[Registers.scala 20:37 Registers.scala 21:22 Registers.scala 23:22] |
| assign io_readData_1 = io_readAddress_1 == 5'h0 ? 32'h0 : _GEN_128; // @[Registers.scala 20:37 Registers.scala 21:22 Registers.scala 23:22] |
| always @(posedge clock) begin |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_0 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h0 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_0 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_1 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h1 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_1 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_2 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h2 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_2 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_3 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h3 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_3 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_4 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h4 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_4 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_5 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h5 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_5 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_6 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h6 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_6 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_7 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h7 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_7 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_8 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h8 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_8 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_9 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h9 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_9 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_10 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'ha == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_10 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_11 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'hb == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_11 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_12 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'hc == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_12 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_13 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'hd == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_13 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_14 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'he == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_14 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_15 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'hf == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_15 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_16 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h10 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_16 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_17 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h11 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_17 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_18 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h12 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_18 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_19 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h13 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_19 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_20 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h14 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_20 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_21 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h15 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_21 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_22 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h16 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_22 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_23 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h17 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_23 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_24 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h18 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_24 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_25 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h19 == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_25 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_26 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h1a == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_26 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_27 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h1b == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_27 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_28 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h1c == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_28 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_29 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h1d == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_29 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_30 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h1e == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_30 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| if (reset) begin // @[Registers.scala 14:20] |
| reg_31 <= 32'h0; // @[Registers.scala 14:20] |
| end else if (io_writeEnable) begin // @[Registers.scala 16:24] |
| if (5'h1f == io_writeAddress) begin // @[Registers.scala 17:26] |
| reg_31 <= io_writeData; // @[Registers.scala 17:26] |
| end |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| reg_0 = _RAND_0[31:0]; |
| _RAND_1 = {1{`RANDOM}}; |
| reg_1 = _RAND_1[31:0]; |
| _RAND_2 = {1{`RANDOM}}; |
| reg_2 = _RAND_2[31:0]; |
| _RAND_3 = {1{`RANDOM}}; |
| reg_3 = _RAND_3[31:0]; |
| _RAND_4 = {1{`RANDOM}}; |
| reg_4 = _RAND_4[31:0]; |
| _RAND_5 = {1{`RANDOM}}; |
| reg_5 = _RAND_5[31:0]; |
| _RAND_6 = {1{`RANDOM}}; |
| reg_6 = _RAND_6[31:0]; |
| _RAND_7 = {1{`RANDOM}}; |
| reg_7 = _RAND_7[31:0]; |
| _RAND_8 = {1{`RANDOM}}; |
| reg_8 = _RAND_8[31:0]; |
| _RAND_9 = {1{`RANDOM}}; |
| reg_9 = _RAND_9[31:0]; |
| _RAND_10 = {1{`RANDOM}}; |
| reg_10 = _RAND_10[31:0]; |
| _RAND_11 = {1{`RANDOM}}; |
| reg_11 = _RAND_11[31:0]; |
| _RAND_12 = {1{`RANDOM}}; |
| reg_12 = _RAND_12[31:0]; |
| _RAND_13 = {1{`RANDOM}}; |
| reg_13 = _RAND_13[31:0]; |
| _RAND_14 = {1{`RANDOM}}; |
| reg_14 = _RAND_14[31:0]; |
| _RAND_15 = {1{`RANDOM}}; |
| reg_15 = _RAND_15[31:0]; |
| _RAND_16 = {1{`RANDOM}}; |
| reg_16 = _RAND_16[31:0]; |
| _RAND_17 = {1{`RANDOM}}; |
| reg_17 = _RAND_17[31:0]; |
| _RAND_18 = {1{`RANDOM}}; |
| reg_18 = _RAND_18[31:0]; |
| _RAND_19 = {1{`RANDOM}}; |
| reg_19 = _RAND_19[31:0]; |
| _RAND_20 = {1{`RANDOM}}; |
| reg_20 = _RAND_20[31:0]; |
| _RAND_21 = {1{`RANDOM}}; |
| reg_21 = _RAND_21[31:0]; |
| _RAND_22 = {1{`RANDOM}}; |
| reg_22 = _RAND_22[31:0]; |
| _RAND_23 = {1{`RANDOM}}; |
| reg_23 = _RAND_23[31:0]; |
| _RAND_24 = {1{`RANDOM}}; |
| reg_24 = _RAND_24[31:0]; |
| _RAND_25 = {1{`RANDOM}}; |
| reg_25 = _RAND_25[31:0]; |
| _RAND_26 = {1{`RANDOM}}; |
| reg_26 = _RAND_26[31:0]; |
| _RAND_27 = {1{`RANDOM}}; |
| reg_27 = _RAND_27[31:0]; |
| _RAND_28 = {1{`RANDOM}}; |
| reg_28 = _RAND_28[31:0]; |
| _RAND_29 = {1{`RANDOM}}; |
| reg_29 = _RAND_29[31:0]; |
| _RAND_30 = {1{`RANDOM}}; |
| reg_30 = _RAND_30[31:0]; |
| _RAND_31 = {1{`RANDOM}}; |
| reg_31 = _RAND_31[31:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module ImmediateGen( |
| input [31:0] io_instruction, |
| output [31:0] io_out |
| ); |
| wire [6:0] opcode = io_instruction[6:0]; // @[ImmediateGen.scala 11:30] |
| wire _T_10 = opcode == 7'h3 | opcode == 7'hf | opcode == 7'h13 | opcode == 7'h1b | opcode == 7'h67 | opcode == 7'h73; // @[ImmediateGen.scala 15:97] |
| wire [11:0] ext_i_lo = io_instruction[31:20]; // @[ImmediateGen.scala 17:31] |
| wire [19:0] ext_i_hi = ext_i_lo[11] ? 20'hfffff : 20'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] ext_i = {ext_i_hi,ext_i_lo}; // @[Cat.scala 30:58] |
| wire [19:0] ext_u_hi = io_instruction[31:12]; // @[ImmediateGen.scala 24:33] |
| wire [31:0] ext_u = {ext_u_hi,12'h0}; // @[Cat.scala 30:58] |
| wire [6:0] imm_s_hi = io_instruction[31:25]; // @[ImmediateGen.scala 30:37] |
| wire [4:0] imm_s_lo = io_instruction[11:7]; // @[ImmediateGen.scala 30:61] |
| wire [11:0] ext_s_lo = {imm_s_hi,imm_s_lo}; // @[Cat.scala 30:58] |
| wire [19:0] ext_s_hi = ext_s_lo[11] ? 20'hfffff : 20'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] ext_s = {ext_s_hi,imm_s_hi,imm_s_lo}; // @[Cat.scala 30:58] |
| wire imm_sb_hi_hi = io_instruction[31]; // @[ImmediateGen.scala 37:23] |
| wire imm_sb_hi_lo = io_instruction[7]; // @[ImmediateGen.scala 38:23] |
| wire [5:0] imm_sb_lo_hi = io_instruction[30:25]; // @[ImmediateGen.scala 39:23] |
| wire [3:0] imm_sb_lo_lo = io_instruction[11:8]; // @[ImmediateGen.scala 40:23] |
| wire [11:0] ext_sb_hi_lo = {imm_sb_hi_hi,imm_sb_hi_lo,imm_sb_lo_hi,imm_sb_lo_lo}; // @[Cat.scala 30:58] |
| wire [18:0] ext_sb_hi_hi = ext_sb_hi_lo[11] ? 19'h7ffff : 19'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] ext_sb = {ext_sb_hi_hi,imm_sb_hi_hi,imm_sb_hi_lo,imm_sb_lo_hi,imm_sb_lo_lo,1'h0}; // @[Cat.scala 30:58] |
| wire [7:0] imm_uj_hi_lo = io_instruction[19:12]; // @[ImmediateGen.scala 50:21] |
| wire imm_uj_lo_hi = io_instruction[20]; // @[ImmediateGen.scala 51:21] |
| wire [9:0] imm_uj_lo_lo = io_instruction[30:21]; // @[ImmediateGen.scala 52:21] |
| wire [19:0] ext_uj_hi_lo = {imm_sb_hi_hi,imm_uj_hi_lo,imm_uj_lo_hi,imm_uj_lo_lo}; // @[Cat.scala 30:58] |
| wire [10:0] ext_uj_hi_hi = ext_uj_hi_lo[19] ? 11'h7ff : 11'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] ext_uj = {ext_uj_hi_hi,imm_sb_hi_hi,imm_uj_hi_lo,imm_uj_lo_hi,imm_uj_lo_lo,1'h0}; // @[Cat.scala 30:58] |
| wire [31:0] _GEN_0 = opcode == 7'h63 ? ext_sb : ext_uj; // @[ImmediateGen.scala 35:32 ImmediateGen.scala 43:14 ImmediateGen.scala 55:12] |
| wire [31:0] _GEN_1 = opcode == 7'h23 ? ext_s : _GEN_0; // @[ImmediateGen.scala 29:32 ImmediateGen.scala 32:14] |
| wire [31:0] _GEN_2 = opcode == 7'h17 | opcode == 7'h37 ? ext_u : _GEN_1; // @[ImmediateGen.scala 23:51 ImmediateGen.scala 26:14] |
| assign io_out = _T_10 ? ext_i : _GEN_2; // @[ImmediateGen.scala 16:5 ImmediateGen.scala 19:12] |
| endmodule |
| module BranchUnit( |
| input io_branch, |
| input [2:0] io_funct3, |
| input [31:0] io_rd1, |
| input [31:0] io_rd2, |
| input io_take_branch, |
| output io_taken |
| ); |
| wire _T = 3'h0 == io_funct3; // @[Conditional.scala 37:30] |
| wire _T_1 = 3'h1 == io_funct3; // @[Conditional.scala 37:30] |
| wire _T_2 = 3'h4 == io_funct3; // @[Conditional.scala 37:30] |
| wire _T_3 = 3'h5 == io_funct3; // @[Conditional.scala 37:30] |
| wire _T_4 = 3'h6 == io_funct3; // @[Conditional.scala 37:30] |
| wire _check_T_9 = io_rd1 >= io_rd2; // @[BranchUnit.scala 28:32] |
| wire _GEN_1 = _T_4 ? io_rd1 < io_rd2 : _check_T_9; // @[Conditional.scala 39:67 BranchUnit.scala 27:21] |
| wire _GEN_2 = _T_3 ? $signed(io_rd1) >= $signed(io_rd2) : _GEN_1; // @[Conditional.scala 39:67 BranchUnit.scala 26:21] |
| wire _GEN_3 = _T_2 ? $signed(io_rd1) < $signed(io_rd2) : _GEN_2; // @[Conditional.scala 39:67 BranchUnit.scala 25:21] |
| wire _GEN_4 = _T_1 ? io_rd1 != io_rd2 : _GEN_3; // @[Conditional.scala 39:67 BranchUnit.scala 24:21] |
| wire check = _T ? io_rd1 == io_rd2 : _GEN_4; // @[Conditional.scala 40:58 BranchUnit.scala 23:21] |
| assign io_taken = check & io_branch & io_take_branch; // @[BranchUnit.scala 31:33] |
| endmodule |
| module InstructionDecode( |
| input clock, |
| input reset, |
| input [31:0] io_id_instruction, |
| input [31:0] io_writeData, |
| input [4:0] io_writeReg, |
| input [31:0] io_pcAddress, |
| input io_ctl_writeEnable, |
| input io_id_ex_mem_read, |
| input io_ex_mem_mem_read, |
| input [4:0] io_id_ex_rd, |
| input [4:0] io_ex_mem_rd, |
| input io_id_ex_branch, |
| input [31:0] io_ex_mem_ins, |
| input [31:0] io_mem_wb_ins, |
| input [31:0] io_ex_ins, |
| input [31:0] io_ex_result, |
| input [31:0] io_ex_mem_result, |
| input [31:0] io_mem_wb_result, |
| output [31:0] io_immediate, |
| output [4:0] io_writeRegAddress, |
| output [31:0] io_readData1, |
| output [31:0] io_readData2, |
| output io_func7, |
| output [2:0] io_func3, |
| output io_ctl_aluSrc, |
| output [1:0] io_ctl_memToReg, |
| output io_ctl_regWrite, |
| output io_ctl_memRead, |
| output io_ctl_memWrite, |
| output io_ctl_branch, |
| output [1:0] io_ctl_aluOp, |
| output [1:0] io_ctl_jump, |
| output [1:0] io_ctl_aluSrc1, |
| output io_hdu_pcWrite, |
| output io_hdu_if_reg_write, |
| output io_pcSrc, |
| output [31:0] io_pcPlusOffset, |
| output io_ifid_flush |
| ); |
| wire hdu_io_id_ex_memRead; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_ex_mem_memRead; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_id_ex_branch; // @[InstructionDecode.scala 51:19] |
| wire [4:0] hdu_io_id_ex_rd; // @[InstructionDecode.scala 51:19] |
| wire [4:0] hdu_io_ex_mem_rd; // @[InstructionDecode.scala 51:19] |
| wire [4:0] hdu_io_id_rs1; // @[InstructionDecode.scala 51:19] |
| wire [4:0] hdu_io_id_rs2; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_taken; // @[InstructionDecode.scala 51:19] |
| wire [1:0] hdu_io_jump; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_branch; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_if_reg_write; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_pc_write; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_ctl_mux; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_ifid_flush; // @[InstructionDecode.scala 51:19] |
| wire hdu_io_take_branch; // @[InstructionDecode.scala 51:19] |
| wire [31:0] control_io_in; // @[InstructionDecode.scala 67:23] |
| wire control_io_aluSrc; // @[InstructionDecode.scala 67:23] |
| wire [1:0] control_io_memToReg; // @[InstructionDecode.scala 67:23] |
| wire control_io_regWrite; // @[InstructionDecode.scala 67:23] |
| wire control_io_memRead; // @[InstructionDecode.scala 67:23] |
| wire control_io_memWrite; // @[InstructionDecode.scala 67:23] |
| wire control_io_branch; // @[InstructionDecode.scala 67:23] |
| wire [1:0] control_io_aluOp; // @[InstructionDecode.scala 67:23] |
| wire [1:0] control_io_jump; // @[InstructionDecode.scala 67:23] |
| wire [1:0] control_io_aluSrc1; // @[InstructionDecode.scala 67:23] |
| wire registers_clock; // @[InstructionDecode.scala 86:25] |
| wire registers_reset; // @[InstructionDecode.scala 86:25] |
| wire [4:0] registers_io_readAddress_0; // @[InstructionDecode.scala 86:25] |
| wire [4:0] registers_io_readAddress_1; // @[InstructionDecode.scala 86:25] |
| wire registers_io_writeEnable; // @[InstructionDecode.scala 86:25] |
| wire [4:0] registers_io_writeAddress; // @[InstructionDecode.scala 86:25] |
| wire [31:0] registers_io_writeData; // @[InstructionDecode.scala 86:25] |
| wire [31:0] registers_io_readData_0; // @[InstructionDecode.scala 86:25] |
| wire [31:0] registers_io_readData_1; // @[InstructionDecode.scala 86:25] |
| wire [31:0] immediate_io_instruction; // @[InstructionDecode.scala 117:25] |
| wire [31:0] immediate_io_out; // @[InstructionDecode.scala 117:25] |
| wire bu_io_branch; // @[InstructionDecode.scala 143:18] |
| wire [2:0] bu_io_funct3; // @[InstructionDecode.scala 143:18] |
| wire [31:0] bu_io_rd1; // @[InstructionDecode.scala 143:18] |
| wire [31:0] bu_io_rd2; // @[InstructionDecode.scala 143:18] |
| wire bu_io_take_branch; // @[InstructionDecode.scala 143:18] |
| wire bu_io_taken; // @[InstructionDecode.scala 143:18] |
| wire [31:0] _GEN_2 = io_id_instruction[19:15] == 5'h0 ? 32'h0 : io_writeData; // @[InstructionDecode.scala 98:30 InstructionDecode.scala 99:20 InstructionDecode.scala 101:20] |
| wire [31:0] _GEN_4 = io_id_instruction[24:20] == 5'h0 ? 32'h0 : io_writeData; // @[InstructionDecode.scala 107:30 InstructionDecode.scala 108:20 InstructionDecode.scala 110:20] |
| wire _T_9 = io_id_instruction[19:15] == io_ex_mem_ins[11:7]; // @[InstructionDecode.scala 125:20] |
| wire _T_11 = io_id_instruction[19:15] == io_mem_wb_ins[11:7]; // @[InstructionDecode.scala 127:26] |
| wire [31:0] _GEN_6 = io_id_instruction[19:15] == io_mem_wb_ins[11:7] ? io_mem_wb_result : io_readData1; // @[InstructionDecode.scala 127:52 InstructionDecode.scala 128:14 InstructionDecode.scala 131:14] |
| wire [31:0] _GEN_8 = io_id_instruction[24:20] == io_mem_wb_ins[11:7] ? io_mem_wb_result : io_readData2; // @[InstructionDecode.scala 135:52 InstructionDecode.scala 136:14 InstructionDecode.scala 139:14] |
| wire _T_17 = io_id_instruction[19:15] == io_ex_ins[11:7]; // @[InstructionDecode.scala 153:22] |
| wire [31:0] _GEN_10 = _T_17 ? io_ex_result : io_readData1; // @[InstructionDecode.scala 159:47 InstructionDecode.scala 160:14 InstructionDecode.scala 162:16] |
| wire [31:0] _GEN_11 = _T_11 ? io_mem_wb_result : _GEN_10; // @[InstructionDecode.scala 157:52 InstructionDecode.scala 158:14] |
| wire [31:0] _GEN_12 = _T_9 ? io_ex_mem_result : _GEN_11; // @[InstructionDecode.scala 155:54 InstructionDecode.scala 156:14] |
| wire [31:0] j_offset = io_id_instruction[19:15] == io_ex_ins[11:7] ? io_ex_result : _GEN_12; // @[InstructionDecode.scala 153:43 InstructionDecode.scala 154:16] |
| wire [31:0] _io_pcPlusOffset_T_1 = io_pcAddress + io_immediate; // @[InstructionDecode.scala 167:37] |
| wire [31:0] _io_pcPlusOffset_T_3 = j_offset + io_immediate; // @[InstructionDecode.scala 169:35] |
| wire [31:0] _io_pcPlusOffset_T_5 = io_pcAddress + immediate_io_out; // @[InstructionDecode.scala 172:39] |
| wire [31:0] _GEN_14 = io_ctl_jump == 2'h2 ? _io_pcPlusOffset_T_3 : _io_pcPlusOffset_T_5; // @[InstructionDecode.scala 168:35 InstructionDecode.scala 169:23 InstructionDecode.scala 172:23] |
| HazardUnit hdu ( // @[InstructionDecode.scala 51:19] |
| .io_id_ex_memRead(hdu_io_id_ex_memRead), |
| .io_ex_mem_memRead(hdu_io_ex_mem_memRead), |
| .io_id_ex_branch(hdu_io_id_ex_branch), |
| .io_id_ex_rd(hdu_io_id_ex_rd), |
| .io_ex_mem_rd(hdu_io_ex_mem_rd), |
| .io_id_rs1(hdu_io_id_rs1), |
| .io_id_rs2(hdu_io_id_rs2), |
| .io_taken(hdu_io_taken), |
| .io_jump(hdu_io_jump), |
| .io_branch(hdu_io_branch), |
| .io_if_reg_write(hdu_io_if_reg_write), |
| .io_pc_write(hdu_io_pc_write), |
| .io_ctl_mux(hdu_io_ctl_mux), |
| .io_ifid_flush(hdu_io_ifid_flush), |
| .io_take_branch(hdu_io_take_branch) |
| ); |
| Control control ( // @[InstructionDecode.scala 67:23] |
| .io_in(control_io_in), |
| .io_aluSrc(control_io_aluSrc), |
| .io_memToReg(control_io_memToReg), |
| .io_regWrite(control_io_regWrite), |
| .io_memRead(control_io_memRead), |
| .io_memWrite(control_io_memWrite), |
| .io_branch(control_io_branch), |
| .io_aluOp(control_io_aluOp), |
| .io_jump(control_io_jump), |
| .io_aluSrc1(control_io_aluSrc1) |
| ); |
| Registers registers ( // @[InstructionDecode.scala 86:25] |
| .clock(registers_clock), |
| .reset(registers_reset), |
| .io_readAddress_0(registers_io_readAddress_0), |
| .io_readAddress_1(registers_io_readAddress_1), |
| .io_writeEnable(registers_io_writeEnable), |
| .io_writeAddress(registers_io_writeAddress), |
| .io_writeData(registers_io_writeData), |
| .io_readData_0(registers_io_readData_0), |
| .io_readData_1(registers_io_readData_1) |
| ); |
| ImmediateGen immediate ( // @[InstructionDecode.scala 117:25] |
| .io_instruction(immediate_io_instruction), |
| .io_out(immediate_io_out) |
| ); |
| BranchUnit bu ( // @[InstructionDecode.scala 143:18] |
| .io_branch(bu_io_branch), |
| .io_funct3(bu_io_funct3), |
| .io_rd1(bu_io_rd1), |
| .io_rd2(bu_io_rd2), |
| .io_take_branch(bu_io_take_branch), |
| .io_taken(bu_io_taken) |
| ); |
| assign io_immediate = immediate_io_out; // @[InstructionDecode.scala 119:16] |
| assign io_writeRegAddress = io_id_instruction[11:7]; // @[InstructionDecode.scala 184:42] |
| assign io_readData1 = io_ctl_writeEnable & io_writeReg == io_id_instruction[19:15] ? _GEN_2 : registers_io_readData_0; // @[InstructionDecode.scala 97:60 InstructionDecode.scala 104:18] |
| assign io_readData2 = io_ctl_writeEnable & io_writeReg == io_id_instruction[24:20] ? _GEN_4 : registers_io_readData_1; // @[InstructionDecode.scala 106:60 InstructionDecode.scala 113:18] |
| assign io_func7 = io_id_instruction[30]; // @[InstructionDecode.scala 186:32] |
| assign io_func3 = io_id_instruction[14:12]; // @[InstructionDecode.scala 185:32] |
| assign io_ctl_aluSrc = control_io_aluSrc; // @[InstructionDecode.scala 70:17] |
| assign io_ctl_memToReg = control_io_memToReg; // @[InstructionDecode.scala 74:19] |
| assign io_ctl_regWrite = hdu_io_ctl_mux & io_id_instruction != 32'h13 & control_io_regWrite; // @[InstructionDecode.scala 76:57 InstructionDecode.scala 78:21 InstructionDecode.scala 82:21] |
| assign io_ctl_memRead = control_io_memRead; // @[InstructionDecode.scala 73:18] |
| assign io_ctl_memWrite = hdu_io_ctl_mux & io_id_instruction != 32'h13 & control_io_memWrite; // @[InstructionDecode.scala 76:57 InstructionDecode.scala 77:21 InstructionDecode.scala 81:21] |
| assign io_ctl_branch = control_io_branch; // @[InstructionDecode.scala 72:17] |
| assign io_ctl_aluOp = control_io_aluOp; // @[InstructionDecode.scala 69:16] |
| assign io_ctl_jump = control_io_jump; // @[InstructionDecode.scala 75:15] |
| assign io_ctl_aluSrc1 = control_io_aluSrc1; // @[InstructionDecode.scala 71:18] |
| assign io_hdu_pcWrite = hdu_io_pc_write; // @[InstructionDecode.scala 63:18] |
| assign io_hdu_if_reg_write = hdu_io_if_reg_write; // @[InstructionDecode.scala 64:23] |
| assign io_pcSrc = bu_io_taken | io_ctl_jump != 2'h0; // @[InstructionDecode.scala 175:20] |
| assign io_pcPlusOffset = io_ctl_jump == 2'h1 ? _io_pcPlusOffset_T_1 : _GEN_14; // @[InstructionDecode.scala 166:29 InstructionDecode.scala 167:21] |
| assign io_ifid_flush = hdu_io_ifid_flush; // @[InstructionDecode.scala 182:17] |
| assign hdu_io_id_ex_memRead = io_id_ex_mem_read; // @[InstructionDecode.scala 53:24] |
| assign hdu_io_ex_mem_memRead = io_ex_mem_mem_read; // @[InstructionDecode.scala 55:25] |
| assign hdu_io_id_ex_branch = io_id_ex_branch; // @[InstructionDecode.scala 57:23] |
| assign hdu_io_id_ex_rd = io_id_ex_rd; // @[InstructionDecode.scala 56:19] |
| assign hdu_io_ex_mem_rd = io_ex_mem_rd; // @[InstructionDecode.scala 58:20] |
| assign hdu_io_id_rs1 = io_id_instruction[19:15]; // @[InstructionDecode.scala 59:37] |
| assign hdu_io_id_rs2 = io_id_instruction[24:20]; // @[InstructionDecode.scala 60:37] |
| assign hdu_io_taken = bu_io_taken; // @[InstructionDecode.scala 149:16] |
| assign hdu_io_jump = io_ctl_jump; // @[InstructionDecode.scala 61:15] |
| assign hdu_io_branch = io_ctl_branch; // @[InstructionDecode.scala 62:17] |
| assign control_io_in = io_id_instruction; // @[InstructionDecode.scala 68:17] |
| assign registers_clock = clock; |
| assign registers_reset = reset; |
| assign registers_io_readAddress_0 = io_id_instruction[19:15]; // @[InstructionDecode.scala 88:38] |
| assign registers_io_readAddress_1 = io_id_instruction[24:20]; // @[InstructionDecode.scala 89:38] |
| assign registers_io_writeEnable = io_ctl_writeEnable; // @[InstructionDecode.scala 92:28] |
| assign registers_io_writeAddress = io_writeReg; // @[InstructionDecode.scala 93:29] |
| assign registers_io_writeData = io_writeData; // @[InstructionDecode.scala 94:26] |
| assign immediate_io_instruction = io_id_instruction; // @[InstructionDecode.scala 118:28] |
| assign bu_io_branch = io_ctl_branch; // @[InstructionDecode.scala 144:16] |
| assign bu_io_funct3 = io_id_instruction[14:12]; // @[InstructionDecode.scala 145:36] |
| assign bu_io_rd1 = io_id_instruction[19:15] == io_ex_mem_ins[11:7] ? io_ex_mem_result : _GEN_6; // @[InstructionDecode.scala 125:46 InstructionDecode.scala 126:12] |
| assign bu_io_rd2 = io_id_instruction[24:20] == io_ex_mem_ins[11:7] ? io_ex_mem_result : _GEN_8; // @[InstructionDecode.scala 133:46 InstructionDecode.scala 134:12] |
| assign bu_io_take_branch = hdu_io_take_branch; // @[InstructionDecode.scala 148:21] |
| endmodule |
| module ALU( |
| input [31:0] io_input1, |
| input [31:0] io_input2, |
| input [3:0] io_aluCtl, |
| output [31:0] io_result |
| ); |
| wire _io_result_T = io_aluCtl == 4'h0; // @[ALU.scala 17:18] |
| wire [31:0] _io_result_T_1 = io_input1 & io_input2; // @[ALU.scala 17:41] |
| wire _io_result_T_2 = io_aluCtl == 4'h1; // @[ALU.scala 18:18] |
| wire [31:0] _io_result_T_3 = io_input1 | io_input2; // @[ALU.scala 18:41] |
| wire _io_result_T_4 = io_aluCtl == 4'h2; // @[ALU.scala 19:18] |
| wire [31:0] _io_result_T_6 = io_input1 + io_input2; // @[ALU.scala 19:41] |
| wire _io_result_T_7 = io_aluCtl == 4'h3; // @[ALU.scala 20:18] |
| wire [31:0] _io_result_T_9 = io_input1 - io_input2; // @[ALU.scala 20:41] |
| wire _io_result_T_10 = io_aluCtl == 4'h4; // @[ALU.scala 21:18] |
| wire _io_result_T_13 = $signed(io_input1) < $signed(io_input2); // @[ALU.scala 21:48] |
| wire _io_result_T_14 = io_aluCtl == 4'h5; // @[ALU.scala 22:18] |
| wire _io_result_T_15 = io_input1 < io_input2; // @[ALU.scala 22:41] |
| wire _io_result_T_16 = io_aluCtl == 4'h6; // @[ALU.scala 23:18] |
| wire [62:0] _GEN_0 = {{31'd0}, io_input1}; // @[ALU.scala 23:41] |
| wire [62:0] _io_result_T_18 = _GEN_0 << io_input2[4:0]; // @[ALU.scala 23:41] |
| wire _io_result_T_19 = io_aluCtl == 4'h7; // @[ALU.scala 24:18] |
| wire [31:0] _io_result_T_21 = io_input1 >> io_input2[4:0]; // @[ALU.scala 24:41] |
| wire _io_result_T_22 = io_aluCtl == 4'h8; // @[ALU.scala 25:18] |
| wire [31:0] _io_result_T_26 = $signed(io_input1) >>> io_input2[4:0]; // @[ALU.scala 25:68] |
| wire _io_result_T_27 = io_aluCtl == 4'h9; // @[ALU.scala 26:18] |
| wire [31:0] _io_result_T_28 = io_input1 ^ io_input2; // @[ALU.scala 26:41] |
| wire [31:0] _io_result_T_29 = _io_result_T_27 ? _io_result_T_28 : 32'h0; // @[Mux.scala 98:16] |
| wire [31:0] _io_result_T_30 = _io_result_T_22 ? _io_result_T_26 : _io_result_T_29; // @[Mux.scala 98:16] |
| wire [31:0] _io_result_T_31 = _io_result_T_19 ? _io_result_T_21 : _io_result_T_30; // @[Mux.scala 98:16] |
| wire [62:0] _io_result_T_32 = _io_result_T_16 ? _io_result_T_18 : {{31'd0}, _io_result_T_31}; // @[Mux.scala 98:16] |
| wire [62:0] _io_result_T_33 = _io_result_T_14 ? {{62'd0}, _io_result_T_15} : _io_result_T_32; // @[Mux.scala 98:16] |
| wire [62:0] _io_result_T_34 = _io_result_T_10 ? {{62'd0}, _io_result_T_13} : _io_result_T_33; // @[Mux.scala 98:16] |
| wire [62:0] _io_result_T_35 = _io_result_T_7 ? {{31'd0}, _io_result_T_9} : _io_result_T_34; // @[Mux.scala 98:16] |
| wire [62:0] _io_result_T_36 = _io_result_T_4 ? {{31'd0}, _io_result_T_6} : _io_result_T_35; // @[Mux.scala 98:16] |
| wire [62:0] _io_result_T_37 = _io_result_T_2 ? {{31'd0}, _io_result_T_3} : _io_result_T_36; // @[Mux.scala 98:16] |
| wire [62:0] _io_result_T_38 = _io_result_T ? {{31'd0}, _io_result_T_1} : _io_result_T_37; // @[Mux.scala 98:16] |
| assign io_result = _io_result_T_38[31:0]; // @[ALU.scala 14:13] |
| endmodule |
| module AluControl( |
| input [1:0] io_aluOp, |
| input io_f7, |
| input [2:0] io_f3, |
| input io_aluSrc, |
| output [3:0] io_out |
| ); |
| wire _T_1 = 3'h0 == io_f3; // @[Conditional.scala 37:30] |
| wire _T_3 = ~io_f7; // @[AluControl.scala 38:34] |
| wire [1:0] _GEN_0 = ~io_aluSrc | ~io_f7 ? 2'h2 : 2'h3; // @[AluControl.scala 38:43 AluControl.scala 39:18 AluControl.scala 42:20] |
| wire _T_5 = 3'h1 == io_f3; // @[Conditional.scala 37:30] |
| wire _T_6 = 3'h2 == io_f3; // @[Conditional.scala 37:30] |
| wire _T_7 = 3'h3 == io_f3; // @[Conditional.scala 37:30] |
| wire _T_8 = 3'h5 == io_f3; // @[Conditional.scala 37:30] |
| wire [3:0] _GEN_1 = _T_3 ? 4'h7 : 4'h8; // @[AluControl.scala 55:29 AluControl.scala 56:18 AluControl.scala 58:18] |
| wire _T_10 = 3'h7 == io_f3; // @[Conditional.scala 37:30] |
| wire _T_11 = 3'h6 == io_f3; // @[Conditional.scala 37:30] |
| wire _T_12 = 3'h4 == io_f3; // @[Conditional.scala 37:30] |
| wire [3:0] _GEN_2 = _T_12 ? 4'h9 : 4'hf; // @[Conditional.scala 39:67 AluControl.scala 68:16 AluControl.scala 31:10] |
| wire [3:0] _GEN_3 = _T_11 ? 4'h1 : _GEN_2; // @[Conditional.scala 39:67 AluControl.scala 65:16] |
| wire [3:0] _GEN_4 = _T_10 ? 4'h0 : _GEN_3; // @[Conditional.scala 39:67 AluControl.scala 62:16] |
| wire [3:0] _GEN_5 = _T_8 ? _GEN_1 : _GEN_4; // @[Conditional.scala 39:67] |
| wire [3:0] _GEN_6 = _T_7 ? 4'h5 : _GEN_5; // @[Conditional.scala 39:67 AluControl.scala 52:16] |
| wire [3:0] _GEN_7 = _T_6 ? 4'h4 : _GEN_6; // @[Conditional.scala 39:67 AluControl.scala 49:16] |
| wire [3:0] _GEN_8 = _T_5 ? 4'h6 : _GEN_7; // @[Conditional.scala 39:67 AluControl.scala 46:16] |
| wire [3:0] _GEN_9 = _T_1 ? {{2'd0}, _GEN_0} : _GEN_8; // @[Conditional.scala 40:58] |
| assign io_out = io_aluOp == 2'h0 ? 4'h2 : _GEN_9; // @[AluControl.scala 33:26 AluControl.scala 34:12] |
| endmodule |
| module ForwardingUnit( |
| input [4:0] io_ex_reg_rd, |
| input [4:0] io_mem_reg_rd, |
| input [4:0] io_reg_rs1, |
| input [4:0] io_reg_rs2, |
| input io_ex_regWrite, |
| input io_mem_regWrite, |
| output [1:0] io_forwardA, |
| output [1:0] io_forwardB |
| ); |
| wire _T_1 = io_ex_reg_rd != 5'h0; // @[ForwardingUnit.scala 21:52] |
| wire _T_5 = io_mem_reg_rd != 5'h0; // @[ForwardingUnit.scala 24:53] |
| wire _T_7 = io_reg_rs1 == io_mem_reg_rd & io_mem_reg_rd != 5'h0 & io_mem_regWrite; // @[ForwardingUnit.scala 24:61] |
| wire [1:0] _GEN_0 = _T_7 ? 2'h2 : 2'h0; // @[ForwardingUnit.scala 25:7 ForwardingUnit.scala 26:19 ForwardingUnit.scala 29:19] |
| wire _T_15 = io_reg_rs2 == io_mem_reg_rd & _T_5 & io_mem_regWrite; // @[ForwardingUnit.scala 35:61] |
| wire [1:0] _GEN_2 = _T_15 ? 2'h2 : 2'h0; // @[ForwardingUnit.scala 36:7 ForwardingUnit.scala 37:19 ForwardingUnit.scala 40:19] |
| assign io_forwardA = io_reg_rs1 == io_ex_reg_rd & io_ex_reg_rd != 5'h0 & io_ex_regWrite ? 2'h1 : _GEN_0; // @[ForwardingUnit.scala 21:79 ForwardingUnit.scala 22:17] |
| assign io_forwardB = io_reg_rs2 == io_ex_reg_rd & _T_1 & io_ex_regWrite ? 2'h1 : _GEN_2; // @[ForwardingUnit.scala 32:79 ForwardingUnit.scala 33:17] |
| endmodule |
| module Execute( |
| input [31:0] io_immediate, |
| input [31:0] io_readData1, |
| input [31:0] io_readData2, |
| input [31:0] io_pcAddress, |
| input io_func7, |
| input [2:0] io_func3, |
| input [31:0] io_mem_result, |
| input [31:0] io_wb_result, |
| input io_ex_mem_regWrite, |
| input io_mem_wb_regWrite, |
| input [31:0] io_id_ex_ins, |
| input [31:0] io_ex_mem_ins, |
| input [31:0] io_mem_wb_ins, |
| input io_ctl_aluSrc, |
| input [1:0] io_ctl_aluOp, |
| input [1:0] io_ctl_aluSrc1, |
| output [31:0] io_writeData, |
| output [31:0] io_ALUresult |
| ); |
| wire [31:0] alu_io_input1; // @[Execute.scala 31:19] |
| wire [31:0] alu_io_input2; // @[Execute.scala 31:19] |
| wire [3:0] alu_io_aluCtl; // @[Execute.scala 31:19] |
| wire [31:0] alu_io_result; // @[Execute.scala 31:19] |
| wire [1:0] aluCtl_io_aluOp; // @[Execute.scala 32:22] |
| wire aluCtl_io_f7; // @[Execute.scala 32:22] |
| wire [2:0] aluCtl_io_f3; // @[Execute.scala 32:22] |
| wire aluCtl_io_aluSrc; // @[Execute.scala 32:22] |
| wire [3:0] aluCtl_io_out; // @[Execute.scala 32:22] |
| wire [4:0] ForwardingUnit_io_ex_reg_rd; // @[Execute.scala 33:18] |
| wire [4:0] ForwardingUnit_io_mem_reg_rd; // @[Execute.scala 33:18] |
| wire [4:0] ForwardingUnit_io_reg_rs1; // @[Execute.scala 33:18] |
| wire [4:0] ForwardingUnit_io_reg_rs2; // @[Execute.scala 33:18] |
| wire ForwardingUnit_io_ex_regWrite; // @[Execute.scala 33:18] |
| wire ForwardingUnit_io_mem_regWrite; // @[Execute.scala 33:18] |
| wire [1:0] ForwardingUnit_io_forwardA; // @[Execute.scala 33:18] |
| wire [1:0] ForwardingUnit_io_forwardB; // @[Execute.scala 33:18] |
| wire _inputMux1_T = ForwardingUnit_io_forwardA == 2'h0; // @[Execute.scala 47:20] |
| wire _inputMux1_T_1 = ForwardingUnit_io_forwardA == 2'h1; // @[Execute.scala 48:20] |
| wire _inputMux1_T_2 = ForwardingUnit_io_forwardA == 2'h2; // @[Execute.scala 49:20] |
| wire [31:0] _inputMux1_T_3 = _inputMux1_T_2 ? io_wb_result : 32'h0; // @[Mux.scala 98:16] |
| wire [31:0] _inputMux1_T_4 = _inputMux1_T_1 ? io_mem_result : _inputMux1_T_3; // @[Mux.scala 98:16] |
| wire [31:0] inputMux1 = _inputMux1_T ? io_readData1 : _inputMux1_T_4; // @[Mux.scala 98:16] |
| wire _inputMux2_T = ForwardingUnit_io_forwardB == 2'h0; // @[Execute.scala 55:20] |
| wire _inputMux2_T_1 = ForwardingUnit_io_forwardB == 2'h1; // @[Execute.scala 56:20] |
| wire _inputMux2_T_2 = ForwardingUnit_io_forwardB == 2'h2; // @[Execute.scala 57:20] |
| wire [31:0] _inputMux2_T_3 = _inputMux2_T_2 ? io_wb_result : 32'h0; // @[Mux.scala 98:16] |
| wire [31:0] _inputMux2_T_4 = _inputMux2_T_1 ? io_mem_result : _inputMux2_T_3; // @[Mux.scala 98:16] |
| wire [31:0] inputMux2 = _inputMux2_T ? io_readData2 : _inputMux2_T_4; // @[Mux.scala 98:16] |
| wire _aluIn1_T = io_ctl_aluSrc1 == 2'h1; // @[Execute.scala 64:23] |
| wire _aluIn1_T_1 = io_ctl_aluSrc1 == 2'h2; // @[Execute.scala 65:23] |
| wire [31:0] _aluIn1_T_2 = _aluIn1_T_1 ? 32'h0 : inputMux1; // @[Mux.scala 98:16] |
| ALU alu ( // @[Execute.scala 31:19] |
| .io_input1(alu_io_input1), |
| .io_input2(alu_io_input2), |
| .io_aluCtl(alu_io_aluCtl), |
| .io_result(alu_io_result) |
| ); |
| AluControl aluCtl ( // @[Execute.scala 32:22] |
| .io_aluOp(aluCtl_io_aluOp), |
| .io_f7(aluCtl_io_f7), |
| .io_f3(aluCtl_io_f3), |
| .io_aluSrc(aluCtl_io_aluSrc), |
| .io_out(aluCtl_io_out) |
| ); |
| ForwardingUnit ForwardingUnit ( // @[Execute.scala 33:18] |
| .io_ex_reg_rd(ForwardingUnit_io_ex_reg_rd), |
| .io_mem_reg_rd(ForwardingUnit_io_mem_reg_rd), |
| .io_reg_rs1(ForwardingUnit_io_reg_rs1), |
| .io_reg_rs2(ForwardingUnit_io_reg_rs2), |
| .io_ex_regWrite(ForwardingUnit_io_ex_regWrite), |
| .io_mem_regWrite(ForwardingUnit_io_mem_regWrite), |
| .io_forwardA(ForwardingUnit_io_forwardA), |
| .io_forwardB(ForwardingUnit_io_forwardB) |
| ); |
| assign io_writeData = _inputMux2_T ? io_readData2 : _inputMux2_T_4; // @[Mux.scala 98:16] |
| assign io_ALUresult = alu_io_result; // @[Execute.scala 78:16] |
| assign alu_io_input1 = _aluIn1_T ? io_pcAddress : _aluIn1_T_2; // @[Mux.scala 98:16] |
| assign alu_io_input2 = io_ctl_aluSrc ? inputMux2 : io_immediate; // @[Execute.scala 68:19] |
| assign alu_io_aluCtl = aluCtl_io_out; // @[Execute.scala 77:17] |
| assign aluCtl_io_aluOp = io_ctl_aluOp; // @[Execute.scala 72:19] |
| assign aluCtl_io_f7 = io_func7; // @[Execute.scala 71:16] |
| assign aluCtl_io_f3 = io_func3; // @[Execute.scala 70:16] |
| assign aluCtl_io_aluSrc = io_ctl_aluSrc; // @[Execute.scala 73:20] |
| assign ForwardingUnit_io_ex_reg_rd = io_ex_mem_ins[11:7]; // @[Execute.scala 39:32] |
| assign ForwardingUnit_io_mem_reg_rd = io_mem_wb_ins[11:7]; // @[Execute.scala 40:33] |
| assign ForwardingUnit_io_reg_rs1 = io_id_ex_ins[19:15]; // @[Execute.scala 41:29] |
| assign ForwardingUnit_io_reg_rs2 = io_id_ex_ins[24:20]; // @[Execute.scala 42:29] |
| assign ForwardingUnit_io_ex_regWrite = io_ex_mem_regWrite; // @[Execute.scala 37:18] |
| assign ForwardingUnit_io_mem_regWrite = io_mem_wb_regWrite; // @[Execute.scala 38:19] |
| endmodule |
| module MemoryFetch( |
| input clock, |
| input reset, |
| input [31:0] io_aluResultIn, |
| input [31:0] io_writeData, |
| input io_writeEnable, |
| input io_readEnable, |
| output [31:0] io_readData, |
| output io_stall, |
| input [2:0] io_f3, |
| output io_dccmReq_valid, |
| output [31:0] io_dccmReq_bits_addrRequest, |
| output [31:0] io_dccmReq_bits_dataRequest, |
| output [3:0] io_dccmReq_bits_activeByteLane, |
| output io_dccmReq_bits_isWrite, |
| input io_dccmRsp_valid, |
| input [31:0] io_dccmRsp_bits_dataResponse |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| reg [31:0] _RAND_1; |
| `endif // RANDOMIZE_REG_INIT |
| reg [1:0] offset; // @[MemoryFetch.scala 26:23] |
| reg [2:0] funct3; // @[MemoryFetch.scala 27:23] |
| wire [1:0] offsetSW = io_aluResultIn[1:0]; // @[MemoryFetch.scala 28:32] |
| wire _T_3 = offsetSW == 2'h0; // @[MemoryFetch.scala 45:19] |
| wire _T_4 = offsetSW == 2'h1; // @[MemoryFetch.scala 47:25] |
| wire [7:0] _GEN_2 = offsetSW == 2'h2 ? io_writeData[15:8] : io_writeData[15:8]; // @[MemoryFetch.scala 53:33 MemoryFetch.scala 54:16 MemoryFetch.scala 60:16] |
| wire [7:0] _GEN_3 = offsetSW == 2'h2 ? io_writeData[23:16] : io_writeData[23:16]; // @[MemoryFetch.scala 53:33 MemoryFetch.scala 55:16 MemoryFetch.scala 61:16] |
| wire [7:0] _GEN_4 = offsetSW == 2'h2 ? io_writeData[7:0] : io_writeData[31:24]; // @[MemoryFetch.scala 53:33 MemoryFetch.scala 56:16 MemoryFetch.scala 62:16] |
| wire [7:0] _GEN_5 = offsetSW == 2'h2 ? io_writeData[31:24] : io_writeData[7:0]; // @[MemoryFetch.scala 53:33 MemoryFetch.scala 57:16 MemoryFetch.scala 63:16] |
| wire [3:0] _GEN_6 = offsetSW == 2'h2 ? 4'h4 : 4'h8; // @[MemoryFetch.scala 53:33 MemoryFetch.scala 58:38 MemoryFetch.scala 64:38] |
| wire [7:0] _GEN_7 = offsetSW == 2'h1 ? io_writeData[15:8] : _GEN_2; // @[MemoryFetch.scala 47:33 MemoryFetch.scala 48:16] |
| wire [7:0] _GEN_8 = offsetSW == 2'h1 ? io_writeData[7:0] : _GEN_3; // @[MemoryFetch.scala 47:33 MemoryFetch.scala 49:16] |
| wire [7:0] _GEN_9 = offsetSW == 2'h1 ? io_writeData[23:16] : _GEN_4; // @[MemoryFetch.scala 47:33 MemoryFetch.scala 50:16] |
| wire [7:0] _GEN_10 = offsetSW == 2'h1 ? io_writeData[31:24] : _GEN_5; // @[MemoryFetch.scala 47:33 MemoryFetch.scala 51:16] |
| wire [3:0] _GEN_11 = offsetSW == 2'h1 ? 4'h2 : _GEN_6; // @[MemoryFetch.scala 47:33 MemoryFetch.scala 52:38] |
| wire [3:0] _GEN_12 = offsetSW == 2'h0 ? 4'h1 : _GEN_11; // @[MemoryFetch.scala 45:27 MemoryFetch.scala 46:38] |
| wire [7:0] _GEN_13 = offsetSW == 2'h0 ? io_writeData[7:0] : _GEN_7; // @[MemoryFetch.scala 45:27 MemoryFetch.scala 38:12] |
| wire [7:0] _GEN_14 = offsetSW == 2'h0 ? io_writeData[15:8] : _GEN_8; // @[MemoryFetch.scala 45:27 MemoryFetch.scala 39:12] |
| wire [7:0] _GEN_15 = offsetSW == 2'h0 ? io_writeData[23:16] : _GEN_9; // @[MemoryFetch.scala 45:27 MemoryFetch.scala 40:12] |
| wire [7:0] _GEN_16 = offsetSW == 2'h0 ? io_writeData[31:24] : _GEN_10; // @[MemoryFetch.scala 45:27 MemoryFetch.scala 41:12] |
| wire [3:0] _GEN_17 = _T_4 ? 4'h6 : 4'hc; // @[MemoryFetch.scala 73:33 MemoryFetch.scala 75:38 MemoryFetch.scala 82:38] |
| wire [7:0] _GEN_18 = _T_4 ? io_writeData[23:16] : io_writeData[23:16]; // @[MemoryFetch.scala 73:33 MemoryFetch.scala 76:16 MemoryFetch.scala 85:16] |
| wire [7:0] _GEN_19 = _T_4 ? io_writeData[7:0] : io_writeData[31:24]; // @[MemoryFetch.scala 73:33 MemoryFetch.scala 77:16 MemoryFetch.scala 86:16] |
| wire [7:0] _GEN_20 = _T_4 ? io_writeData[15:8] : io_writeData[7:0]; // @[MemoryFetch.scala 73:33 MemoryFetch.scala 78:16 MemoryFetch.scala 83:16] |
| wire [7:0] _GEN_21 = _T_4 ? io_writeData[31:24] : io_writeData[15:8]; // @[MemoryFetch.scala 73:33 MemoryFetch.scala 79:16 MemoryFetch.scala 84:16] |
| wire [3:0] _GEN_22 = _T_3 ? 4'h3 : _GEN_17; // @[MemoryFetch.scala 70:27 MemoryFetch.scala 72:38] |
| wire [7:0] _GEN_23 = _T_3 ? io_writeData[7:0] : _GEN_18; // @[MemoryFetch.scala 70:27 MemoryFetch.scala 38:12] |
| wire [7:0] _GEN_24 = _T_3 ? io_writeData[15:8] : _GEN_19; // @[MemoryFetch.scala 70:27 MemoryFetch.scala 39:12] |
| wire [7:0] _GEN_25 = _T_3 ? io_writeData[23:16] : _GEN_20; // @[MemoryFetch.scala 70:27 MemoryFetch.scala 40:12] |
| wire [7:0] _GEN_26 = _T_3 ? io_writeData[31:24] : _GEN_21; // @[MemoryFetch.scala 70:27 MemoryFetch.scala 41:12] |
| wire [3:0] _GEN_27 = io_writeEnable & io_f3 == 3'h1 ? _GEN_22 : 4'hf; // @[MemoryFetch.scala 68:52 MemoryFetch.scala 91:36] |
| wire [7:0] _GEN_28 = io_writeEnable & io_f3 == 3'h1 ? _GEN_23 : io_writeData[7:0]; // @[MemoryFetch.scala 68:52 MemoryFetch.scala 38:12] |
| wire [7:0] _GEN_29 = io_writeEnable & io_f3 == 3'h1 ? _GEN_24 : io_writeData[15:8]; // @[MemoryFetch.scala 68:52 MemoryFetch.scala 39:12] |
| wire [7:0] _GEN_30 = io_writeEnable & io_f3 == 3'h1 ? _GEN_25 : io_writeData[23:16]; // @[MemoryFetch.scala 68:52 MemoryFetch.scala 40:12] |
| wire [7:0] _GEN_31 = io_writeEnable & io_f3 == 3'h1 ? _GEN_26 : io_writeData[31:24]; // @[MemoryFetch.scala 68:52 MemoryFetch.scala 41:12] |
| wire [7:0] wdata_0 = io_writeEnable & io_f3 == 3'h0 ? _GEN_13 : _GEN_28; // @[MemoryFetch.scala 44:45] |
| wire [7:0] wdata_1 = io_writeEnable & io_f3 == 3'h0 ? _GEN_14 : _GEN_29; // @[MemoryFetch.scala 44:45] |
| wire [7:0] wdata_2 = io_writeEnable & io_f3 == 3'h0 ? _GEN_15 : _GEN_30; // @[MemoryFetch.scala 44:45] |
| wire [7:0] wdata_3 = io_writeEnable & io_f3 == 3'h0 ? _GEN_16 : _GEN_31; // @[MemoryFetch.scala 44:45] |
| wire [15:0] io_dccmReq_bits_dataRequest_lo = {wdata_1,wdata_0}; // @[MemoryFetch.scala 94:46] |
| wire [15:0] io_dccmReq_bits_dataRequest_hi = {wdata_3,wdata_2}; // @[MemoryFetch.scala 94:46] |
| wire _io_dccmReq_valid_T = io_writeEnable | io_readEnable; // @[MemoryFetch.scala 97:42] |
| wire [31:0] rdata = io_dccmRsp_valid ? io_dccmRsp_bits_dataResponse : 32'h0; // @[MemoryFetch.scala 101:15] |
| wire _T_12 = offset == 2'h0; // @[MemoryFetch.scala 111:21] |
| wire [23:0] io_readData_hi = rdata[7] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12] |
| wire [7:0] io_readData_lo = rdata[7:0]; // @[MemoryFetch.scala 113:53] |
| wire [31:0] _io_readData_T_2 = {io_readData_hi,io_readData_lo}; // @[Cat.scala 30:58] |
| wire _T_13 = offset == 2'h1; // @[MemoryFetch.scala 114:28] |
| wire [23:0] io_readData_hi_1 = rdata[15] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12] |
| wire [7:0] io_readData_lo_1 = rdata[15:8]; // @[MemoryFetch.scala 116:55] |
| wire [31:0] _io_readData_T_5 = {io_readData_hi_1,io_readData_lo_1}; // @[Cat.scala 30:58] |
| wire _T_14 = offset == 2'h2; // @[MemoryFetch.scala 117:28] |
| wire [23:0] io_readData_hi_2 = rdata[23] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12] |
| wire [7:0] io_readData_lo_2 = rdata[23:16]; // @[MemoryFetch.scala 119:55] |
| wire [31:0] _io_readData_T_8 = {io_readData_hi_2,io_readData_lo_2}; // @[Cat.scala 30:58] |
| wire [23:0] io_readData_hi_3 = rdata[31] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12] |
| wire [7:0] io_readData_lo_3 = rdata[31:24]; // @[MemoryFetch.scala 122:55] |
| wire [31:0] _io_readData_T_11 = {io_readData_hi_3,io_readData_lo_3}; // @[Cat.scala 30:58] |
| wire [31:0] _GEN_38 = offset == 2'h2 ? _io_readData_T_8 : _io_readData_T_11; // @[MemoryFetch.scala 117:41 MemoryFetch.scala 119:23] |
| wire [31:0] _GEN_39 = offset == 2'h1 ? _io_readData_T_5 : _GEN_38; // @[MemoryFetch.scala 114:41 MemoryFetch.scala 116:23] |
| wire [31:0] _GEN_40 = offset == 2'h0 ? _io_readData_T_2 : _GEN_39; // @[MemoryFetch.scala 111:34 MemoryFetch.scala 113:23] |
| wire [31:0] _io_readData_T_12 = {24'h0,io_readData_lo}; // @[Cat.scala 30:58] |
| wire [31:0] _io_readData_T_13 = {24'h0,io_readData_lo_1}; // @[Cat.scala 30:58] |
| wire [31:0] _io_readData_T_14 = {24'h0,io_readData_lo_2}; // @[Cat.scala 30:58] |
| wire [31:0] _io_readData_T_15 = {24'h0,io_readData_lo_3}; // @[Cat.scala 30:58] |
| wire [31:0] _GEN_42 = _T_14 ? _io_readData_T_14 : _io_readData_T_15; // @[MemoryFetch.scala 136:40 MemoryFetch.scala 138:23] |
| wire [31:0] _GEN_43 = _T_13 ? _io_readData_T_13 : _GEN_42; // @[MemoryFetch.scala 133:40 MemoryFetch.scala 135:23] |
| wire [31:0] _GEN_44 = _T_12 ? _io_readData_T_12 : _GEN_43; // @[MemoryFetch.scala 130:34 MemoryFetch.scala 132:23] |
| wire [15:0] io_readData_lo_8 = rdata[15:0]; // @[MemoryFetch.scala 151:49] |
| wire [31:0] _io_readData_T_16 = {16'h0,io_readData_lo_8}; // @[Cat.scala 30:58] |
| wire [15:0] io_readData_lo_9 = rdata[23:8]; // @[MemoryFetch.scala 154:49] |
| wire [31:0] _io_readData_T_17 = {16'h0,io_readData_lo_9}; // @[Cat.scala 30:58] |
| wire [15:0] io_readData_lo_10 = rdata[31:16]; // @[MemoryFetch.scala 157:49] |
| wire [31:0] _io_readData_T_18 = {16'h0,io_readData_lo_10}; // @[Cat.scala 30:58] |
| wire [31:0] _GEN_46 = _T_13 ? _io_readData_T_17 : _io_readData_T_18; // @[MemoryFetch.scala 152:41 MemoryFetch.scala 154:23] |
| wire [31:0] _GEN_47 = _T_12 ? _io_readData_T_16 : _GEN_46; // @[MemoryFetch.scala 149:34 MemoryFetch.scala 151:23] |
| wire [15:0] io_readData_hi_11 = rdata[15] ? 16'hffff : 16'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] _io_readData_T_21 = {io_readData_hi_11,io_readData_lo_8}; // @[Cat.scala 30:58] |
| wire [15:0] io_readData_hi_12 = rdata[23] ? 16'hffff : 16'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] _io_readData_T_24 = {io_readData_hi_12,io_readData_lo_9}; // @[Cat.scala 30:58] |
| wire [15:0] io_readData_hi_13 = rdata[31] ? 16'hffff : 16'h0; // @[Bitwise.scala 72:12] |
| wire [31:0] _io_readData_T_27 = {io_readData_hi_13,io_readData_lo_10}; // @[Cat.scala 30:58] |
| wire [31:0] _GEN_49 = _T_13 ? _io_readData_T_24 : _io_readData_T_27; // @[MemoryFetch.scala 168:41 MemoryFetch.scala 170:23] |
| wire [31:0] _GEN_50 = _T_12 ? _io_readData_T_21 : _GEN_49; // @[MemoryFetch.scala 165:34 MemoryFetch.scala 167:23] |
| wire [31:0] _GEN_52 = funct3 == 3'h5 ? _GEN_47 : _GEN_50; // @[MemoryFetch.scala 147:38] |
| wire [31:0] _GEN_53 = funct3 == 3'h4 ? _GEN_44 : _GEN_52; // @[MemoryFetch.scala 128:38] |
| wire [31:0] _GEN_54 = funct3 == 3'h0 ? _GEN_40 : _GEN_53; // @[MemoryFetch.scala 109:38] |
| wire _T_31 = io_writeEnable & io_aluResultIn[31:28] == 4'h8; // @[MemoryFetch.scala 188:23] |
| assign io_readData = funct3 == 3'h2 ? rdata : _GEN_54; // @[MemoryFetch.scala 105:31 MemoryFetch.scala 107:19] |
| assign io_stall = _io_dccmReq_valid_T & ~io_dccmRsp_valid; // @[MemoryFetch.scala 99:49] |
| assign io_dccmReq_valid = io_writeEnable | io_readEnable; // @[MemoryFetch.scala 97:42] |
| assign io_dccmReq_bits_addrRequest = io_aluResultIn; // @[MemoryFetch.scala 95:31] |
| assign io_dccmReq_bits_dataRequest = {io_dccmReq_bits_dataRequest_hi,io_dccmReq_bits_dataRequest_lo}; // @[MemoryFetch.scala 94:46] |
| assign io_dccmReq_bits_activeByteLane = io_writeEnable & io_f3 == 3'h0 ? _GEN_12 : _GEN_27; // @[MemoryFetch.scala 44:45] |
| assign io_dccmReq_bits_isWrite = io_writeEnable; // @[MemoryFetch.scala 96:27] |
| always @(posedge clock) begin |
| if (reset) begin // @[MemoryFetch.scala 26:23] |
| offset <= 2'h0; // @[MemoryFetch.scala 26:23] |
| end else if (io_aluResultIn != 32'h0) begin // @[MemoryFetch.scala 30:31] |
| offset <= offsetSW; // @[MemoryFetch.scala 32:12] |
| end |
| if (reset) begin // @[MemoryFetch.scala 27:23] |
| funct3 <= 3'h0; // @[MemoryFetch.scala 27:23] |
| end else if (io_aluResultIn != 32'h0) begin // @[MemoryFetch.scala 30:31] |
| funct3 <= io_f3; // @[MemoryFetch.scala 31:12] |
| end |
| `ifndef SYNTHESIS |
| `ifdef PRINTF_COND |
| if (`PRINTF_COND) begin |
| `endif |
| if (_T_31 & ~reset) begin |
| $fwrite(32'h80000002,"%x\n",io_writeData); // @[MemoryFetch.scala 189:11] |
| end |
| `ifdef PRINTF_COND |
| end |
| `endif |
| `endif // SYNTHESIS |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| offset = _RAND_0[1:0]; |
| _RAND_1 = {1{`RANDOM}}; |
| funct3 = _RAND_1[2:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module PC( |
| input clock, |
| input reset, |
| input [31:0] io_in, |
| input io_halt, |
| output [31:0] io_out, |
| output [31:0] io_pc4 |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| `endif // RANDOMIZE_REG_INIT |
| reg [31:0] pc_reg; // @[PC.scala 12:23] |
| wire [31:0] _io_pc4_T_2 = $signed(pc_reg) + 32'sh4; // @[PC.scala 15:41] |
| assign io_out = pc_reg; // @[PC.scala 14:10] |
| assign io_pc4 = io_halt ? $signed(pc_reg) : $signed(_io_pc4_T_2); // @[PC.scala 15:16] |
| always @(posedge clock) begin |
| if (reset) begin // @[PC.scala 12:23] |
| pc_reg <= -32'sh4; // @[PC.scala 12:23] |
| end else begin |
| pc_reg <= io_in; // @[PC.scala 13:10] |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| pc_reg = _RAND_0[31:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module Core( |
| input clock, |
| input reset, |
| output io_dmemReq_valid, |
| output [31:0] io_dmemReq_bits_addrRequest, |
| output [31:0] io_dmemReq_bits_dataRequest, |
| output [3:0] io_dmemReq_bits_activeByteLane, |
| output io_dmemReq_bits_isWrite, |
| input io_dmemRsp_valid, |
| input [31:0] io_dmemRsp_bits_dataResponse, |
| input io_imemReq_ready, |
| output io_imemReq_valid, |
| output [31:0] io_imemReq_bits_addrRequest, |
| input io_imemRsp_valid, |
| input [31:0] io_imemRsp_bits_dataResponse |
| ); |
| `ifdef RANDOMIZE_REG_INIT |
| reg [31:0] _RAND_0; |
| reg [31:0] _RAND_1; |
| reg [31:0] _RAND_2; |
| reg [31:0] _RAND_3; |
| reg [31:0] _RAND_4; |
| reg [31:0] _RAND_5; |
| reg [31:0] _RAND_6; |
| reg [31:0] _RAND_7; |
| reg [31:0] _RAND_8; |
| reg [31:0] _RAND_9; |
| reg [31:0] _RAND_10; |
| reg [31:0] _RAND_11; |
| reg [31:0] _RAND_12; |
| reg [31:0] _RAND_13; |
| reg [31:0] _RAND_14; |
| reg [31:0] _RAND_15; |
| reg [31:0] _RAND_16; |
| reg [31:0] _RAND_17; |
| reg [31:0] _RAND_18; |
| reg [31:0] _RAND_19; |
| reg [31:0] _RAND_20; |
| reg [31:0] _RAND_21; |
| reg [31:0] _RAND_22; |
| reg [31:0] _RAND_23; |
| reg [31:0] _RAND_24; |
| reg [31:0] _RAND_25; |
| reg [31:0] _RAND_26; |
| reg [31:0] _RAND_27; |
| reg [31:0] _RAND_28; |
| reg [31:0] _RAND_29; |
| reg [31:0] _RAND_30; |
| reg [31:0] _RAND_31; |
| `endif // RANDOMIZE_REG_INIT |
| wire [31:0] InstructionFetch_io_address; // @[Core.scala 71:18] |
| wire [31:0] InstructionFetch_io_instruction; // @[Core.scala 71:18] |
| wire InstructionFetch_io_coreInstrReq_ready; // @[Core.scala 71:18] |
| wire InstructionFetch_io_coreInstrReq_valid; // @[Core.scala 71:18] |
| wire [31:0] InstructionFetch_io_coreInstrReq_bits_addrRequest; // @[Core.scala 71:18] |
| wire InstructionFetch_io_coreInstrResp_valid; // @[Core.scala 71:18] |
| wire [31:0] InstructionFetch_io_coreInstrResp_bits_dataResponse; // @[Core.scala 71:18] |
| wire InstructionDecode_clock; // @[Core.scala 72:18] |
| wire InstructionDecode_reset; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_id_instruction; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_writeData; // @[Core.scala 72:18] |
| wire [4:0] InstructionDecode_io_writeReg; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_pcAddress; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ctl_writeEnable; // @[Core.scala 72:18] |
| wire InstructionDecode_io_id_ex_mem_read; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ex_mem_mem_read; // @[Core.scala 72:18] |
| wire [4:0] InstructionDecode_io_id_ex_rd; // @[Core.scala 72:18] |
| wire [4:0] InstructionDecode_io_ex_mem_rd; // @[Core.scala 72:18] |
| wire InstructionDecode_io_id_ex_branch; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_ex_mem_ins; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_mem_wb_ins; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_ex_ins; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_ex_result; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_ex_mem_result; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_mem_wb_result; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_immediate; // @[Core.scala 72:18] |
| wire [4:0] InstructionDecode_io_writeRegAddress; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_readData1; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_readData2; // @[Core.scala 72:18] |
| wire InstructionDecode_io_func7; // @[Core.scala 72:18] |
| wire [2:0] InstructionDecode_io_func3; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ctl_aluSrc; // @[Core.scala 72:18] |
| wire [1:0] InstructionDecode_io_ctl_memToReg; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ctl_regWrite; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ctl_memRead; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ctl_memWrite; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ctl_branch; // @[Core.scala 72:18] |
| wire [1:0] InstructionDecode_io_ctl_aluOp; // @[Core.scala 72:18] |
| wire [1:0] InstructionDecode_io_ctl_jump; // @[Core.scala 72:18] |
| wire [1:0] InstructionDecode_io_ctl_aluSrc1; // @[Core.scala 72:18] |
| wire InstructionDecode_io_hdu_pcWrite; // @[Core.scala 72:18] |
| wire InstructionDecode_io_hdu_if_reg_write; // @[Core.scala 72:18] |
| wire InstructionDecode_io_pcSrc; // @[Core.scala 72:18] |
| wire [31:0] InstructionDecode_io_pcPlusOffset; // @[Core.scala 72:18] |
| wire InstructionDecode_io_ifid_flush; // @[Core.scala 72:18] |
| wire [31:0] Execute_io_immediate; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_readData1; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_readData2; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_pcAddress; // @[Core.scala 73:18] |
| wire Execute_io_func7; // @[Core.scala 73:18] |
| wire [2:0] Execute_io_func3; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_mem_result; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_wb_result; // @[Core.scala 73:18] |
| wire Execute_io_ex_mem_regWrite; // @[Core.scala 73:18] |
| wire Execute_io_mem_wb_regWrite; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_id_ex_ins; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_ex_mem_ins; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_mem_wb_ins; // @[Core.scala 73:18] |
| wire Execute_io_ctl_aluSrc; // @[Core.scala 73:18] |
| wire [1:0] Execute_io_ctl_aluOp; // @[Core.scala 73:18] |
| wire [1:0] Execute_io_ctl_aluSrc1; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_writeData; // @[Core.scala 73:18] |
| wire [31:0] Execute_io_ALUresult; // @[Core.scala 73:18] |
| wire MEM_clock; // @[Core.scala 74:19] |
| wire MEM_reset; // @[Core.scala 74:19] |
| wire [31:0] MEM_io_aluResultIn; // @[Core.scala 74:19] |
| wire [31:0] MEM_io_writeData; // @[Core.scala 74:19] |
| wire MEM_io_writeEnable; // @[Core.scala 74:19] |
| wire MEM_io_readEnable; // @[Core.scala 74:19] |
| wire [31:0] MEM_io_readData; // @[Core.scala 74:19] |
| wire MEM_io_stall; // @[Core.scala 74:19] |
| wire [2:0] MEM_io_f3; // @[Core.scala 74:19] |
| wire MEM_io_dccmReq_valid; // @[Core.scala 74:19] |
| wire [31:0] MEM_io_dccmReq_bits_addrRequest; // @[Core.scala 74:19] |
| wire [31:0] MEM_io_dccmReq_bits_dataRequest; // @[Core.scala 74:19] |
| wire [3:0] MEM_io_dccmReq_bits_activeByteLane; // @[Core.scala 74:19] |
| wire MEM_io_dccmReq_bits_isWrite; // @[Core.scala 74:19] |
| wire MEM_io_dccmRsp_valid; // @[Core.scala 74:19] |
| wire [31:0] MEM_io_dccmRsp_bits_dataResponse; // @[Core.scala 74:19] |
| wire pc_clock; // @[Core.scala 80:18] |
| wire pc_reset; // @[Core.scala 80:18] |
| wire [31:0] pc_io_in; // @[Core.scala 80:18] |
| wire pc_io_halt; // @[Core.scala 80:18] |
| wire [31:0] pc_io_out; // @[Core.scala 80:18] |
| wire [31:0] pc_io_pc4; // @[Core.scala 80:18] |
| reg [31:0] if_reg_pc; // @[Core.scala 24:26] |
| reg [31:0] if_reg_ins; // @[Core.scala 25:27] |
| reg [31:0] id_reg_pc; // @[Core.scala 28:26] |
| reg [31:0] id_reg_rd1; // @[Core.scala 29:27] |
| reg [31:0] id_reg_rd2; // @[Core.scala 30:27] |
| reg [31:0] id_reg_imm; // @[Core.scala 31:27] |
| reg [4:0] id_reg_wra; // @[Core.scala 32:27] |
| reg id_reg_f7; // @[Core.scala 33:26] |
| reg [2:0] id_reg_f3; // @[Core.scala 34:26] |
| reg [31:0] id_reg_ins; // @[Core.scala 35:27] |
| reg id_reg_ctl_aluSrc; // @[Core.scala 36:34] |
| reg [1:0] id_reg_ctl_aluSrc1; // @[Core.scala 37:35] |
| reg [1:0] id_reg_ctl_memToReg; // @[Core.scala 38:36] |
| reg id_reg_ctl_regWrite; // @[Core.scala 39:36] |
| reg id_reg_ctl_memRead; // @[Core.scala 40:35] |
| reg id_reg_ctl_memWrite; // @[Core.scala 41:36] |
| reg [1:0] id_reg_ctl_aluOp; // @[Core.scala 43:33] |
| reg [31:0] ex_reg_result; // @[Core.scala 49:30] |
| reg [31:0] ex_reg_wd; // @[Core.scala 50:26] |
| reg [4:0] ex_reg_wra; // @[Core.scala 51:27] |
| reg [31:0] ex_reg_ins; // @[Core.scala 52:27] |
| reg [1:0] ex_reg_ctl_memToReg; // @[Core.scala 53:36] |
| reg ex_reg_ctl_regWrite; // @[Core.scala 54:36] |
| reg ex_reg_ctl_memRead; // @[Core.scala 55:35] |
| reg ex_reg_ctl_memWrite; // @[Core.scala 56:36] |
| reg [31:0] ex_reg_pc; // @[Core.scala 58:26] |
| reg [31:0] mem_reg_ins; // @[Core.scala 62:28] |
| reg [31:0] mem_reg_result; // @[Core.scala 63:31] |
| reg [4:0] mem_reg_wra; // @[Core.scala 65:28] |
| reg [1:0] mem_reg_ctl_memToReg; // @[Core.scala 66:37] |
| reg mem_reg_ctl_regWrite; // @[Core.scala 67:37] |
| reg [31:0] mem_reg_pc; // @[Core.scala 68:27] |
| wire _pc_io_in_T = ~MEM_io_stall; // @[Core.scala 91:37] |
| wire [31:0] _pc_io_in_T_3 = InstructionDecode_io_pcSrc ? $signed(InstructionDecode_io_pcPlusOffset) : $signed( |
| pc_io_pc4); // @[Core.scala 91:55] |
| wire [4:0] _wb_addr_T = io_dmemRsp_valid ? mem_reg_wra : 5'h0; // @[Core.scala 229:19] |
| wire [31:0] _GEN_14 = mem_reg_ctl_memToReg == 2'h2 ? mem_reg_pc : mem_reg_result; // @[Core.scala 230:44 Core.scala 231:15 Core.scala 235:15] |
| InstructionFetch InstructionFetch ( // @[Core.scala 71:18] |
| .io_address(InstructionFetch_io_address), |
| .io_instruction(InstructionFetch_io_instruction), |
| .io_coreInstrReq_ready(InstructionFetch_io_coreInstrReq_ready), |
| .io_coreInstrReq_valid(InstructionFetch_io_coreInstrReq_valid), |
| .io_coreInstrReq_bits_addrRequest(InstructionFetch_io_coreInstrReq_bits_addrRequest), |
| .io_coreInstrResp_valid(InstructionFetch_io_coreInstrResp_valid), |
| .io_coreInstrResp_bits_dataResponse(InstructionFetch_io_coreInstrResp_bits_dataResponse) |
| ); |
| InstructionDecode InstructionDecode ( // @[Core.scala 72:18] |
| .clock(InstructionDecode_clock), |
| .reset(InstructionDecode_reset), |
| .io_id_instruction(InstructionDecode_io_id_instruction), |
| .io_writeData(InstructionDecode_io_writeData), |
| .io_writeReg(InstructionDecode_io_writeReg), |
| .io_pcAddress(InstructionDecode_io_pcAddress), |
| .io_ctl_writeEnable(InstructionDecode_io_ctl_writeEnable), |
| .io_id_ex_mem_read(InstructionDecode_io_id_ex_mem_read), |
| .io_ex_mem_mem_read(InstructionDecode_io_ex_mem_mem_read), |
| .io_id_ex_rd(InstructionDecode_io_id_ex_rd), |
| .io_ex_mem_rd(InstructionDecode_io_ex_mem_rd), |
| .io_id_ex_branch(InstructionDecode_io_id_ex_branch), |
| .io_ex_mem_ins(InstructionDecode_io_ex_mem_ins), |
| .io_mem_wb_ins(InstructionDecode_io_mem_wb_ins), |
| .io_ex_ins(InstructionDecode_io_ex_ins), |
| .io_ex_result(InstructionDecode_io_ex_result), |
| .io_ex_mem_result(InstructionDecode_io_ex_mem_result), |
| .io_mem_wb_result(InstructionDecode_io_mem_wb_result), |
| .io_immediate(InstructionDecode_io_immediate), |
| .io_writeRegAddress(InstructionDecode_io_writeRegAddress), |
| .io_readData1(InstructionDecode_io_readData1), |
| .io_readData2(InstructionDecode_io_readData2), |
| .io_func7(InstructionDecode_io_func7), |
| .io_func3(InstructionDecode_io_func3), |
| .io_ctl_aluSrc(InstructionDecode_io_ctl_aluSrc), |
| .io_ctl_memToReg(InstructionDecode_io_ctl_memToReg), |
| .io_ctl_regWrite(InstructionDecode_io_ctl_regWrite), |
| .io_ctl_memRead(InstructionDecode_io_ctl_memRead), |
| .io_ctl_memWrite(InstructionDecode_io_ctl_memWrite), |
| .io_ctl_branch(InstructionDecode_io_ctl_branch), |
| .io_ctl_aluOp(InstructionDecode_io_ctl_aluOp), |
| .io_ctl_jump(InstructionDecode_io_ctl_jump), |
| .io_ctl_aluSrc1(InstructionDecode_io_ctl_aluSrc1), |
| .io_hdu_pcWrite(InstructionDecode_io_hdu_pcWrite), |
| .io_hdu_if_reg_write(InstructionDecode_io_hdu_if_reg_write), |
| .io_pcSrc(InstructionDecode_io_pcSrc), |
| .io_pcPlusOffset(InstructionDecode_io_pcPlusOffset), |
| .io_ifid_flush(InstructionDecode_io_ifid_flush) |
| ); |
| Execute Execute ( // @[Core.scala 73:18] |
| .io_immediate(Execute_io_immediate), |
| .io_readData1(Execute_io_readData1), |
| .io_readData2(Execute_io_readData2), |
| .io_pcAddress(Execute_io_pcAddress), |
| .io_func7(Execute_io_func7), |
| .io_func3(Execute_io_func3), |
| .io_mem_result(Execute_io_mem_result), |
| .io_wb_result(Execute_io_wb_result), |
| .io_ex_mem_regWrite(Execute_io_ex_mem_regWrite), |
| .io_mem_wb_regWrite(Execute_io_mem_wb_regWrite), |
| .io_id_ex_ins(Execute_io_id_ex_ins), |
| .io_ex_mem_ins(Execute_io_ex_mem_ins), |
| .io_mem_wb_ins(Execute_io_mem_wb_ins), |
| .io_ctl_aluSrc(Execute_io_ctl_aluSrc), |
| .io_ctl_aluOp(Execute_io_ctl_aluOp), |
| .io_ctl_aluSrc1(Execute_io_ctl_aluSrc1), |
| .io_writeData(Execute_io_writeData), |
| .io_ALUresult(Execute_io_ALUresult) |
| ); |
| MemoryFetch MEM ( // @[Core.scala 74:19] |
| .clock(MEM_clock), |
| .reset(MEM_reset), |
| .io_aluResultIn(MEM_io_aluResultIn), |
| .io_writeData(MEM_io_writeData), |
| .io_writeEnable(MEM_io_writeEnable), |
| .io_readEnable(MEM_io_readEnable), |
| .io_readData(MEM_io_readData), |
| .io_stall(MEM_io_stall), |
| .io_f3(MEM_io_f3), |
| .io_dccmReq_valid(MEM_io_dccmReq_valid), |
| .io_dccmReq_bits_addrRequest(MEM_io_dccmReq_bits_addrRequest), |
| .io_dccmReq_bits_dataRequest(MEM_io_dccmReq_bits_dataRequest), |
| .io_dccmReq_bits_activeByteLane(MEM_io_dccmReq_bits_activeByteLane), |
| .io_dccmReq_bits_isWrite(MEM_io_dccmReq_bits_isWrite), |
| .io_dccmRsp_valid(MEM_io_dccmRsp_valid), |
| .io_dccmRsp_bits_dataResponse(MEM_io_dccmRsp_bits_dataResponse) |
| ); |
| PC pc ( // @[Core.scala 80:18] |
| .clock(pc_clock), |
| .reset(pc_reset), |
| .io_in(pc_io_in), |
| .io_halt(pc_io_halt), |
| .io_out(pc_io_out), |
| .io_pc4(pc_io_pc4) |
| ); |
| assign io_dmemReq_valid = MEM_io_dccmReq_valid; // @[Core.scala 180:14] |
| assign io_dmemReq_bits_addrRequest = MEM_io_dccmReq_bits_addrRequest; // @[Core.scala 180:14] |
| assign io_dmemReq_bits_dataRequest = MEM_io_dccmReq_bits_dataRequest; // @[Core.scala 180:14] |
| assign io_dmemReq_bits_activeByteLane = MEM_io_dccmReq_bits_activeByteLane; // @[Core.scala 180:14] |
| assign io_dmemReq_bits_isWrite = MEM_io_dccmReq_bits_isWrite; // @[Core.scala 180:14] |
| assign io_imemReq_valid = InstructionFetch_io_coreInstrReq_valid; // @[Core.scala 84:14] |
| assign io_imemReq_bits_addrRequest = InstructionFetch_io_coreInstrReq_bits_addrRequest; // @[Core.scala 84:14] |
| assign InstructionFetch_io_address = pc_io_in; // @[Core.scala 87:32] |
| assign InstructionFetch_io_coreInstrReq_ready = io_imemReq_ready; // @[Core.scala 84:14] |
| assign InstructionFetch_io_coreInstrResp_valid = io_imemRsp_valid; // @[Core.scala 85:20] |
| assign InstructionFetch_io_coreInstrResp_bits_dataResponse = io_imemRsp_bits_dataResponse; // @[Core.scala 85:20] |
| assign InstructionDecode_clock = clock; |
| assign InstructionDecode_reset = reset; |
| assign InstructionDecode_io_id_instruction = if_reg_ins; // @[Core.scala 125:21] |
| assign InstructionDecode_io_writeData = mem_reg_ctl_memToReg == 2'h1 ? MEM_io_readData : _GEN_14; // @[Core.scala 227:38 Core.scala 228:13] |
| assign InstructionDecode_io_writeReg = mem_reg_ctl_memToReg == 2'h1 ? _wb_addr_T : mem_reg_wra; // @[Core.scala 227:38 Core.scala 229:13] |
| assign InstructionDecode_io_pcAddress = if_reg_pc; // @[Core.scala 126:16] |
| assign InstructionDecode_io_ctl_writeEnable = mem_reg_ctl_regWrite; // @[Core.scala 244:22] |
| assign InstructionDecode_io_id_ex_mem_read = id_reg_ctl_memRead; // @[Core.scala 162:21] |
| assign InstructionDecode_io_ex_mem_mem_read = ex_reg_ctl_memRead; // @[Core.scala 163:22] |
| assign InstructionDecode_io_id_ex_rd = id_reg_ins[11:7]; // @[Core.scala 170:28] |
| assign InstructionDecode_io_ex_mem_rd = ex_reg_ins[11:7]; // @[Core.scala 172:29] |
| assign InstructionDecode_io_id_ex_branch = id_reg_ins[6:0] == 7'h63; // @[Core.scala 171:42] |
| assign InstructionDecode_io_ex_mem_ins = ex_reg_ins; // @[Core.scala 131:17] |
| assign InstructionDecode_io_mem_wb_ins = mem_reg_ins; // @[Core.scala 132:17] |
| assign InstructionDecode_io_ex_ins = id_reg_ins; // @[Core.scala 130:13] |
| assign InstructionDecode_io_ex_result = Execute_io_ALUresult; // @[Core.scala 173:16] |
| assign InstructionDecode_io_ex_mem_result = ex_reg_result; // @[Core.scala 133:20] |
| assign InstructionDecode_io_mem_wb_result = mem_reg_ctl_memToReg == 2'h1 ? MEM_io_readData : _GEN_14; // @[Core.scala 227:38 Core.scala 228:13] |
| assign Execute_io_immediate = id_reg_imm; // @[Core.scala 144:16] |
| assign Execute_io_readData1 = id_reg_rd1; // @[Core.scala 145:16] |
| assign Execute_io_readData2 = id_reg_rd2; // @[Core.scala 146:16] |
| assign Execute_io_pcAddress = id_reg_pc; // @[Core.scala 147:16] |
| assign Execute_io_func7 = id_reg_f7; // @[Core.scala 149:12] |
| assign Execute_io_func3 = id_reg_f3; // @[Core.scala 148:12] |
| assign Execute_io_mem_result = ex_reg_result; // @[Core.scala 218:17] |
| assign Execute_io_wb_result = mem_reg_ctl_memToReg == 2'h1 ? MEM_io_readData : _GEN_14; // @[Core.scala 227:38 Core.scala 228:13] |
| assign Execute_io_ex_mem_regWrite = ex_reg_ctl_regWrite; // @[Core.scala 212:22] |
| assign Execute_io_mem_wb_regWrite = mem_reg_ctl_regWrite; // @[Core.scala 242:22] |
| assign Execute_io_id_ex_ins = id_reg_ins; // @[Core.scala 167:16] |
| assign Execute_io_ex_mem_ins = ex_reg_ins; // @[Core.scala 168:17] |
| assign Execute_io_mem_wb_ins = mem_reg_ins; // @[Core.scala 169:17] |
| assign Execute_io_ctl_aluSrc = id_reg_ctl_aluSrc; // @[Core.scala 150:17] |
| assign Execute_io_ctl_aluOp = id_reg_ctl_aluOp; // @[Core.scala 151:16] |
| assign Execute_io_ctl_aluSrc1 = id_reg_ctl_aluSrc1; // @[Core.scala 152:18] |
| assign MEM_clock = clock; |
| assign MEM_reset = reset; |
| assign MEM_io_aluResultIn = ex_reg_result; // @[Core.scala 213:22] |
| assign MEM_io_writeData = ex_reg_wd; // @[Core.scala 214:20] |
| assign MEM_io_writeEnable = ex_reg_ctl_memWrite; // @[Core.scala 216:22] |
| assign MEM_io_readEnable = ex_reg_ctl_memRead; // @[Core.scala 215:21] |
| assign MEM_io_f3 = ex_reg_ins[14:12]; // @[Core.scala 217:26] |
| assign MEM_io_dccmRsp_valid = io_dmemRsp_valid; // @[Core.scala 181:18] |
| assign MEM_io_dccmRsp_bits_dataResponse = io_dmemRsp_bits_dataResponse; // @[Core.scala 181:18] |
| assign pc_clock = clock; |
| assign pc_reset = reset; |
| assign pc_io_in = InstructionDecode_io_hdu_pcWrite & ~MEM_io_stall ? $signed(_pc_io_in_T_3) : $signed(pc_io_out); // @[Core.scala 91:18] |
| assign pc_io_halt = io_imemReq_valid ? 1'h0 : 1'h1; // @[Core.scala 90:20] |
| always @(posedge clock) begin |
| if (reset) begin // @[Core.scala 24:26] |
| if_reg_pc <= 32'h0; // @[Core.scala 24:26] |
| end else if (InstructionDecode_io_hdu_if_reg_write & _pc_io_in_T) begin // @[Core.scala 94:46] |
| if_reg_pc <= pc_io_out; // @[Core.scala 95:15] |
| end |
| if (reset) begin // @[Core.scala 25:27] |
| if_reg_ins <= 32'h0; // @[Core.scala 25:27] |
| end else if (InstructionDecode_io_ifid_flush) begin // @[Core.scala 98:23] |
| if_reg_ins <= 32'h0; // @[Core.scala 99:16] |
| end else if (InstructionDecode_io_hdu_if_reg_write & _pc_io_in_T) begin // @[Core.scala 94:46] |
| if (io_imemRsp_valid) begin // @[Core.scala 88:24] |
| if_reg_ins <= InstructionFetch_io_instruction; |
| end else begin |
| if_reg_ins <= 32'h13; |
| end |
| end |
| if (reset) begin // @[Core.scala 28:26] |
| id_reg_pc <= 32'h0; // @[Core.scala 28:26] |
| end else begin |
| id_reg_pc <= if_reg_pc; // @[Core.scala 114:13] |
| end |
| if (reset) begin // @[Core.scala 29:27] |
| id_reg_rd1 <= 32'h0; // @[Core.scala 29:27] |
| end else begin |
| id_reg_rd1 <= InstructionDecode_io_readData1; // @[Core.scala 107:14] |
| end |
| if (reset) begin // @[Core.scala 30:27] |
| id_reg_rd2 <= 32'h0; // @[Core.scala 30:27] |
| end else begin |
| id_reg_rd2 <= InstructionDecode_io_readData2; // @[Core.scala 108:14] |
| end |
| if (reset) begin // @[Core.scala 31:27] |
| id_reg_imm <= 32'h0; // @[Core.scala 31:27] |
| end else begin |
| id_reg_imm <= InstructionDecode_io_immediate; // @[Core.scala 109:14] |
| end |
| if (reset) begin // @[Core.scala 32:27] |
| id_reg_wra <= 5'h0; // @[Core.scala 32:27] |
| end else begin |
| id_reg_wra <= InstructionDecode_io_writeRegAddress; // @[Core.scala 110:14] |
| end |
| if (reset) begin // @[Core.scala 33:26] |
| id_reg_f7 <= 1'h0; // @[Core.scala 33:26] |
| end else begin |
| id_reg_f7 <= InstructionDecode_io_func7; // @[Core.scala 112:13] |
| end |
| if (reset) begin // @[Core.scala 34:26] |
| id_reg_f3 <= 3'h0; // @[Core.scala 34:26] |
| end else begin |
| id_reg_f3 <= InstructionDecode_io_func3; // @[Core.scala 111:13] |
| end |
| if (reset) begin // @[Core.scala 35:27] |
| id_reg_ins <= 32'h0; // @[Core.scala 35:27] |
| end else begin |
| id_reg_ins <= if_reg_ins; // @[Core.scala 113:14] |
| end |
| if (reset) begin // @[Core.scala 36:34] |
| id_reg_ctl_aluSrc <= 1'h0; // @[Core.scala 36:34] |
| end else begin |
| id_reg_ctl_aluSrc <= InstructionDecode_io_ctl_aluSrc; // @[Core.scala 115:21] |
| end |
| if (reset) begin // @[Core.scala 37:35] |
| id_reg_ctl_aluSrc1 <= 2'h0; // @[Core.scala 37:35] |
| end else begin |
| id_reg_ctl_aluSrc1 <= InstructionDecode_io_ctl_aluSrc1; // @[Core.scala 123:22] |
| end |
| if (reset) begin // @[Core.scala 38:36] |
| id_reg_ctl_memToReg <= 2'h0; // @[Core.scala 38:36] |
| end else begin |
| id_reg_ctl_memToReg <= InstructionDecode_io_ctl_memToReg; // @[Core.scala 116:23] |
| end |
| if (reset) begin // @[Core.scala 39:36] |
| id_reg_ctl_regWrite <= 1'h0; // @[Core.scala 39:36] |
| end else begin |
| id_reg_ctl_regWrite <= InstructionDecode_io_ctl_regWrite; // @[Core.scala 117:23] |
| end |
| if (reset) begin // @[Core.scala 40:35] |
| id_reg_ctl_memRead <= 1'h0; // @[Core.scala 40:35] |
| end else begin |
| id_reg_ctl_memRead <= InstructionDecode_io_ctl_memRead; // @[Core.scala 118:22] |
| end |
| if (reset) begin // @[Core.scala 41:36] |
| id_reg_ctl_memWrite <= 1'h0; // @[Core.scala 41:36] |
| end else begin |
| id_reg_ctl_memWrite <= InstructionDecode_io_ctl_memWrite; // @[Core.scala 119:23] |
| end |
| if (reset) begin // @[Core.scala 43:33] |
| id_reg_ctl_aluOp <= 2'h0; // @[Core.scala 43:33] |
| end else begin |
| id_reg_ctl_aluOp <= InstructionDecode_io_ctl_aluOp; // @[Core.scala 121:20] |
| end |
| if (reset) begin // @[Core.scala 49:30] |
| ex_reg_result <= 32'h0; // @[Core.scala 49:30] |
| end else begin |
| ex_reg_result <= Execute_io_ALUresult; // @[Core.scala 142:17] |
| end |
| if (reset) begin // @[Core.scala 50:26] |
| ex_reg_wd <= 32'h0; // @[Core.scala 50:26] |
| end else begin |
| ex_reg_wd <= Execute_io_writeData; // @[Core.scala 141:13] |
| end |
| if (reset) begin // @[Core.scala 51:27] |
| ex_reg_wra <= 5'h0; // @[Core.scala 51:27] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| ex_reg_wra <= id_reg_wra; // @[Core.scala 156:14] |
| end |
| if (reset) begin // @[Core.scala 52:27] |
| ex_reg_ins <= 32'h0; // @[Core.scala 52:27] |
| end else begin |
| ex_reg_ins <= id_reg_ins; // @[Core.scala 157:14] |
| end |
| if (reset) begin // @[Core.scala 53:36] |
| ex_reg_ctl_memToReg <= 2'h0; // @[Core.scala 53:36] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| ex_reg_ctl_memToReg <= id_reg_ctl_memToReg; // @[Core.scala 158:23] |
| end |
| if (reset) begin // @[Core.scala 54:36] |
| ex_reg_ctl_regWrite <= 1'h0; // @[Core.scala 54:36] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| ex_reg_ctl_regWrite <= id_reg_ctl_regWrite; // @[Core.scala 159:23] |
| end |
| if (reset) begin // @[Core.scala 55:35] |
| ex_reg_ctl_memRead <= 1'h0; // @[Core.scala 55:35] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| ex_reg_ctl_memRead <= id_reg_ctl_memRead; // @[Core.scala 207:24] |
| end |
| if (reset) begin // @[Core.scala 56:36] |
| ex_reg_ctl_memWrite <= 1'h0; // @[Core.scala 56:36] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| ex_reg_ctl_memWrite <= id_reg_ctl_memWrite; // @[Core.scala 208:25] |
| end |
| if (reset) begin // @[Core.scala 58:26] |
| ex_reg_pc <= 32'h0; // @[Core.scala 58:26] |
| end else begin |
| ex_reg_pc <= id_reg_pc; // @[Core.scala 155:13] |
| end |
| if (reset) begin // @[Core.scala 62:28] |
| mem_reg_ins <= 32'h0; // @[Core.scala 62:28] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| mem_reg_ins <= ex_reg_ins; // @[Core.scala 204:17] |
| end |
| if (reset) begin // @[Core.scala 63:31] |
| mem_reg_result <= 32'h0; // @[Core.scala 63:31] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| mem_reg_result <= ex_reg_result; // @[Core.scala 201:20] |
| end |
| if (reset) begin // @[Core.scala 65:28] |
| mem_reg_wra <= 5'h0; // @[Core.scala 65:28] |
| end else begin |
| mem_reg_wra <= ex_reg_wra; // @[Core.scala 210:15] |
| end |
| if (reset) begin // @[Core.scala 66:37] |
| mem_reg_ctl_memToReg <= 2'h0; // @[Core.scala 66:37] |
| end else begin |
| mem_reg_ctl_memToReg <= ex_reg_ctl_memToReg; // @[Core.scala 211:24] |
| end |
| if (reset) begin // @[Core.scala 67:37] |
| mem_reg_ctl_regWrite <= 1'h0; // @[Core.scala 67:37] |
| end else begin |
| mem_reg_ctl_regWrite <= ex_reg_ctl_regWrite; |
| end |
| if (reset) begin // @[Core.scala 68:27] |
| mem_reg_pc <= 32'h0; // @[Core.scala 68:27] |
| end else if (!(MEM_io_stall)) begin // @[Core.scala 184:21] |
| mem_reg_pc <= ex_reg_pc; // @[Core.scala 205:16] |
| end |
| end |
| // Register and memory initialization |
| `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 |
| `ifdef FIRRTL_BEFORE_INITIAL |
| `FIRRTL_BEFORE_INITIAL |
| `endif |
| 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}}; |
| if_reg_pc = _RAND_0[31:0]; |
| _RAND_1 = {1{`RANDOM}}; |
| if_reg_ins = _RAND_1[31:0]; |
| _RAND_2 = {1{`RANDOM}}; |
| id_reg_pc = _RAND_2[31:0]; |
| _RAND_3 = {1{`RANDOM}}; |
| id_reg_rd1 = _RAND_3[31:0]; |
| _RAND_4 = {1{`RANDOM}}; |
| id_reg_rd2 = _RAND_4[31:0]; |
| _RAND_5 = {1{`RANDOM}}; |
| id_reg_imm = _RAND_5[31:0]; |
| _RAND_6 = {1{`RANDOM}}; |
| id_reg_wra = _RAND_6[4:0]; |
| _RAND_7 = {1{`RANDOM}}; |
| id_reg_f7 = _RAND_7[0:0]; |
| _RAND_8 = {1{`RANDOM}}; |
| id_reg_f3 = _RAND_8[2:0]; |
| _RAND_9 = {1{`RANDOM}}; |
| id_reg_ins = _RAND_9[31:0]; |
| _RAND_10 = {1{`RANDOM}}; |
| id_reg_ctl_aluSrc = _RAND_10[0:0]; |
| _RAND_11 = {1{`RANDOM}}; |
| id_reg_ctl_aluSrc1 = _RAND_11[1:0]; |
| _RAND_12 = {1{`RANDOM}}; |
| id_reg_ctl_memToReg = _RAND_12[1:0]; |
| _RAND_13 = {1{`RANDOM}}; |
| id_reg_ctl_regWrite = _RAND_13[0:0]; |
| _RAND_14 = {1{`RANDOM}}; |
| id_reg_ctl_memRead = _RAND_14[0:0]; |
| _RAND_15 = {1{`RANDOM}}; |
| id_reg_ctl_memWrite = _RAND_15[0:0]; |
| _RAND_16 = {1{`RANDOM}}; |
| id_reg_ctl_aluOp = _RAND_16[1:0]; |
| _RAND_17 = {1{`RANDOM}}; |
| ex_reg_result = _RAND_17[31:0]; |
| _RAND_18 = {1{`RANDOM}}; |
| ex_reg_wd = _RAND_18[31:0]; |
| _RAND_19 = {1{`RANDOM}}; |
| ex_reg_wra = _RAND_19[4:0]; |
| _RAND_20 = {1{`RANDOM}}; |
| ex_reg_ins = _RAND_20[31:0]; |
| _RAND_21 = {1{`RANDOM}}; |
| ex_reg_ctl_memToReg = _RAND_21[1:0]; |
| _RAND_22 = {1{`RANDOM}}; |
| ex_reg_ctl_regWrite = _RAND_22[0:0]; |
| _RAND_23 = {1{`RANDOM}}; |
| ex_reg_ctl_memRead = _RAND_23[0:0]; |
| _RAND_24 = {1{`RANDOM}}; |
| ex_reg_ctl_memWrite = _RAND_24[0:0]; |
| _RAND_25 = {1{`RANDOM}}; |
| ex_reg_pc = _RAND_25[31:0]; |
| _RAND_26 = {1{`RANDOM}}; |
| mem_reg_ins = _RAND_26[31:0]; |
| _RAND_27 = {1{`RANDOM}}; |
| mem_reg_result = _RAND_27[31:0]; |
| _RAND_28 = {1{`RANDOM}}; |
| mem_reg_wra = _RAND_28[4:0]; |
| _RAND_29 = {1{`RANDOM}}; |
| mem_reg_ctl_memToReg = _RAND_29[1:0]; |
| _RAND_30 = {1{`RANDOM}}; |
| mem_reg_ctl_regWrite = _RAND_30[0:0]; |
| _RAND_31 = {1{`RANDOM}}; |
| mem_reg_pc = _RAND_31[31:0]; |
| `endif // RANDOMIZE_REG_INIT |
| `endif // RANDOMIZE |
| end // initial |
| `ifdef FIRRTL_AFTER_INITIAL |
| `FIRRTL_AFTER_INITIAL |
| `endif |
| `endif // SYNTHESIS |
| endmodule |
| module Switch1toN( |
| input io_hostIn_valid, |
| input io_hostIn_bits_cyc, |
| input io_hostIn_bits_stb, |
| input io_hostIn_bits_we, |
| input [31:0] io_hostIn_bits_adr, |
| input [31:0] io_hostIn_bits_dat, |
| input [3:0] io_hostIn_bits_sel, |
| output io_hostOut_bits_ack, |
| output [31:0] io_hostOut_bits_dat, |
| output io_hostOut_bits_err, |
| output io_devOut_0_valid, |
| output io_devOut_0_bits_cyc, |
| output io_devOut_0_bits_stb, |
| output io_devOut_0_bits_we, |
| output [31:0] io_devOut_0_bits_adr, |
| output [31:0] io_devOut_0_bits_dat, |
| output [3:0] io_devOut_0_bits_sel, |
| output io_devOut_1_valid, |
| output io_devOut_1_bits_cyc, |
| output io_devOut_1_bits_stb, |
| output io_devOut_1_bits_we, |
| output [31:0] io_devOut_1_bits_adr, |
| output [31:0] io_devOut_1_bits_dat, |
| output [3:0] io_devOut_1_bits_sel, |
| output io_devOut_2_valid, |
| output io_devOut_2_bits_cyc, |
| output io_devOut_2_bits_stb, |
| input io_devIn_0_bits_ack, |
| input [31:0] io_devIn_0_bits_dat, |
| input io_devIn_0_bits_err, |
| input io_devIn_1_bits_ack, |
| input [31:0] io_devIn_1_bits_dat, |
| input io_devIn_1_bits_err, |
| input [31:0] io_devIn_2_bits_dat, |
| input io_devIn_2_bits_err, |
| input [1:0] io_devSel |
| ); |
| wire _io_devOut_0_valid_T = io_devSel == 2'h0; // @[Switch1toN.scala 33:57] |
| wire _io_devOut_1_valid_T = io_devSel == 2'h1; // @[Switch1toN.scala 33:57] |
| wire _GEN_0 = _io_devOut_0_valid_T ? io_devIn_0_bits_err : io_devIn_2_bits_err; // @[Switch1toN.scala 39:35 Switch1toN.scala 40:23 Switch1toN.scala 27:19] |
| wire [31:0] _GEN_1 = _io_devOut_0_valid_T ? io_devIn_0_bits_dat : io_devIn_2_bits_dat; // @[Switch1toN.scala 39:35 Switch1toN.scala 40:23 Switch1toN.scala 27:19] |
| wire _GEN_2 = _io_devOut_0_valid_T & io_devIn_0_bits_ack; // @[Switch1toN.scala 39:35 Switch1toN.scala 40:23 Switch1toN.scala 27:19] |
| assign io_hostOut_bits_ack = _io_devOut_1_valid_T ? io_devIn_1_bits_ack : _GEN_2; // @[Switch1toN.scala 39:35 Switch1toN.scala 40:23] |
| assign io_hostOut_bits_dat = _io_devOut_1_valid_T ? io_devIn_1_bits_dat : _GEN_1; // @[Switch1toN.scala 39:35 Switch1toN.scala 40:23] |
| assign io_hostOut_bits_err = _io_devOut_1_valid_T ? io_devIn_1_bits_err : _GEN_0; // @[Switch1toN.scala 39:35 Switch1toN.scala 40:23] |
| assign io_devOut_0_valid = io_hostIn_valid & io_devSel == 2'h0; // @[Switch1toN.scala 33:43] |
| assign io_devOut_0_bits_cyc = io_hostIn_bits_cyc; // @[Switch1toN.scala 31:33] |
| assign io_devOut_0_bits_stb = io_hostIn_bits_stb; // @[Switch1toN.scala 31:33] |
| assign io_devOut_0_bits_we = io_hostIn_bits_we; // @[Switch1toN.scala 31:33] |
| assign io_devOut_0_bits_adr = io_hostIn_bits_adr; // @[Switch1toN.scala 31:33] |
| assign io_devOut_0_bits_dat = io_hostIn_bits_dat; // @[Switch1toN.scala 31:33] |
| assign io_devOut_0_bits_sel = io_hostIn_bits_sel; // @[Switch1toN.scala 31:33] |
| assign io_devOut_1_valid = io_hostIn_valid & io_devSel == 2'h1; // @[Switch1toN.scala 33:43] |
| assign io_devOut_1_bits_cyc = io_hostIn_bits_cyc; // @[Switch1toN.scala 31:33] |
| assign io_devOut_1_bits_stb = io_hostIn_bits_stb; // @[Switch1toN.scala 31:33] |
| assign io_devOut_1_bits_we = io_hostIn_bits_we; // @[Switch1toN.scala 31:33] |
| assign io_devOut_1_bits_adr = io_hostIn_bits_adr; // @[Switch1toN.scala 31:33] |
| assign io_devOut_1_bits_dat = io_hostIn_bits_dat; // @[Switch1toN.scala 31:33] |
| assign io_devOut_1_bits_sel = io_hostIn_bits_sel; // @[Switch1toN.scala 31:33] |
| assign io_devOut_2_valid = io_hostIn_valid & io_devSel == 2'h2; // @[Switch1toN.scala 23:41] |
| assign io_devOut_2_bits_cyc = io_hostIn_bits_cyc; // @[Switch1toN.scala 31:33] |
| assign io_devOut_2_bits_stb = io_hostIn_bits_stb; // @[Switch1toN.scala 31:33] |
| endmodule |
| module Top( |
| input clock, |
| input reset, |
| output [31:0] io_gpio_o, |
| output [31:0] io_gpio_en_o, |
| input [31:0] io_gpio_i, |
| input io_rx_we_i, |
| input [31:0] io_rx_addr_i, |
| input [31:0] io_rx_wdata_i, |
| input io_rx_reset_i |
| ); |
| wire wb_imem_host_clock; // @[Top.scala 67:28] |
| wire wb_imem_host_reset; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbMasterTransmitter_ready; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbMasterTransmitter_valid; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbMasterTransmitter_bits_cyc; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbMasterTransmitter_bits_stb; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbMasterTransmitter_bits_we; // @[Top.scala 67:28] |
| wire [31:0] wb_imem_host_io_wbMasterTransmitter_bits_adr; // @[Top.scala 67:28] |
| wire [31:0] wb_imem_host_io_wbMasterTransmitter_bits_dat; // @[Top.scala 67:28] |
| wire [3:0] wb_imem_host_io_wbMasterTransmitter_bits_sel; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbSlaveReceiver_ready; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbSlaveReceiver_bits_ack; // @[Top.scala 67:28] |
| wire [31:0] wb_imem_host_io_wbSlaveReceiver_bits_dat; // @[Top.scala 67:28] |
| wire wb_imem_host_io_wbSlaveReceiver_bits_err; // @[Top.scala 67:28] |
| wire wb_imem_host_io_reqIn_ready; // @[Top.scala 67:28] |
| wire wb_imem_host_io_reqIn_valid; // @[Top.scala 67:28] |
| wire [31:0] wb_imem_host_io_reqIn_bits_addrRequest; // @[Top.scala 67:28] |
| wire [31:0] wb_imem_host_io_reqIn_bits_dataRequest; // @[Top.scala 67:28] |
| wire [3:0] wb_imem_host_io_reqIn_bits_activeByteLane; // @[Top.scala 67:28] |
| wire wb_imem_host_io_reqIn_bits_isWrite; // @[Top.scala 67:28] |
| wire wb_imem_host_io_rspOut_valid; // @[Top.scala 67:28] |
| wire [31:0] wb_imem_host_io_rspOut_bits_dataResponse; // @[Top.scala 67:28] |
| wire wb_imem_slave_io_wbSlaveTransmitter_ready; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_wbSlaveTransmitter_bits_ack; // @[Top.scala 68:29] |
| wire [31:0] wb_imem_slave_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_wbSlaveTransmitter_bits_err; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_wbMasterReceiver_ready; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_wbMasterReceiver_valid; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_wbMasterReceiver_bits_cyc; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_wbMasterReceiver_bits_stb; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_wbMasterReceiver_bits_we; // @[Top.scala 68:29] |
| wire [31:0] wb_imem_slave_io_wbMasterReceiver_bits_adr; // @[Top.scala 68:29] |
| wire [31:0] wb_imem_slave_io_wbMasterReceiver_bits_dat; // @[Top.scala 68:29] |
| wire [3:0] wb_imem_slave_io_wbMasterReceiver_bits_sel; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_reqOut_valid; // @[Top.scala 68:29] |
| wire [31:0] wb_imem_slave_io_reqOut_bits_addrRequest; // @[Top.scala 68:29] |
| wire [31:0] wb_imem_slave_io_reqOut_bits_dataRequest; // @[Top.scala 68:29] |
| wire [3:0] wb_imem_slave_io_reqOut_bits_activeByteLane; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_reqOut_bits_isWrite; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_rspIn_valid; // @[Top.scala 68:29] |
| wire [31:0] wb_imem_slave_io_rspIn_bits_dataResponse; // @[Top.scala 68:29] |
| wire wb_imem_slave_io_rspIn_bits_error; // @[Top.scala 68:29] |
| wire wb_dmem_host_clock; // @[Top.scala 69:28] |
| wire wb_dmem_host_reset; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbMasterTransmitter_ready; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbMasterTransmitter_valid; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbMasterTransmitter_bits_cyc; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbMasterTransmitter_bits_stb; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbMasterTransmitter_bits_we; // @[Top.scala 69:28] |
| wire [31:0] wb_dmem_host_io_wbMasterTransmitter_bits_adr; // @[Top.scala 69:28] |
| wire [31:0] wb_dmem_host_io_wbMasterTransmitter_bits_dat; // @[Top.scala 69:28] |
| wire [3:0] wb_dmem_host_io_wbMasterTransmitter_bits_sel; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbSlaveReceiver_ready; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbSlaveReceiver_bits_ack; // @[Top.scala 69:28] |
| wire [31:0] wb_dmem_host_io_wbSlaveReceiver_bits_dat; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_wbSlaveReceiver_bits_err; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_reqIn_ready; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_reqIn_valid; // @[Top.scala 69:28] |
| wire [31:0] wb_dmem_host_io_reqIn_bits_addrRequest; // @[Top.scala 69:28] |
| wire [31:0] wb_dmem_host_io_reqIn_bits_dataRequest; // @[Top.scala 69:28] |
| wire [3:0] wb_dmem_host_io_reqIn_bits_activeByteLane; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_reqIn_bits_isWrite; // @[Top.scala 69:28] |
| wire wb_dmem_host_io_rspOut_valid; // @[Top.scala 69:28] |
| wire [31:0] wb_dmem_host_io_rspOut_bits_dataResponse; // @[Top.scala 69:28] |
| wire wb_dmem_slave_io_wbSlaveTransmitter_ready; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_wbSlaveTransmitter_bits_ack; // @[Top.scala 70:29] |
| wire [31:0] wb_dmem_slave_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_wbSlaveTransmitter_bits_err; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_wbMasterReceiver_ready; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_wbMasterReceiver_valid; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_wbMasterReceiver_bits_cyc; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_wbMasterReceiver_bits_stb; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_wbMasterReceiver_bits_we; // @[Top.scala 70:29] |
| wire [31:0] wb_dmem_slave_io_wbMasterReceiver_bits_adr; // @[Top.scala 70:29] |
| wire [31:0] wb_dmem_slave_io_wbMasterReceiver_bits_dat; // @[Top.scala 70:29] |
| wire [3:0] wb_dmem_slave_io_wbMasterReceiver_bits_sel; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_reqOut_valid; // @[Top.scala 70:29] |
| wire [31:0] wb_dmem_slave_io_reqOut_bits_addrRequest; // @[Top.scala 70:29] |
| wire [31:0] wb_dmem_slave_io_reqOut_bits_dataRequest; // @[Top.scala 70:29] |
| wire [3:0] wb_dmem_slave_io_reqOut_bits_activeByteLane; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_reqOut_bits_isWrite; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_rspIn_valid; // @[Top.scala 70:29] |
| wire [31:0] wb_dmem_slave_io_rspIn_bits_dataResponse; // @[Top.scala 70:29] |
| wire wb_dmem_slave_io_rspIn_bits_error; // @[Top.scala 70:29] |
| wire wb_gpio_slave_io_wbSlaveTransmitter_ready; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_wbSlaveTransmitter_bits_ack; // @[Top.scala 71:29] |
| wire [31:0] wb_gpio_slave_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_wbSlaveTransmitter_bits_err; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_wbMasterReceiver_ready; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_wbMasterReceiver_valid; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_wbMasterReceiver_bits_cyc; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_wbMasterReceiver_bits_stb; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_wbMasterReceiver_bits_we; // @[Top.scala 71:29] |
| wire [31:0] wb_gpio_slave_io_wbMasterReceiver_bits_adr; // @[Top.scala 71:29] |
| wire [31:0] wb_gpio_slave_io_wbMasterReceiver_bits_dat; // @[Top.scala 71:29] |
| wire [3:0] wb_gpio_slave_io_wbMasterReceiver_bits_sel; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_reqOut_valid; // @[Top.scala 71:29] |
| wire [31:0] wb_gpio_slave_io_reqOut_bits_addrRequest; // @[Top.scala 71:29] |
| wire [31:0] wb_gpio_slave_io_reqOut_bits_dataRequest; // @[Top.scala 71:29] |
| wire [3:0] wb_gpio_slave_io_reqOut_bits_activeByteLane; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_reqOut_bits_isWrite; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_rspIn_valid; // @[Top.scala 71:29] |
| wire [31:0] wb_gpio_slave_io_rspIn_bits_dataResponse; // @[Top.scala 71:29] |
| wire wb_gpio_slave_io_rspIn_bits_error; // @[Top.scala 71:29] |
| wire dmem_clock; // @[Top.scala 74:20] |
| wire dmem_reset; // @[Top.scala 74:20] |
| wire dmem_io_req_valid; // @[Top.scala 74:20] |
| wire [31:0] dmem_io_req_bits_addrRequest; // @[Top.scala 74:20] |
| wire [31:0] dmem_io_req_bits_dataRequest; // @[Top.scala 74:20] |
| wire [3:0] dmem_io_req_bits_activeByteLane; // @[Top.scala 74:20] |
| wire dmem_io_req_bits_isWrite; // @[Top.scala 74:20] |
| wire dmem_io_rsp_valid; // @[Top.scala 74:20] |
| wire [31:0] dmem_io_rsp_bits_dataResponse; // @[Top.scala 74:20] |
| wire imem_clock; // @[Top.scala 75:20] |
| wire imem_reset; // @[Top.scala 75:20] |
| wire imem_io_req_valid; // @[Top.scala 75:20] |
| wire [31:0] imem_io_req_bits_addrRequest; // @[Top.scala 75:20] |
| wire imem_io_req_bits_isWrite; // @[Top.scala 75:20] |
| wire imem_io_rsp_valid; // @[Top.scala 75:20] |
| wire [31:0] imem_io_rsp_bits_dataResponse; // @[Top.scala 75:20] |
| wire imem_io_writeEnable; // @[Top.scala 75:20] |
| wire [31:0] imem_io_addrIn; // @[Top.scala 75:20] |
| wire [31:0] imem_io_dataIn; // @[Top.scala 75:20] |
| wire gpio_clock; // @[Top.scala 76:20] |
| wire gpio_reset; // @[Top.scala 76:20] |
| wire gpio_io_req_valid; // @[Top.scala 76:20] |
| wire [31:0] gpio_io_req_bits_addrRequest; // @[Top.scala 76:20] |
| wire [31:0] gpio_io_req_bits_dataRequest; // @[Top.scala 76:20] |
| wire [3:0] gpio_io_req_bits_activeByteLane; // @[Top.scala 76:20] |
| wire gpio_io_req_bits_isWrite; // @[Top.scala 76:20] |
| wire gpio_io_rsp_valid; // @[Top.scala 76:20] |
| wire [31:0] gpio_io_rsp_bits_dataResponse; // @[Top.scala 76:20] |
| wire gpio_io_rsp_bits_error; // @[Top.scala 76:20] |
| wire [31:0] gpio_io_cio_gpio_i; // @[Top.scala 76:20] |
| wire [31:0] gpio_io_cio_gpio_o; // @[Top.scala 76:20] |
| wire [31:0] gpio_io_cio_gpio_en_o; // @[Top.scala 76:20] |
| wire wbErr_clock; // @[Top.scala 77:21] |
| wire wbErr_reset; // @[Top.scala 77:21] |
| wire [31:0] wbErr_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 77:21] |
| wire wbErr_io_wbSlaveTransmitter_bits_err; // @[Top.scala 77:21] |
| wire wbErr_io_wbMasterReceiver_valid; // @[Top.scala 77:21] |
| wire wbErr_io_wbMasterReceiver_bits_cyc; // @[Top.scala 77:21] |
| wire wbErr_io_wbMasterReceiver_bits_stb; // @[Top.scala 77:21] |
| wire core_clock; // @[Top.scala 79:20] |
| wire core_reset; // @[Top.scala 79:20] |
| wire core_io_dmemReq_valid; // @[Top.scala 79:20] |
| wire [31:0] core_io_dmemReq_bits_addrRequest; // @[Top.scala 79:20] |
| wire [31:0] core_io_dmemReq_bits_dataRequest; // @[Top.scala 79:20] |
| wire [3:0] core_io_dmemReq_bits_activeByteLane; // @[Top.scala 79:20] |
| wire core_io_dmemReq_bits_isWrite; // @[Top.scala 79:20] |
| wire core_io_dmemRsp_valid; // @[Top.scala 79:20] |
| wire [31:0] core_io_dmemRsp_bits_dataResponse; // @[Top.scala 79:20] |
| wire core_io_imemReq_ready; // @[Top.scala 79:20] |
| wire core_io_imemReq_valid; // @[Top.scala 79:20] |
| wire [31:0] core_io_imemReq_bits_addrRequest; // @[Top.scala 79:20] |
| wire core_io_imemRsp_valid; // @[Top.scala 79:20] |
| wire [31:0] core_io_imemRsp_bits_dataResponse; // @[Top.scala 79:20] |
| wire switch_io_hostIn_valid; // @[Top.scala 88:22] |
| wire switch_io_hostIn_bits_cyc; // @[Top.scala 88:22] |
| wire switch_io_hostIn_bits_stb; // @[Top.scala 88:22] |
| wire switch_io_hostIn_bits_we; // @[Top.scala 88:22] |
| wire [31:0] switch_io_hostIn_bits_adr; // @[Top.scala 88:22] |
| wire [31:0] switch_io_hostIn_bits_dat; // @[Top.scala 88:22] |
| wire [3:0] switch_io_hostIn_bits_sel; // @[Top.scala 88:22] |
| wire switch_io_hostOut_bits_ack; // @[Top.scala 88:22] |
| wire [31:0] switch_io_hostOut_bits_dat; // @[Top.scala 88:22] |
| wire switch_io_hostOut_bits_err; // @[Top.scala 88:22] |
| wire switch_io_devOut_0_valid; // @[Top.scala 88:22] |
| wire switch_io_devOut_0_bits_cyc; // @[Top.scala 88:22] |
| wire switch_io_devOut_0_bits_stb; // @[Top.scala 88:22] |
| wire switch_io_devOut_0_bits_we; // @[Top.scala 88:22] |
| wire [31:0] switch_io_devOut_0_bits_adr; // @[Top.scala 88:22] |
| wire [31:0] switch_io_devOut_0_bits_dat; // @[Top.scala 88:22] |
| wire [3:0] switch_io_devOut_0_bits_sel; // @[Top.scala 88:22] |
| wire switch_io_devOut_1_valid; // @[Top.scala 88:22] |
| wire switch_io_devOut_1_bits_cyc; // @[Top.scala 88:22] |
| wire switch_io_devOut_1_bits_stb; // @[Top.scala 88:22] |
| wire switch_io_devOut_1_bits_we; // @[Top.scala 88:22] |
| wire [31:0] switch_io_devOut_1_bits_adr; // @[Top.scala 88:22] |
| wire [31:0] switch_io_devOut_1_bits_dat; // @[Top.scala 88:22] |
| wire [3:0] switch_io_devOut_1_bits_sel; // @[Top.scala 88:22] |
| wire switch_io_devOut_2_valid; // @[Top.scala 88:22] |
| wire switch_io_devOut_2_bits_cyc; // @[Top.scala 88:22] |
| wire switch_io_devOut_2_bits_stb; // @[Top.scala 88:22] |
| wire switch_io_devIn_0_bits_ack; // @[Top.scala 88:22] |
| wire [31:0] switch_io_devIn_0_bits_dat; // @[Top.scala 88:22] |
| wire switch_io_devIn_0_bits_err; // @[Top.scala 88:22] |
| wire switch_io_devIn_1_bits_ack; // @[Top.scala 88:22] |
| wire [31:0] switch_io_devIn_1_bits_dat; // @[Top.scala 88:22] |
| wire switch_io_devIn_1_bits_err; // @[Top.scala 88:22] |
| wire [31:0] switch_io_devIn_2_bits_dat; // @[Top.scala 88:22] |
| wire switch_io_devIn_2_bits_err; // @[Top.scala 88:22] |
| wire [1:0] switch_io_devSel; // @[Top.scala 88:22] |
| wire [31:0] _switch_io_devSel_addr_hit_0_T_1 = 32'hfffff000 & wb_dmem_host_io_wbMasterTransmitter_bits_adr; // @[BusDecoder.scala 45:60] |
| wire switch_io_devSel_addr_hit_0 = _switch_io_devSel_addr_hit_0_T_1 == 32'h40000000; // @[BusDecoder.scala 45:68] |
| wire [1:0] switch_io_devSel_id_0 = switch_io_devSel_addr_hit_0 ? 2'h1 : 2'h2; // @[BusDecoder.scala 46:19] |
| wire switch_io_devSel_addr_hit_1 = _switch_io_devSel_addr_hit_0_T_1 == 32'h40001000; // @[BusDecoder.scala 45:68] |
| wire [1:0] switch_io_devSel_id_1 = switch_io_devSel_addr_hit_1 ? 2'h0 : 2'h2; // @[BusDecoder.scala 46:19] |
| wire [1:0] _switch_io_devSel_T = switch_io_devSel_addr_hit_1 ? switch_io_devSel_id_1 : 2'h2; // @[Mux.scala 98:16] |
| WishboneHost wb_imem_host ( // @[Top.scala 67:28] |
| .clock(wb_imem_host_clock), |
| .reset(wb_imem_host_reset), |
| .io_wbMasterTransmitter_ready(wb_imem_host_io_wbMasterTransmitter_ready), |
| .io_wbMasterTransmitter_valid(wb_imem_host_io_wbMasterTransmitter_valid), |
| .io_wbMasterTransmitter_bits_cyc(wb_imem_host_io_wbMasterTransmitter_bits_cyc), |
| .io_wbMasterTransmitter_bits_stb(wb_imem_host_io_wbMasterTransmitter_bits_stb), |
| .io_wbMasterTransmitter_bits_we(wb_imem_host_io_wbMasterTransmitter_bits_we), |
| .io_wbMasterTransmitter_bits_adr(wb_imem_host_io_wbMasterTransmitter_bits_adr), |
| .io_wbMasterTransmitter_bits_dat(wb_imem_host_io_wbMasterTransmitter_bits_dat), |
| .io_wbMasterTransmitter_bits_sel(wb_imem_host_io_wbMasterTransmitter_bits_sel), |
| .io_wbSlaveReceiver_ready(wb_imem_host_io_wbSlaveReceiver_ready), |
| .io_wbSlaveReceiver_bits_ack(wb_imem_host_io_wbSlaveReceiver_bits_ack), |
| .io_wbSlaveReceiver_bits_dat(wb_imem_host_io_wbSlaveReceiver_bits_dat), |
| .io_wbSlaveReceiver_bits_err(wb_imem_host_io_wbSlaveReceiver_bits_err), |
| .io_reqIn_ready(wb_imem_host_io_reqIn_ready), |
| .io_reqIn_valid(wb_imem_host_io_reqIn_valid), |
| .io_reqIn_bits_addrRequest(wb_imem_host_io_reqIn_bits_addrRequest), |
| .io_reqIn_bits_dataRequest(wb_imem_host_io_reqIn_bits_dataRequest), |
| .io_reqIn_bits_activeByteLane(wb_imem_host_io_reqIn_bits_activeByteLane), |
| .io_reqIn_bits_isWrite(wb_imem_host_io_reqIn_bits_isWrite), |
| .io_rspOut_valid(wb_imem_host_io_rspOut_valid), |
| .io_rspOut_bits_dataResponse(wb_imem_host_io_rspOut_bits_dataResponse) |
| ); |
| WishboneDevice wb_imem_slave ( // @[Top.scala 68:29] |
| .io_wbSlaveTransmitter_ready(wb_imem_slave_io_wbSlaveTransmitter_ready), |
| .io_wbSlaveTransmitter_bits_ack(wb_imem_slave_io_wbSlaveTransmitter_bits_ack), |
| .io_wbSlaveTransmitter_bits_dat(wb_imem_slave_io_wbSlaveTransmitter_bits_dat), |
| .io_wbSlaveTransmitter_bits_err(wb_imem_slave_io_wbSlaveTransmitter_bits_err), |
| .io_wbMasterReceiver_ready(wb_imem_slave_io_wbMasterReceiver_ready), |
| .io_wbMasterReceiver_valid(wb_imem_slave_io_wbMasterReceiver_valid), |
| .io_wbMasterReceiver_bits_cyc(wb_imem_slave_io_wbMasterReceiver_bits_cyc), |
| .io_wbMasterReceiver_bits_stb(wb_imem_slave_io_wbMasterReceiver_bits_stb), |
| .io_wbMasterReceiver_bits_we(wb_imem_slave_io_wbMasterReceiver_bits_we), |
| .io_wbMasterReceiver_bits_adr(wb_imem_slave_io_wbMasterReceiver_bits_adr), |
| .io_wbMasterReceiver_bits_dat(wb_imem_slave_io_wbMasterReceiver_bits_dat), |
| .io_wbMasterReceiver_bits_sel(wb_imem_slave_io_wbMasterReceiver_bits_sel), |
| .io_reqOut_valid(wb_imem_slave_io_reqOut_valid), |
| .io_reqOut_bits_addrRequest(wb_imem_slave_io_reqOut_bits_addrRequest), |
| .io_reqOut_bits_dataRequest(wb_imem_slave_io_reqOut_bits_dataRequest), |
| .io_reqOut_bits_activeByteLane(wb_imem_slave_io_reqOut_bits_activeByteLane), |
| .io_reqOut_bits_isWrite(wb_imem_slave_io_reqOut_bits_isWrite), |
| .io_rspIn_valid(wb_imem_slave_io_rspIn_valid), |
| .io_rspIn_bits_dataResponse(wb_imem_slave_io_rspIn_bits_dataResponse), |
| .io_rspIn_bits_error(wb_imem_slave_io_rspIn_bits_error) |
| ); |
| WishboneHost wb_dmem_host ( // @[Top.scala 69:28] |
| .clock(wb_dmem_host_clock), |
| .reset(wb_dmem_host_reset), |
| .io_wbMasterTransmitter_ready(wb_dmem_host_io_wbMasterTransmitter_ready), |
| .io_wbMasterTransmitter_valid(wb_dmem_host_io_wbMasterTransmitter_valid), |
| .io_wbMasterTransmitter_bits_cyc(wb_dmem_host_io_wbMasterTransmitter_bits_cyc), |
| .io_wbMasterTransmitter_bits_stb(wb_dmem_host_io_wbMasterTransmitter_bits_stb), |
| .io_wbMasterTransmitter_bits_we(wb_dmem_host_io_wbMasterTransmitter_bits_we), |
| .io_wbMasterTransmitter_bits_adr(wb_dmem_host_io_wbMasterTransmitter_bits_adr), |
| .io_wbMasterTransmitter_bits_dat(wb_dmem_host_io_wbMasterTransmitter_bits_dat), |
| .io_wbMasterTransmitter_bits_sel(wb_dmem_host_io_wbMasterTransmitter_bits_sel), |
| .io_wbSlaveReceiver_ready(wb_dmem_host_io_wbSlaveReceiver_ready), |
| .io_wbSlaveReceiver_bits_ack(wb_dmem_host_io_wbSlaveReceiver_bits_ack), |
| .io_wbSlaveReceiver_bits_dat(wb_dmem_host_io_wbSlaveReceiver_bits_dat), |
| .io_wbSlaveReceiver_bits_err(wb_dmem_host_io_wbSlaveReceiver_bits_err), |
| .io_reqIn_ready(wb_dmem_host_io_reqIn_ready), |
| .io_reqIn_valid(wb_dmem_host_io_reqIn_valid), |
| .io_reqIn_bits_addrRequest(wb_dmem_host_io_reqIn_bits_addrRequest), |
| .io_reqIn_bits_dataRequest(wb_dmem_host_io_reqIn_bits_dataRequest), |
| .io_reqIn_bits_activeByteLane(wb_dmem_host_io_reqIn_bits_activeByteLane), |
| .io_reqIn_bits_isWrite(wb_dmem_host_io_reqIn_bits_isWrite), |
| .io_rspOut_valid(wb_dmem_host_io_rspOut_valid), |
| .io_rspOut_bits_dataResponse(wb_dmem_host_io_rspOut_bits_dataResponse) |
| ); |
| WishboneDevice wb_dmem_slave ( // @[Top.scala 70:29] |
| .io_wbSlaveTransmitter_ready(wb_dmem_slave_io_wbSlaveTransmitter_ready), |
| .io_wbSlaveTransmitter_bits_ack(wb_dmem_slave_io_wbSlaveTransmitter_bits_ack), |
| .io_wbSlaveTransmitter_bits_dat(wb_dmem_slave_io_wbSlaveTransmitter_bits_dat), |
| .io_wbSlaveTransmitter_bits_err(wb_dmem_slave_io_wbSlaveTransmitter_bits_err), |
| .io_wbMasterReceiver_ready(wb_dmem_slave_io_wbMasterReceiver_ready), |
| .io_wbMasterReceiver_valid(wb_dmem_slave_io_wbMasterReceiver_valid), |
| .io_wbMasterReceiver_bits_cyc(wb_dmem_slave_io_wbMasterReceiver_bits_cyc), |
| .io_wbMasterReceiver_bits_stb(wb_dmem_slave_io_wbMasterReceiver_bits_stb), |
| .io_wbMasterReceiver_bits_we(wb_dmem_slave_io_wbMasterReceiver_bits_we), |
| .io_wbMasterReceiver_bits_adr(wb_dmem_slave_io_wbMasterReceiver_bits_adr), |
| .io_wbMasterReceiver_bits_dat(wb_dmem_slave_io_wbMasterReceiver_bits_dat), |
| .io_wbMasterReceiver_bits_sel(wb_dmem_slave_io_wbMasterReceiver_bits_sel), |
| .io_reqOut_valid(wb_dmem_slave_io_reqOut_valid), |
| .io_reqOut_bits_addrRequest(wb_dmem_slave_io_reqOut_bits_addrRequest), |
| .io_reqOut_bits_dataRequest(wb_dmem_slave_io_reqOut_bits_dataRequest), |
| .io_reqOut_bits_activeByteLane(wb_dmem_slave_io_reqOut_bits_activeByteLane), |
| .io_reqOut_bits_isWrite(wb_dmem_slave_io_reqOut_bits_isWrite), |
| .io_rspIn_valid(wb_dmem_slave_io_rspIn_valid), |
| .io_rspIn_bits_dataResponse(wb_dmem_slave_io_rspIn_bits_dataResponse), |
| .io_rspIn_bits_error(wb_dmem_slave_io_rspIn_bits_error) |
| ); |
| WishboneDevice wb_gpio_slave ( // @[Top.scala 71:29] |
| .io_wbSlaveTransmitter_ready(wb_gpio_slave_io_wbSlaveTransmitter_ready), |
| .io_wbSlaveTransmitter_bits_ack(wb_gpio_slave_io_wbSlaveTransmitter_bits_ack), |
| .io_wbSlaveTransmitter_bits_dat(wb_gpio_slave_io_wbSlaveTransmitter_bits_dat), |
| .io_wbSlaveTransmitter_bits_err(wb_gpio_slave_io_wbSlaveTransmitter_bits_err), |
| .io_wbMasterReceiver_ready(wb_gpio_slave_io_wbMasterReceiver_ready), |
| .io_wbMasterReceiver_valid(wb_gpio_slave_io_wbMasterReceiver_valid), |
| .io_wbMasterReceiver_bits_cyc(wb_gpio_slave_io_wbMasterReceiver_bits_cyc), |
| .io_wbMasterReceiver_bits_stb(wb_gpio_slave_io_wbMasterReceiver_bits_stb), |
| .io_wbMasterReceiver_bits_we(wb_gpio_slave_io_wbMasterReceiver_bits_we), |
| .io_wbMasterReceiver_bits_adr(wb_gpio_slave_io_wbMasterReceiver_bits_adr), |
| .io_wbMasterReceiver_bits_dat(wb_gpio_slave_io_wbMasterReceiver_bits_dat), |
| .io_wbMasterReceiver_bits_sel(wb_gpio_slave_io_wbMasterReceiver_bits_sel), |
| .io_reqOut_valid(wb_gpio_slave_io_reqOut_valid), |
| .io_reqOut_bits_addrRequest(wb_gpio_slave_io_reqOut_bits_addrRequest), |
| .io_reqOut_bits_dataRequest(wb_gpio_slave_io_reqOut_bits_dataRequest), |
| .io_reqOut_bits_activeByteLane(wb_gpio_slave_io_reqOut_bits_activeByteLane), |
| .io_reqOut_bits_isWrite(wb_gpio_slave_io_reqOut_bits_isWrite), |
| .io_rspIn_valid(wb_gpio_slave_io_rspIn_valid), |
| .io_rspIn_bits_dataResponse(wb_gpio_slave_io_rspIn_bits_dataResponse), |
| .io_rspIn_bits_error(wb_gpio_slave_io_rspIn_bits_error) |
| ); |
| SRAM1kb dmem ( // @[Top.scala 74:20] |
| .clock(dmem_clock), |
| .reset(dmem_reset), |
| .io_req_valid(dmem_io_req_valid), |
| .io_req_bits_addrRequest(dmem_io_req_bits_addrRequest), |
| .io_req_bits_dataRequest(dmem_io_req_bits_dataRequest), |
| .io_req_bits_activeByteLane(dmem_io_req_bits_activeByteLane), |
| .io_req_bits_isWrite(dmem_io_req_bits_isWrite), |
| .io_rsp_valid(dmem_io_rsp_valid), |
| .io_rsp_bits_dataResponse(dmem_io_rsp_bits_dataResponse) |
| ); |
| SramImem imem ( // @[Top.scala 75:20] |
| .clock(imem_clock), |
| .reset(imem_reset), |
| .io_req_valid(imem_io_req_valid), |
| .io_req_bits_addrRequest(imem_io_req_bits_addrRequest), |
| .io_req_bits_isWrite(imem_io_req_bits_isWrite), |
| .io_rsp_valid(imem_io_rsp_valid), |
| .io_rsp_bits_dataResponse(imem_io_rsp_bits_dataResponse), |
| .io_writeEnable(imem_io_writeEnable), |
| .io_addrIn(imem_io_addrIn), |
| .io_dataIn(imem_io_dataIn) |
| ); |
| Gpio gpio ( // @[Top.scala 76:20] |
| .clock(gpio_clock), |
| .reset(gpio_reset), |
| .io_req_valid(gpio_io_req_valid), |
| .io_req_bits_addrRequest(gpio_io_req_bits_addrRequest), |
| .io_req_bits_dataRequest(gpio_io_req_bits_dataRequest), |
| .io_req_bits_activeByteLane(gpio_io_req_bits_activeByteLane), |
| .io_req_bits_isWrite(gpio_io_req_bits_isWrite), |
| .io_rsp_valid(gpio_io_rsp_valid), |
| .io_rsp_bits_dataResponse(gpio_io_rsp_bits_dataResponse), |
| .io_rsp_bits_error(gpio_io_rsp_bits_error), |
| .io_cio_gpio_i(gpio_io_cio_gpio_i), |
| .io_cio_gpio_o(gpio_io_cio_gpio_o), |
| .io_cio_gpio_en_o(gpio_io_cio_gpio_en_o) |
| ); |
| WishboneErr wbErr ( // @[Top.scala 77:21] |
| .clock(wbErr_clock), |
| .reset(wbErr_reset), |
| .io_wbSlaveTransmitter_bits_dat(wbErr_io_wbSlaveTransmitter_bits_dat), |
| .io_wbSlaveTransmitter_bits_err(wbErr_io_wbSlaveTransmitter_bits_err), |
| .io_wbMasterReceiver_valid(wbErr_io_wbMasterReceiver_valid), |
| .io_wbMasterReceiver_bits_cyc(wbErr_io_wbMasterReceiver_bits_cyc), |
| .io_wbMasterReceiver_bits_stb(wbErr_io_wbMasterReceiver_bits_stb) |
| ); |
| Core core ( // @[Top.scala 79:20] |
| .clock(core_clock), |
| .reset(core_reset), |
| .io_dmemReq_valid(core_io_dmemReq_valid), |
| .io_dmemReq_bits_addrRequest(core_io_dmemReq_bits_addrRequest), |
| .io_dmemReq_bits_dataRequest(core_io_dmemReq_bits_dataRequest), |
| .io_dmemReq_bits_activeByteLane(core_io_dmemReq_bits_activeByteLane), |
| .io_dmemReq_bits_isWrite(core_io_dmemReq_bits_isWrite), |
| .io_dmemRsp_valid(core_io_dmemRsp_valid), |
| .io_dmemRsp_bits_dataResponse(core_io_dmemRsp_bits_dataResponse), |
| .io_imemReq_ready(core_io_imemReq_ready), |
| .io_imemReq_valid(core_io_imemReq_valid), |
| .io_imemReq_bits_addrRequest(core_io_imemReq_bits_addrRequest), |
| .io_imemRsp_valid(core_io_imemRsp_valid), |
| .io_imemRsp_bits_dataResponse(core_io_imemRsp_bits_dataResponse) |
| ); |
| Switch1toN switch ( // @[Top.scala 88:22] |
| .io_hostIn_valid(switch_io_hostIn_valid), |
| .io_hostIn_bits_cyc(switch_io_hostIn_bits_cyc), |
| .io_hostIn_bits_stb(switch_io_hostIn_bits_stb), |
| .io_hostIn_bits_we(switch_io_hostIn_bits_we), |
| .io_hostIn_bits_adr(switch_io_hostIn_bits_adr), |
| .io_hostIn_bits_dat(switch_io_hostIn_bits_dat), |
| .io_hostIn_bits_sel(switch_io_hostIn_bits_sel), |
| .io_hostOut_bits_ack(switch_io_hostOut_bits_ack), |
| .io_hostOut_bits_dat(switch_io_hostOut_bits_dat), |
| .io_hostOut_bits_err(switch_io_hostOut_bits_err), |
| .io_devOut_0_valid(switch_io_devOut_0_valid), |
| .io_devOut_0_bits_cyc(switch_io_devOut_0_bits_cyc), |
| .io_devOut_0_bits_stb(switch_io_devOut_0_bits_stb), |
| .io_devOut_0_bits_we(switch_io_devOut_0_bits_we), |
| .io_devOut_0_bits_adr(switch_io_devOut_0_bits_adr), |
| .io_devOut_0_bits_dat(switch_io_devOut_0_bits_dat), |
| .io_devOut_0_bits_sel(switch_io_devOut_0_bits_sel), |
| .io_devOut_1_valid(switch_io_devOut_1_valid), |
| .io_devOut_1_bits_cyc(switch_io_devOut_1_bits_cyc), |
| .io_devOut_1_bits_stb(switch_io_devOut_1_bits_stb), |
| .io_devOut_1_bits_we(switch_io_devOut_1_bits_we), |
| .io_devOut_1_bits_adr(switch_io_devOut_1_bits_adr), |
| .io_devOut_1_bits_dat(switch_io_devOut_1_bits_dat), |
| .io_devOut_1_bits_sel(switch_io_devOut_1_bits_sel), |
| .io_devOut_2_valid(switch_io_devOut_2_valid), |
| .io_devOut_2_bits_cyc(switch_io_devOut_2_bits_cyc), |
| .io_devOut_2_bits_stb(switch_io_devOut_2_bits_stb), |
| .io_devIn_0_bits_ack(switch_io_devIn_0_bits_ack), |
| .io_devIn_0_bits_dat(switch_io_devIn_0_bits_dat), |
| .io_devIn_0_bits_err(switch_io_devIn_0_bits_err), |
| .io_devIn_1_bits_ack(switch_io_devIn_1_bits_ack), |
| .io_devIn_1_bits_dat(switch_io_devIn_1_bits_dat), |
| .io_devIn_1_bits_err(switch_io_devIn_1_bits_err), |
| .io_devIn_2_bits_dat(switch_io_devIn_2_bits_dat), |
| .io_devIn_2_bits_err(switch_io_devIn_2_bits_err), |
| .io_devSel(switch_io_devSel) |
| ); |
| assign io_gpio_o = gpio_io_cio_gpio_o; // @[Top.scala 256:34] |
| assign io_gpio_en_o = gpio_io_cio_gpio_en_o; // @[Top.scala 257:40] |
| assign wb_imem_host_clock = clock; |
| assign wb_imem_host_reset = reset; |
| assign wb_imem_host_io_wbMasterTransmitter_ready = wb_imem_slave_io_wbMasterReceiver_ready; // @[Top.scala 231:39] |
| assign wb_imem_host_io_wbSlaveReceiver_bits_ack = wb_imem_slave_io_wbSlaveTransmitter_bits_ack; // @[Top.scala 232:39] |
| assign wb_imem_host_io_wbSlaveReceiver_bits_dat = wb_imem_slave_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 232:39] |
| assign wb_imem_host_io_wbSlaveReceiver_bits_err = wb_imem_slave_io_wbSlaveTransmitter_bits_err; // @[Top.scala 232:39] |
| assign wb_imem_host_io_reqIn_valid = core_io_imemReq_valid; // @[Top.scala 225:25] |
| assign wb_imem_host_io_reqIn_bits_addrRequest = core_io_imemReq_bits_addrRequest; // @[Top.scala 225:25] |
| assign wb_imem_host_io_reqIn_bits_dataRequest = 32'h0; // @[Top.scala 225:25] |
| assign wb_imem_host_io_reqIn_bits_activeByteLane = 4'hf; // @[Top.scala 225:25] |
| assign wb_imem_host_io_reqIn_bits_isWrite = 1'h0; // @[Top.scala 225:25] |
| assign wb_imem_slave_io_wbSlaveTransmitter_ready = wb_imem_host_io_wbSlaveReceiver_ready; // @[Top.scala 232:39] |
| assign wb_imem_slave_io_wbMasterReceiver_valid = wb_imem_host_io_wbMasterTransmitter_valid; // @[Top.scala 231:39] |
| assign wb_imem_slave_io_wbMasterReceiver_bits_cyc = wb_imem_host_io_wbMasterTransmitter_bits_cyc; // @[Top.scala 231:39] |
| assign wb_imem_slave_io_wbMasterReceiver_bits_stb = wb_imem_host_io_wbMasterTransmitter_bits_stb; // @[Top.scala 231:39] |
| assign wb_imem_slave_io_wbMasterReceiver_bits_we = wb_imem_host_io_wbMasterTransmitter_bits_we; // @[Top.scala 231:39] |
| assign wb_imem_slave_io_wbMasterReceiver_bits_adr = wb_imem_host_io_wbMasterTransmitter_bits_adr; // @[Top.scala 231:39] |
| assign wb_imem_slave_io_wbMasterReceiver_bits_dat = wb_imem_host_io_wbMasterTransmitter_bits_dat; // @[Top.scala 231:39] |
| assign wb_imem_slave_io_wbMasterReceiver_bits_sel = wb_imem_host_io_wbMasterTransmitter_bits_sel; // @[Top.scala 231:39] |
| assign wb_imem_slave_io_rspIn_valid = imem_io_rsp_valid; // @[Top.scala 228:26] |
| assign wb_imem_slave_io_rspIn_bits_dataResponse = imem_io_rsp_bits_dataResponse; // @[Top.scala 228:26] |
| assign wb_imem_slave_io_rspIn_bits_error = 1'h0; // @[Top.scala 228:26] |
| assign wb_dmem_host_clock = clock; |
| assign wb_dmem_host_reset = reset; |
| assign wb_dmem_host_io_wbMasterTransmitter_ready = 1'h1; // @[Top.scala 242:20] |
| assign wb_dmem_host_io_wbSlaveReceiver_bits_ack = switch_io_hostOut_bits_ack; // @[Top.scala 243:21] |
| assign wb_dmem_host_io_wbSlaveReceiver_bits_dat = switch_io_hostOut_bits_dat; // @[Top.scala 243:21] |
| assign wb_dmem_host_io_wbSlaveReceiver_bits_err = switch_io_hostOut_bits_err; // @[Top.scala 243:21] |
| assign wb_dmem_host_io_reqIn_valid = core_io_dmemReq_valid; // @[Top.scala 235:25] |
| assign wb_dmem_host_io_reqIn_bits_addrRequest = core_io_dmemReq_bits_addrRequest; // @[Top.scala 235:25] |
| assign wb_dmem_host_io_reqIn_bits_dataRequest = core_io_dmemReq_bits_dataRequest; // @[Top.scala 235:25] |
| assign wb_dmem_host_io_reqIn_bits_activeByteLane = core_io_dmemReq_bits_activeByteLane; // @[Top.scala 235:25] |
| assign wb_dmem_host_io_reqIn_bits_isWrite = core_io_dmemReq_bits_isWrite; // @[Top.scala 235:25] |
| assign wb_dmem_slave_io_wbSlaveTransmitter_ready = 1'h1; // @[Top.scala 245:53] |
| assign wb_dmem_slave_io_wbMasterReceiver_valid = switch_io_devOut_1_valid; // @[Top.scala 246:54] |
| assign wb_dmem_slave_io_wbMasterReceiver_bits_cyc = switch_io_devOut_1_bits_cyc; // @[Top.scala 246:54] |
| assign wb_dmem_slave_io_wbMasterReceiver_bits_stb = switch_io_devOut_1_bits_stb; // @[Top.scala 246:54] |
| assign wb_dmem_slave_io_wbMasterReceiver_bits_we = switch_io_devOut_1_bits_we; // @[Top.scala 246:54] |
| assign wb_dmem_slave_io_wbMasterReceiver_bits_adr = switch_io_devOut_1_bits_adr; // @[Top.scala 246:54] |
| assign wb_dmem_slave_io_wbMasterReceiver_bits_dat = switch_io_devOut_1_bits_dat; // @[Top.scala 246:54] |
| assign wb_dmem_slave_io_wbMasterReceiver_bits_sel = switch_io_devOut_1_bits_sel; // @[Top.scala 246:54] |
| assign wb_dmem_slave_io_rspIn_valid = dmem_io_rsp_valid; // @[Top.scala 238:26] |
| assign wb_dmem_slave_io_rspIn_bits_dataResponse = dmem_io_rsp_bits_dataResponse; // @[Top.scala 238:26] |
| assign wb_dmem_slave_io_rspIn_bits_error = 1'h0; // @[Top.scala 238:26] |
| assign wb_gpio_slave_io_wbSlaveTransmitter_ready = 1'h1; // @[Top.scala 245:53] |
| assign wb_gpio_slave_io_wbMasterReceiver_valid = switch_io_devOut_0_valid; // @[Top.scala 246:54] |
| assign wb_gpio_slave_io_wbMasterReceiver_bits_cyc = switch_io_devOut_0_bits_cyc; // @[Top.scala 246:54] |
| assign wb_gpio_slave_io_wbMasterReceiver_bits_stb = switch_io_devOut_0_bits_stb; // @[Top.scala 246:54] |
| assign wb_gpio_slave_io_wbMasterReceiver_bits_we = switch_io_devOut_0_bits_we; // @[Top.scala 246:54] |
| assign wb_gpio_slave_io_wbMasterReceiver_bits_adr = switch_io_devOut_0_bits_adr; // @[Top.scala 246:54] |
| assign wb_gpio_slave_io_wbMasterReceiver_bits_dat = switch_io_devOut_0_bits_dat; // @[Top.scala 246:54] |
| assign wb_gpio_slave_io_wbMasterReceiver_bits_sel = switch_io_devOut_0_bits_sel; // @[Top.scala 246:54] |
| assign wb_gpio_slave_io_rspIn_valid = gpio_io_rsp_valid; // @[Top.scala 254:26] |
| assign wb_gpio_slave_io_rspIn_bits_dataResponse = gpio_io_rsp_bits_dataResponse; // @[Top.scala 254:26] |
| assign wb_gpio_slave_io_rspIn_bits_error = gpio_io_rsp_bits_error; // @[Top.scala 254:26] |
| assign dmem_clock = clock; |
| assign dmem_reset = reset; |
| assign dmem_io_req_valid = wb_dmem_slave_io_reqOut_valid; // @[Top.scala 237:27] |
| assign dmem_io_req_bits_addrRequest = wb_dmem_slave_io_reqOut_bits_addrRequest; // @[Top.scala 237:27] |
| assign dmem_io_req_bits_dataRequest = wb_dmem_slave_io_reqOut_bits_dataRequest; // @[Top.scala 237:27] |
| assign dmem_io_req_bits_activeByteLane = wb_dmem_slave_io_reqOut_bits_activeByteLane; // @[Top.scala 237:27] |
| assign dmem_io_req_bits_isWrite = wb_dmem_slave_io_reqOut_bits_isWrite; // @[Top.scala 237:27] |
| assign imem_clock = clock; |
| assign imem_reset = reset; |
| assign imem_io_req_valid = wb_imem_slave_io_reqOut_valid; // @[Top.scala 227:27] |
| assign imem_io_req_bits_addrRequest = wb_imem_slave_io_reqOut_bits_addrRequest; // @[Top.scala 227:27] |
| assign imem_io_req_bits_isWrite = wb_imem_slave_io_reqOut_bits_isWrite; // @[Top.scala 227:27] |
| assign imem_io_writeEnable = io_rx_we_i; // @[Top.scala 220:23] |
| assign imem_io_addrIn = io_rx_addr_i; // @[Top.scala 221:18] |
| assign imem_io_dataIn = io_rx_wdata_i; // @[Top.scala 222:18] |
| assign gpio_clock = clock; |
| assign gpio_reset = reset; |
| assign gpio_io_req_valid = wb_gpio_slave_io_reqOut_valid; // @[Top.scala 253:27] |
| assign gpio_io_req_bits_addrRequest = wb_gpio_slave_io_reqOut_bits_addrRequest; // @[Top.scala 253:27] |
| assign gpio_io_req_bits_dataRequest = wb_gpio_slave_io_reqOut_bits_dataRequest; // @[Top.scala 253:27] |
| assign gpio_io_req_bits_activeByteLane = wb_gpio_slave_io_reqOut_bits_activeByteLane; // @[Top.scala 253:27] |
| assign gpio_io_req_bits_isWrite = wb_gpio_slave_io_reqOut_bits_isWrite; // @[Top.scala 253:27] |
| assign gpio_io_cio_gpio_i = io_gpio_i; // @[Top.scala 258:22] |
| assign wbErr_clock = clock; |
| assign wbErr_reset = reset; |
| assign wbErr_io_wbMasterReceiver_valid = switch_io_devOut_2_valid; // @[Top.scala 249:34] |
| assign wbErr_io_wbMasterReceiver_bits_cyc = switch_io_devOut_2_bits_cyc; // @[Top.scala 249:34] |
| assign wbErr_io_wbMasterReceiver_bits_stb = switch_io_devOut_2_bits_stb; // @[Top.scala 249:34] |
| assign core_clock = clock; |
| assign core_reset = reset; |
| assign core_io_dmemRsp_valid = wb_dmem_host_io_rspOut_valid; // @[Top.scala 236:19] |
| assign core_io_dmemRsp_bits_dataResponse = wb_dmem_host_io_rspOut_bits_dataResponse; // @[Top.scala 236:19] |
| assign core_io_imemReq_ready = wb_imem_host_io_reqIn_ready; // @[Top.scala 225:25] |
| assign core_io_imemRsp_valid = wb_imem_host_io_rspOut_valid; // @[Top.scala 226:19] |
| assign core_io_imemRsp_bits_dataResponse = wb_imem_host_io_rspOut_bits_dataResponse; // @[Top.scala 226:19] |
| assign switch_io_hostIn_valid = wb_dmem_host_io_wbMasterTransmitter_valid; // @[Top.scala 242:20] |
| assign switch_io_hostIn_bits_cyc = wb_dmem_host_io_wbMasterTransmitter_bits_cyc; // @[Top.scala 242:20] |
| assign switch_io_hostIn_bits_stb = wb_dmem_host_io_wbMasterTransmitter_bits_stb; // @[Top.scala 242:20] |
| assign switch_io_hostIn_bits_we = wb_dmem_host_io_wbMasterTransmitter_bits_we; // @[Top.scala 242:20] |
| assign switch_io_hostIn_bits_adr = wb_dmem_host_io_wbMasterTransmitter_bits_adr; // @[Top.scala 242:20] |
| assign switch_io_hostIn_bits_dat = wb_dmem_host_io_wbMasterTransmitter_bits_dat; // @[Top.scala 242:20] |
| assign switch_io_hostIn_bits_sel = wb_dmem_host_io_wbMasterTransmitter_bits_sel; // @[Top.scala 242:20] |
| assign switch_io_devIn_0_bits_ack = wb_gpio_slave_io_wbSlaveTransmitter_bits_ack; // @[Top.scala 245:53] |
| assign switch_io_devIn_0_bits_dat = wb_gpio_slave_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 245:53] |
| assign switch_io_devIn_0_bits_err = wb_gpio_slave_io_wbSlaveTransmitter_bits_err; // @[Top.scala 245:53] |
| assign switch_io_devIn_1_bits_ack = wb_dmem_slave_io_wbSlaveTransmitter_bits_ack; // @[Top.scala 245:53] |
| assign switch_io_devIn_1_bits_dat = wb_dmem_slave_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 245:53] |
| assign switch_io_devIn_1_bits_err = wb_dmem_slave_io_wbSlaveTransmitter_bits_err; // @[Top.scala 245:53] |
| assign switch_io_devIn_2_bits_dat = wbErr_io_wbSlaveTransmitter_bits_dat; // @[Top.scala 248:33] |
| assign switch_io_devIn_2_bits_err = wbErr_io_wbSlaveTransmitter_bits_err; // @[Top.scala 248:33] |
| assign switch_io_devSel = switch_io_devSel_addr_hit_0 ? switch_io_devSel_id_0 : _switch_io_devSel_T; // @[Mux.scala 98:16] |
| endmodule |