added the design to run through the openlane flow
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/config.tcl b/openlane/ibtida_dffram_synthesized_no_corering/config.tcl
new file mode 100644
index 0000000..d3ae0dc
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/config.tcl
@@ -0,0 +1,30 @@
+# User config
+set ::env(DESIGN_NAME) Ibtida_top_dffram_cv
+
+# Change if needed
+set ::env(VERILOG_FILES) [glob $::env(DESIGN_DIR)/src/Ibtida_top_dffram_cv.v glob $::env(DESIGN_DIR)/src/DFFRAM*.v ]
+#set ::env(VERILOG_FILES_BLACKBOX) [glob $::env(DESIGN_DIR)/src/DFFRAM.v]
+#set ::env(EXTRA_LEFS) [glob $::env(DESIGN_DIR)/src/lef/DFFRAM.lef]
+#set ::env(EXTRA_GDS_FILES) [glob $::env(DESIGN_DIR)/src/gds/DFFRAM.gds]
+set ::env(FP_SIZING) absolute
+set ::env(DIE_AREA) "0 0 2100 2900"
+set ::env(PL_TARGET_DENSITY) 0.4
+set ::env(FP_PIN_ORDER_CFG) $::env(DESIGN_DIR)/pin_order.cfg
+set ::env(SYNTH_STRATEGY) 2
+set ::env(SYNTH_MAX_FANOUT) 4
+set ::env(PDN_CFG) $::env(DESIGN_DIR)/pdn.tcl
+#set ::env(DESIGN_IS_CORE) 0
+set ::env(GLB_RT_MAXLAYER) 5
+set ::env(GENERATE_FINAL_SUMMARY_REPORT) 1
+set ::env(SYNTH_READ_BLACKBOX_LIB) 1
+set ::env(BASE_SDC_FILE) $::env(OPENLANE_ROOT)/designs/ibtida_dffram_synthesized_no_corering/src/Ibtida_top_dffram_cv.sdc
+#set ::env(FP_PDN_CORE_RING) 1
+# Fill this
+set ::env(CLOCK_PERIOD) "80"
+set ::env(CLOCK_PORT) "wb_clk_i"
+
+set filename $::env(DESIGN_DIR)/$::env(PDK)_$::env(STD_CELL_LIBRARY)_config.tcl
+if { [file exists $filename] == 1} {
+ source $filename
+}
+
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/ibtida_flow.tcl b/openlane/ibtida_dffram_synthesized_no_corering/ibtida_flow.tcl
new file mode 100755
index 0000000..9abba0a
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/ibtida_flow.tcl
@@ -0,0 +1,183 @@
+#!/usr/bin/tclsh
+# Copyright 2020 Efabless Corporation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+
+set ::env(OPENLANE_ROOT) [file dirname [file normalize [info script]]]
+
+lappend ::auto_path "$::env(OPENLANE_ROOT)/scripts/"
+package require openlane; # provides the utils as well
+
+proc run_non_interactive_mode {args} {
+ set options {
+ {-design required}
+ {-save_path optional}
+ }
+ set flags {-save}
+ parse_key_args "run_non_interactive_mode" args arg_values $options flags_map $flags -no_consume
+
+ prep {*}$args
+
+ run_synthesis
+ init_floorplan
+ place_io
+ global_placement_or
+ detailed_placement
+ tap_decap_or
+ detailed_placement
+ gen_pdn
+ run_cts
+ run_routing
+
+ if { $::env(DIODE_INSERTION_STRATEGY) == 2 } {
+ run_antenna_check
+ heal_antenna_violators; # modifies the routed DEF
+ }
+
+ run_magic
+
+ run_magic_spice_export
+
+ if { [info exists flags_map(-save) ] } {
+ if { [info exists arg_values(-save_path)] } {
+ save_views -lef_path $::env(magic_result_file_tag).lef \
+ -def_path $::env(tritonRoute_result_file_tag).def \
+ -gds_path $::env(magic_result_file_tag).gds \
+ -mag_path $::env(magic_result_file_tag).mag \
+ -spice_path $::env(magic_result_file_tag).spice \
+ -verilog_path $::env(CURRENT_NETLIST) \
+ -save_path $arg_values(-save_path) \
+ -tag $::env(RUN_TAG)
+ } else {
+ save_views -lef_path $::env(magic_result_file_tag).lef \
+ -def_path $::env(tritonRoute_result_file_tag).def \
+ -mag_path $::env(magic_result_file_tag).mag \
+ -gds_path $::env(magic_result_file_tag).gds \
+ -spice_path $::env(magic_result_file_tag).spice \
+ -verilog_path $::env(CURRENT_NETLIST) \
+ -tag $::env(RUN_TAG)
+ }
+ }
+
+ # Physical verification
+
+ run_magic_drc
+
+ run_lvs; # requires run_magic_spice_export
+
+ run_antenna_check
+
+ generate_final_summary_report
+
+ puts_success "Flow Completed Without Fatal Errors."
+}
+
+proc run_interactive_mode {args} {
+ set options {
+ {-design optional}
+ }
+ set flags {}
+ parse_key_args "run_interactive_mode" args arg_values $options flags_map $flags -no_consume
+
+ if { [info exists arg_values(-design)] } {
+ prep {*}$args
+ }
+
+ set ::env(TCLLIBPATH) $::auto_path
+ exec tclsh >&@stdout
+}
+
+proc run_magic_drc_batch {args} {
+ set options {
+ {-magicrc optional}
+ {-tech optional}
+ {-report required}
+ {-design required}
+ {-gds required}
+ }
+ set flags {}
+ parse_key_args "run_magic_drc_batch" args arg_values $options flags_mag $flags
+ if { [info exists arg_values(-magicrc)] } {
+ set magicrc [file normalize $arg_values(-magicrc)]
+ }
+ if { [info exists arg_values(-tech)] } {
+ set ::env(TECH) [file normalize $arg_values(-tech)]
+ }
+ set ::env(GDS_INPUT) [file normalize $arg_values(-gds)]
+ set ::env(REPORT_OUTPUT) [file normalize $arg_values(-report)]
+ set ::env(DESIGN_NAME) $arg_values(-design)
+
+ if { [info exists magicrc] } {
+ exec magic \
+ -noconsole \
+ -dnull \
+ -rcfile $magicrc \
+ $::env(OPENLANE_ROOT)/scripts/magic_drc_batch.tcl \
+ </dev/null |& tee /dev/tty
+ } else {
+ exec magic \
+ -noconsole \
+ -dnull \
+ $::env(OPENLANE_ROOT)/scripts/magic_drc_batch.tcl \
+ </dev/null |& /dev/tty
+ }
+}
+
+proc run_file {args} {
+ set ::env(TCLLIBPATH) $::auto_path
+ exec tclsh $args >&@stdout
+}
+
+set options {
+ {-file optional}
+}
+
+set flags {-interactive -it -drc -synth_explore}
+
+parse_key_args "flow.tcl" argv arg_values $options flags_map $flags -no_consume
+
+puts_info {
+ ___ ____ ___ ____ _ ____ ____ ___
+ / \ | \ / _]| \ | | / || \ / _]
+ | || o ) [_ | _ || | | o || _ | / [_
+ | O || _/ _]| | || |___ | || | || _]
+ | || | | [_ | | || || _ || | || [_
+ \___/ |__| |_____||__|__||_____||__|__||__|__||_____|
+
+}
+if {[catch {exec git --git-dir $::env(OPENLANE_ROOT)/.git describe --tags} ::env(OPENLANE_VERSION)]} {
+ # if no tags yet
+ if {[catch {exec git --git-dir $::env(OPENLANE_ROOT)/.git log --pretty=format:'%h' -n 1} ::env(OPENLANE_VERSION)]} {
+ set ::env(OPENLANE_VERSION) "N/A"
+ }
+}
+
+puts_info "Version: $::env(OPENLANE_VERSION)"
+
+if { [info exists flags_map(-interactive)] || [info exists flags_map(-it)] } {
+ puts_info "Running interactively"
+ if { [info exists arg_values(-file)] } {
+ run_file [file normalize $arg_values(-file)]
+ } else {
+ run_interactive_mode {*}$argv
+ }
+} elseif { [info exists flags_map(-drc)] } {
+ run_magic_drc_batch {*}$argv
+} elseif { [info exists flags_map(-synth_explore)] } {
+ prep {*}$argv
+ run_synth_exploration
+} else {
+ puts_info "Running non-interactively"
+ run_non_interactive_mode {*}$argv
+}
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/pdn.tcl b/openlane/ibtida_dffram_synthesized_no_corering/pdn.tcl
new file mode 100644
index 0000000..bbe9ce6
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/pdn.tcl
@@ -0,0 +1,37 @@
+# Power nets
+set ::power_nets $::env(VDD_PIN)
+set ::ground_nets $::env(GND_PIN)
+
+set ::macro_blockage_layer_list "li1 met1 met2 met3 met4 met5"
+
+pdngen::specify_grid stdcell {
+ name grid
+ rails {
+ met1 {width $::env(FP_PDN_RAIL_WIDTH) pitch $::env(PLACE_SITE_HEIGHT) offset $::env(FP_PDN_RAIL_OFFSET)}
+ }
+ straps {
+ met4 {width $::env(FP_PDN_VWIDTH) pitch $::env(FP_PDN_VPITCH) offset $::env(FP_PDN_VOFFSET)}
+ }
+ connect {{met1 met4} }
+}
+
+pdngen::specify_grid macro {
+ orient {R0 R180 MX MY R90 R270 MXR90 MYR90}
+ power_pins "VDDE"
+ ground_pins "VSSE"
+ blockages "li1 met1 met2 met3 met4 met5"
+ straps {
+ }
+ connect { }
+}
+
+set ::halo 0
+
+# Metal layer for rails on every row
+set ::rails_mlayer "met1" ;
+
+# POWER or GROUND #Std. cell rails starting with power or ground rails at the bottom of the core area
+set ::rails_start_with "POWER" ;
+
+# POWER or GROUND #Upper metal stripes starting with power or ground rails at the left/bottom of the core area
+set ::stripes_start_with "POWER" ;
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/pin_order.cfg b/openlane/ibtida_dffram_synthesized_no_corering/pin_order.cfg
new file mode 100644
index 0000000..70640e0
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/pin_order.cfg
@@ -0,0 +1,136 @@
+#BUS_SORT
+#NR
+io_in\[15\]
+io_out\[15\]
+io_oeb\[15\]
+vssa1
+io_in\[16\]
+io_out\[16\]
+io_oeb\[16\]
+io_in\[17\]
+io_out\[17\]
+io_oeb\[17\]
+io_in\[18\]
+io_out\[18\]
+io_oeb\[18\]
+io_in\[19\]
+io_out\[19\]
+io_oeb\[19\]
+io_in\[20\]
+io_out\[20\]
+io_oeb\[20\]
+io_in\[21\]
+io_out\[21\]
+io_oeb\[21\]
+io_in\[22\]
+io_out\[22\]
+io_oeb\[22\]
+io_in\[23\]
+io_out\[23\]
+io_oeb\[23\]
+
+#S
+wb_.*
+wbs_.*
+la_.*
+user_clock2
+
+#E
+io_in\[0\]
+io_out\[0\]
+io_oeb\[0\]
+io_in\[1\]
+io_out\[1\]
+io_oeb\[1\]
+io_in\[2\]
+io_out\[2\]
+io_oeb\[2\]
+io_in\[3\]
+io_out\[3\]
+io_oeb\[3\]
+io_in\[4\]
+io_out\[4\]
+io_oeb\[4\]
+io_in\[5\]
+io_out\[5\]
+io_oeb\[5\]
+io_in\[6\]
+io_out\[6\]
+io_oeb\[6\]
+vssa1
+vssd1
+vdda1
+io_in\[7\]
+io_out\[7\]
+io_oeb\[7\]
+io_in\[8\]
+io_out\[8\]
+io_oeb\[8\]
+io_in\[9\]
+io_out\[9\]
+io_oeb\[9\]
+io_in\[10\]
+io_out\[10\]
+io_oeb\[10\]
+io_in\[11\]
+io_out\[11\]
+io_oeb\[11\]
+io_in\[12\]
+io_out\[12\]
+io_oeb\[12\]
+vdda1
+io_in\[13\]
+io_out\[13\]
+io_oeb\[13\]
+vccd1
+io_in\[14\]
+io_out\[14\]
+io_oeb\[14\]
+
+#WR
+io_in\[24\]
+io_out\[24\]
+io_oeb\[24\]
+vccd2
+vssa2
+io_in\[25\]
+io_out\[25\]
+io_oeb\[25\]
+io_in\[26\]
+io_out\[26\]
+io_oeb\[26\]
+io_in\[27\]
+io_out\[27\]
+io_oeb\[27\]
+io_in\[28\]
+io_out\[28\]
+io_oeb\[28\]
+io_in\[29\]
+io_out\[29\]
+io_oeb\[29\]
+io_in\[30\]
+io_out\[30\]
+io_oeb\[30\]
+io_in\[31\]
+io_out\[31\]
+io_oeb\[31\]
+vdda2
+vssd2
+io_in\[32\]
+io_out\[32\]
+io_oeb\[32\]
+io_in\[33\]
+io_out\[33\]
+io_oeb\[33\]
+io_in\[34\]
+io_out\[34\]
+io_oeb\[34\]
+io_in\[35\]
+io_out\[35\]
+io_oeb\[35\]
+io_in\[36\]
+io_out\[36\]
+io_oeb\[36\]
+io_in\[37\]
+io_out\[37\]
+io_oeb\[37\]
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/src/DFFRAM.v b/openlane/ibtida_dffram_synthesized_no_corering/src/DFFRAM.v
new file mode 100644
index 0000000..aa6b24c
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/src/DFFRAM.v
@@ -0,0 +1,61 @@
+/*
+ A parameterized DFF based RAM for SKY130A
+ Use the COLS parameter to set the size
+ Valid sizes: 1 (default), 2 or 4
+*/
+/*
+ Author: Mohamed Shalan (mshalan@aucegypt.edu)
+*/
+
+module DFFRAM #( parameter COLS=1)
+(
+ CLK,
+ WE,
+ EN,
+ Di,
+ Do,
+ A
+);
+
+ input CLK;
+ input [3:0] WE;
+ input EN;
+ input [31:0] Di;
+ output [31:0] Do;
+ input [7+$clog2(COLS):0] A;
+
+ wire [31:0] DOUT [COLS-1:0];
+ wire [31:0] Do_pre;
+ wire [COLS-1:0] EN_lines;
+
+ generate
+ genvar i;
+ for (i=0; i<COLS; i=i+1) begin : COLUMN
+ DFFRAM_COL4 RAMCOLS ( .CLK(CLK),
+ .WE(WE),
+ .EN(EN_lines[i]),
+ .Di(Di),
+ .Do(DOUT[i]),
+ .A(A[7:0])
+ );
+ end
+ if(COLS==4) begin
+ MUX4x1_32 MUX ( .A0(DOUT[0]), .A1(DOUT[1]), .A2(DOUT[2]), .A3(DOUT[3]), .S(A[9:8]), .X(Do_pre) );
+ DEC2x4 DEC ( .EN(EN), .A(A[9:8]), .SEL(EN_lines) );
+ end
+ else if(COLS==2) begin
+ MUX2x1_32 MUX ( .A0(DOUT[0]), .A1(DOUT[1]), .S(A[8]), .X(Do_pre) );
+ //sky130_fd_sc_hd__inv_4 DEC0 ( .Y(EN_lines[0]), .A(A[8]) );
+ //sky130_fd_sc_hd__clkbuf_4 DEC1 (.X(EN_lines[1]), .A(A[8]) );
+ DEC1x2 DEC ( .EN(EN), .A(A[8]), .SEL(EN_lines[1:0]) );
+
+ end
+ else begin
+ PASS MUX ( .A(DOUT[0]), .X(Do_pre) );
+ sky130_fd_sc_hd__clkbuf_4 ENBUF (.X(EN_lines[0]), .A(EN) );
+ end
+ endgenerate
+
+ sky130_fd_sc_hd__clkbuf_4 DOBUF[31:0] (.X(Do), .A(Do_pre));
+
+endmodule
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/src/DFFRAMBB.v b/openlane/ibtida_dffram_synthesized_no_corering/src/DFFRAMBB.v
new file mode 100644
index 0000000..ad75f22
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/src/DFFRAMBB.v
@@ -0,0 +1,228 @@
+/*
+ Building blocks for DFF based RAM compiler for SKY130A
+ BYTE : 8 memory cells used as a building block for WORD module
+ WORD : 32-bit memory word with select and byte-level WE
+ DEC6x64 : 2x4 Binary Decoder
+ DEC6x64 : 6x64 Binary decoder
+ MUX4x1_32 : 32-bit 4x1 MUX
+ MUX2x1_32 : 32-bit 2x1 MUX
+ SRAM64x32 : Tri-state buffers based 64x32 DFF RAM
+ DFFRAM_COL4 : A single column of 4 SRAM64x32 blocks using 4x1 multiplexors
+*/
+/*
+ Author: Mohamed Shalan (mshalan@aucegypt.edu)
+*/
+
+module BYTE (
+ input CLK,
+ input WE,
+ input SEL,
+ input [7:0] Di,
+ output [7:0] Do
+);
+
+ wire [7:0] q_wire;
+ wire we_wire;
+ wire SEL_B;
+ wire GCLK;
+
+ sky130_fd_sc_hd__inv_1 INV(.Y(SEL_B), .A(SEL));
+ sky130_fd_sc_hd__and2_1 CGAND( .A(SEL), .B(WE), .X(we_wire) );
+ sky130_fd_sc_hd__dlclkp_1 CG( .CLK(CLK), .GCLK(GCLK), .GATE(we_wire) );
+
+ generate
+ genvar i;
+ for(i=0; i<8; i=i+1) begin : BIT
+ sky130_fd_sc_hd__dfxtp_1 FF ( .D(Di[i]), .Q(q_wire[i]), .CLK(GCLK) );
+ sky130_fd_sc_hd__ebufn_2 OBUF ( .A(q_wire[i]), .Z(Do[i]), .TE_B(SEL_B) );
+ end
+ endgenerate
+
+endmodule
+
+
+module WORD32 (
+ input CLK,
+ input [3:0] WE,
+ input SEL,
+ input [31:0] Di,
+ output [31:0] Do
+);
+
+ BYTE B0 ( .CLK(CLK), .WE(WE[0]), .SEL(SEL), .Di(Di[7:0]), .Do(Do[7:0]) );
+ BYTE B1 ( .CLK(CLK), .WE(WE[1]), .SEL(SEL), .Di(Di[15:8]), .Do(Do[15:8]) );
+ BYTE B2 ( .CLK(CLK), .WE(WE[2]), .SEL(SEL), .Di(Di[23:16]), .Do(Do[23:16]) );
+ BYTE B3 ( .CLK(CLK), .WE(WE[3]), .SEL(SEL), .Di(Di[31:24]), .Do(Do[31:24]) );
+
+endmodule
+
+module DEC1x2 (
+ input EN,
+ input [0:0] A,
+ output [1:0] SEL
+);
+ sky130_fd_sc_hd__and2b_2 AND1 ( .X(SEL[0]), .A_N(A), .B(EN) );
+ sky130_fd_sc_hd__and2_2 AND3 ( .X(SEL[1]), .A(A), .B(A[0]) );
+
+endmodule
+
+module DEC2x4 (
+ input EN,
+ input [1:0] A,
+ output [3:0] SEL
+);
+ sky130_fd_sc_hd__nor3b_4 AND0 ( .Y(SEL[0]), .A(A[0]), .B(A[1]), .C_N(EN) );
+ sky130_fd_sc_hd__and3b_4 AND1 ( .X(SEL[1]), .A_N(A[1]), .B(A[0]), .C(EN) );
+ sky130_fd_sc_hd__and3b_4 AND2 ( .X(SEL[2]), .A_N(A[0]), .B(A[1]), .C(EN) );
+ sky130_fd_sc_hd__and3_4 AND3 ( .X(SEL[3]), .A(A[1]), .B(A[0]), .C(EN) );
+
+endmodule
+
+module DEC3x8 (
+ input EN,
+ input [2:0] A,
+ output [7:0] SEL
+);
+ sky130_fd_sc_hd__nor4b_2 AND0 ( .Y(SEL[0]) , .A(A[0]), .B(A[1]) , .C(A[2]), .D_N(EN) ); // 000
+ sky130_fd_sc_hd__and4bb_2 AND1 ( .X(SEL[1]) , .A_N(A[2]), .B_N(A[1]), .C(A[0]) , .D(EN) ); // 001
+ sky130_fd_sc_hd__and4bb_2 AND2 ( .X(SEL[2]) , .A_N(A[2]), .B_N(A[0]), .C(A[1]) , .D(EN) ); // 010
+ sky130_fd_sc_hd__and4b_2 AND3 ( .X(SEL[3]) , .A_N(A[2]), .B(A[1]), .C(A[0]) , .D(EN) ); // 011
+ sky130_fd_sc_hd__and4bb_2 AND4 ( .X(SEL[4]) , .A_N(A[0]), .B_N(A[1]), .C(A[2]) , .D(EN) ); // 100
+ sky130_fd_sc_hd__and4b_2 AND5 ( .X(SEL[5]) , .A_N(A[1]), .B(A[0]), .C(A[2]) , .D(EN) ); // 101
+ sky130_fd_sc_hd__and4b_2 AND6 ( .X(SEL[6]) , .A_N(A[0]), .B(A[1]), .C(A[2]) , .D(EN) ); // 110
+ sky130_fd_sc_hd__and4_2 AND7 ( .X(SEL[7]) , .A(A[0]), .B(A[1]), .C(A[2]) , .D(EN) ); // 111
+endmodule
+
+
+module DEC6x64 (
+ input EN,
+ input [5:0] A,
+ output [63:0] SEL
+);
+ wire [7:0] SEL0_w ;
+ wire [2:0] A_buf;
+
+ DEC3x8 DEC_L0 ( .EN(EN), .A(A[5:3]), .SEL(SEL0_w) );
+
+ sky130_fd_sc_hd__clkbuf_16 ABUF[2:0] (.X(A_buf), .A(A[2:0]));
+
+ generate
+ genvar i;
+ for(i=0; i<8; i=i+1) begin : DEC_L1
+ DEC3x8 U ( .EN(SEL0_w[i]), .A(A_buf), .SEL(SEL[7+8*i: 8*i]) );
+ end
+ endgenerate
+endmodule
+
+module MUX2x1_32(
+ input [31:0] A0, A1,
+ input [0:0] S,
+ output [31:0] X
+);
+ sky130_fd_sc_hd__mux2_1 MUX[31:0] (.A0(A0), .A1(A1), .S(S[0]), .X(X) );
+endmodule
+
+module MUX4x1_32(
+ input [31:0] A0, A1, A2, A3,
+ input [1:0] S,
+ output [31:0] X
+);
+ sky130_fd_sc_hd__mux4_1 MUX[31:0] (.A0(A0), .A1(A1), .A2(A2), .A3(A3), .S0(S[0]), .S1(S[1]), .X(X) );
+endmodule
+
+module PASS (input [31:0] A, output [31:0] X);
+ assign X = A;
+endmodule
+
+module SRAM64x32(
+ input CLK,
+ input [3:0] WE,
+ input EN,
+ input [31:0] Di,
+ output [31:0] Do,
+ input [5:0] A
+);
+
+ wire [63:0] SEL;
+ wire [31:0] Do_pre;
+ wire [31:0] Di_buf;
+ wire CLK_buf;
+ wire [3:0] WE_buf;
+
+ sky130_fd_sc_hd__clkbuf_16 CLKBUF (.X(CLK_buf), .A(CLK));
+ sky130_fd_sc_hd__clkbuf_16 WEBUF[3:0] (.X(WE_buf), .A(WE));
+ sky130_fd_sc_hd__clkbuf_16 DIBUF[31:0] (.X(Di_buf), .A(Di));
+
+ DEC6x64 DEC ( .EN(EN), .A(A), .SEL(SEL) );
+
+ generate
+ genvar i;
+ for (i=0; i< 64; i=i+1) begin : WORD
+ WORD32 W ( .CLK(CLK_buf), .WE(WE_buf), .SEL(SEL[i]), .Di(Di_buf), .Do(Do_pre) );
+ end
+ endgenerate
+
+ // Ensure that the Do_pre lines are not floating when EN = 0
+ wire lo;
+ wire float_buf_en;
+ sky130_fd_sc_hd__clkbuf_4 FBUFENBUF( .X(float_buf_en), .A(EN) );
+ sky130_fd_sc_hd__conb_1 TIE (.LO(lo), .HI());
+ sky130_fd_sc_hd__ebufn_4 FLOATBUF[31:0] ( .A( lo ), .Z(Do_pre), .TE_B(float_buf_en) );
+
+ generate
+ //genvar i;
+ for(i=0; i<32; i=i+1) begin : OUT
+ sky130_fd_sc_hd__dfxtp_1 FF ( .D(Do_pre[i]), .Q(Do[i]), .CLK(CLK) );
+ end
+ endgenerate
+
+endmodule
+
+module DFFRAM_COL4
+(
+ CLK,
+ WE,
+ EN,
+ Di,
+ Do,
+ A
+);
+
+ input CLK;
+ input [3:0] WE;
+ input EN;
+ input [31:0] Di;
+ output [31:0] Do;
+ input [7:0] A;
+
+
+ wire [31:0] Di_buf;
+ wire [31:0] Do_pre;
+ wire CLK_buf;
+ wire [3:0] WE_buf;
+ wire [5:3] A_buf;
+
+ wire [31:0] Do_B_0_0;
+ wire [31:0] Do_B_0_1;
+ wire [31:0] Do_B_0_2;
+ wire [31:0] Do_B_0_3;
+
+ wire [3:0] row_sel;
+
+ sky130_fd_sc_hd__clkbuf_8 CLKBUF (.X(CLK_buf), .A(CLK));
+ sky130_fd_sc_hd__clkbuf_8 WEBUF[3:0] (.X(WE_buf), .A(WE));
+ sky130_fd_sc_hd__clkbuf_8 DIBUF[31:0] (.X(Di_buf), .A(Di));
+
+ sky130_fd_sc_hd__clkbuf_16 ABUF[2:0] ( .X(A_buf), .A(A[5:3]) );
+
+ DEC2x4 DEC ( .EN(EN), .A(A[7:6]), .SEL(row_sel) );
+
+ SRAM64x32 B_0_0 ( .CLK(CLK_buf), .WE(WE_buf), .EN(row_sel[0]), .Di(Di_buf), .Do(Do_B_0_0), .A({A_buf,A[2:0]}) );
+ SRAM64x32 B_0_1 ( .CLK(CLK_buf), .WE(WE_buf), .EN(row_sel[1]), .Di(Di_buf), .Do(Do_B_0_1), .A({A_buf,A[2:0]}) );
+ SRAM64x32 B_0_2 ( .CLK(CLK_buf), .WE(WE_buf), .EN(row_sel[2]), .Di(Di_buf), .Do(Do_B_0_2), .A({A_buf,A[2:0]}) );
+ SRAM64x32 B_0_3 ( .CLK(CLK_buf), .WE(WE_buf), .EN(row_sel[3]), .Di(Di_buf), .Do(Do_B_0_3), .A({A_buf,A[2:0]}) );
+
+ MUX4x1_32 MUX ( .A0(Do_B_0_0), .A1(Do_B_0_1), .A2(Do_B_0_2), .A3(Do_B_0_3), .S(A[7:6]), .X(Do) );
+
+endmodule
+
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/src/Ibtida_top_dffram_cv.sdc b/openlane/ibtida_dffram_synthesized_no_corering/src/Ibtida_top_dffram_cv.sdc
new file mode 100755
index 0000000..1082c8e
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/src/Ibtida_top_dffram_cv.sdc
@@ -0,0 +1,27 @@
+create_clock [get_ports $::env(CLOCK_PORT)] -name $::env(CLOCK_PORT) -period $::env(CLOCK_PERIOD)
+set SCL /home/merlproj/backend-tools/openlane_rc4/designs/aireen_dffram/syn/sky130_fd_sc_hd__tt_025C_1v80.lib
+
+set IO_PCT 0.2
+set input_delay_value [expr $::env(CLOCK_PERIOD) * $IO_PCT]
+set output_delay_value [expr $::env(CLOCK_PERIOD) * $IO_PCT]
+puts "\[INFO\]: Setting output delay to: $output_delay_value"
+puts "\[INFO\]: Setting input delay to: $input_delay_value"
+
+
+set clk_indx [lsearch [all_inputs] [get_port $::env(CLOCK_PORT)]]
+#set rst_indx [lsearch [all_inputs] [get_port resetn]]
+set all_inputs_wo_clk [lreplace [all_inputs] $clk_indx $clk_indx]
+#set all_inputs_wo_clk_rst [lreplace $all_inputs_wo_clk $rst_indx $rst_indx]
+set all_inputs_wo_clk_rst $all_inputs_wo_clk
+
+
+# correct resetn
+set_input_delay $input_delay_value -clock [get_clocks $::env(CLOCK_PORT)] $all_inputs_wo_clk_rst
+#set_input_delay 0.0 -clock [get_clocks $::env(CLOCK_PORT)] {resetn}
+set_output_delay $output_delay_value -clock [get_clocks $::env(CLOCK_PORT)] [all_outputs]
+
+# TODO set this as parameter
+set_driving_cell -lib_cell $::env(SYNTH_DRIVING_CELL) -pin $::env(SYNTH_DRIVING_CELL_PIN) [all_inputs]
+set cap_load [expr $::env(SYNTH_CAP_LOAD) / 1000.0]
+puts "\[INFO\]: Setting load to: $cap_load"
+set_load $cap_load [all_outputs]
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/src/Ibtida_top_dffram_cv.v b/openlane/ibtida_dffram_synthesized_no_corering/src/Ibtida_top_dffram_cv.v
new file mode 100644
index 0000000..315893b
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/src/Ibtida_top_dffram_cv.v
@@ -0,0 +1,8923 @@
+module Rx(
+ input clock,
+ input reset,
+ input [15:0] io_CLK_PER_BIT,
+ input io_rxd,
+ output io_valid,
+ output [7:0] io_data
+);
+`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;
+`endif // RANDOMIZE_REG_INIT
+ reg [2:0] stateReg; // @[Rx.scala 19:25]
+ reg [7:0] clockCount; // @[Rx.scala 21:27]
+ reg [3:0] bitIndex; // @[Rx.scala 22:25]
+ reg validReg; // @[Rx.scala 23:25]
+ reg _T; // @[Rx.scala 25:30]
+ reg rxReg; // @[Rx.scala 25:22]
+ reg [7:0] shiftReg; // @[Rx.scala 26:25]
+ wire _T_1 = 3'h0 == stateReg; // @[Conditional.scala 37:30]
+ wire _T_2 = ~io_rxd; // @[Rx.scala 34:19]
+ wire _T_3 = 3'h1 == stateReg; // @[Conditional.scala 37:30]
+ wire [31:0] CLCK_PER_BIT = {{16'd0}, io_CLK_PER_BIT}; // @[Rx.scala 15:36 Rx.scala 16:16]
+ wire [31:0] _T_5 = CLCK_PER_BIT - 32'h1; // @[Rx.scala 42:42]
+ wire [31:0] _T_6 = _T_5 / 32'h2; // @[Rx.scala 42:49]
+ wire [31:0] _GEN_34 = {{24'd0}, clockCount}; // @[Rx.scala 42:23]
+ wire _T_7 = _GEN_34 == _T_6; // @[Rx.scala 42:23]
+ wire [7:0] _T_10 = clockCount + 8'h1; // @[Rx.scala 50:34]
+ wire _T_11 = 3'h2 == stateReg; // @[Conditional.scala 37:30]
+ wire _T_14 = _GEN_34 < _T_5; // @[Rx.scala 56:23]
+ wire [7:0] _T_18 = {rxReg,shiftReg[7:1]}; // @[Cat.scala 29:58]
+ wire _T_19 = bitIndex < 4'h7; // @[Rx.scala 64:23]
+ wire [3:0] _T_21 = bitIndex + 4'h1; // @[Rx.scala 65:32]
+ wire _T_22 = 3'h3 == stateReg; // @[Conditional.scala 37:30]
+ wire _T_28 = 3'h4 == stateReg; // @[Conditional.scala 37:30]
+ assign io_valid = validReg; // @[Rx.scala 93:12]
+ assign io_data = shiftReg; // @[Rx.scala 91:11]
+`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}};
+ stateReg = _RAND_0[2:0];
+ _RAND_1 = {1{`RANDOM}};
+ clockCount = _RAND_1[7:0];
+ _RAND_2 = {1{`RANDOM}};
+ bitIndex = _RAND_2[3:0];
+ _RAND_3 = {1{`RANDOM}};
+ validReg = _RAND_3[0:0];
+ _RAND_4 = {1{`RANDOM}};
+ _T = _RAND_4[0:0];
+ _RAND_5 = {1{`RANDOM}};
+ rxReg = _RAND_5[0:0];
+ _RAND_6 = {1{`RANDOM}};
+ shiftReg = _RAND_6[7:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ stateReg <= 3'h0;
+ end else if (_T_1) begin
+ if (_T_2) begin
+ stateReg <= 3'h1;
+ end else begin
+ stateReg <= 3'h0;
+ end
+ end else if (_T_3) begin
+ if (_T_7) begin
+ if (_T_2) begin
+ stateReg <= 3'h2;
+ end else begin
+ stateReg <= 3'h0;
+ end
+ end else begin
+ stateReg <= 3'h1;
+ end
+ end else if (_T_11) begin
+ if (_T_14) begin
+ stateReg <= 3'h2;
+ end else if (_T_19) begin
+ stateReg <= 3'h2;
+ end else begin
+ stateReg <= 3'h3;
+ end
+ end else if (_T_22) begin
+ if (_T_14) begin
+ stateReg <= 3'h3;
+ end else begin
+ stateReg <= 3'h4;
+ end
+ end else if (_T_28) begin
+ stateReg <= 3'h0;
+ end
+ if (reset) begin
+ clockCount <= 8'h0;
+ end else if (_T_1) begin
+ clockCount <= 8'h0;
+ end else if (_T_3) begin
+ if (_T_7) begin
+ if (_T_2) begin
+ clockCount <= 8'h0;
+ end
+ end else begin
+ clockCount <= _T_10;
+ end
+ end else if (_T_11) begin
+ if (_T_14) begin
+ clockCount <= _T_10;
+ end else begin
+ clockCount <= 8'h0;
+ end
+ end else if (_T_22) begin
+ if (_T_14) begin
+ clockCount <= _T_10;
+ end else begin
+ clockCount <= 8'h0;
+ end
+ end
+ if (reset) begin
+ bitIndex <= 4'h0;
+ end else if (_T_1) begin
+ bitIndex <= 4'h0;
+ end else if (!(_T_3)) begin
+ if (_T_11) begin
+ if (!(_T_14)) begin
+ if (_T_19) begin
+ bitIndex <= _T_21;
+ end else begin
+ bitIndex <= 4'h0;
+ end
+ end
+ end
+ end
+ if (reset) begin
+ validReg <= 1'h0;
+ end else if (_T_1) begin
+ validReg <= 1'h0;
+ end else if (!(_T_3)) begin
+ if (!(_T_11)) begin
+ if (_T_22) begin
+ if (!(_T_14)) begin
+ validReg <= 1'h1;
+ end
+ end else if (_T_28) begin
+ validReg <= 1'h0;
+ end
+ end
+ end
+ _T <= reset | io_rxd;
+ rxReg <= reset | _T;
+ if (reset) begin
+ shiftReg <= 8'h41;
+ end else if (!(_T_1)) begin
+ if (!(_T_3)) begin
+ if (_T_11) begin
+ if (!(_T_14)) begin
+ shiftReg <= _T_18;
+ end
+ end
+ end
+ end
+ end
+endmodule
+module UartController(
+ input clock,
+ input reset,
+ input io_isStalled,
+ output [31:0] io_rx_data_o,
+ output [7:0] io_addr_o,
+ input [15:0] io_CLK_PER_BIT,
+ input io_rxd,
+ output io_valid,
+ output io_done
+);
+`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;
+`endif // RANDOMIZE_REG_INIT
+ // wire rx_clock; // @[UartController.scala 25:18]
+ // wire rxreset; // @[UartController.scala 25:18]
+ wire [15:0] rx_io_CLK_PER_BIT; // @[UartController.scala 25:18]
+ wire rx_io_rxd; // @[UartController.scala 25:18]
+ wire rx_io_valid; // @[UartController.scala 25:18]
+ wire [7:0] rx_io_data; // @[UartController.scala 25:18]
+ reg regDone; // @[UartController.scala 19:24]
+ reg [2:0] count; // @[UartController.scala 20:22]
+ reg [31:0] regFinalData; // @[UartController.scala 21:29]
+ reg [13:0] regAddr; // @[UartController.scala 22:24]
+ reg regValid; // @[UartController.scala 23:25]
+ reg [7:0] dataReg; // @[UartController.scala 30:24]
+ reg [7:0] regLSB1; // @[UartController.scala 31:24]
+ reg [7:0] regLSB2; // @[UartController.scala 32:24]
+ reg [7:0] regMSB1; // @[UartController.scala 33:24]
+ wire _T = ~regDone; // @[UartController.scala 36:24]
+ wire _T_1 = io_isStalled & _T; // @[UartController.scala 36:21]
+ wire _T_2 = rx_io_valid; // @[UartController.scala 37:22]
+ wire [2:0] _T_4 = count + 3'h1; // @[UartController.scala 41:22]
+ wire _T_5 = 3'h1 == count; // @[Conditional.scala 37:30]
+ wire _T_6 = 3'h2 == count; // @[Conditional.scala 37:30]
+ wire _T_7 = 3'h3 == count; // @[Conditional.scala 37:30]
+ wire _T_8 = 3'h4 == count; // @[Conditional.scala 37:30]
+ wire [31:0] _T_11 = {dataReg,regMSB1,regLSB2,regLSB1}; // @[Cat.scala 29:58]
+ wire _T_12 = _T_11 == 32'hfff; // @[UartController.scala 58:17]
+ wire [13:0] _T_14 = regAddr + 14'h1; // @[UartController.scala 65:28]
+ wire _GEN_6 = _T_12 | regDone; // @[UartController.scala 58:36]
+ wire _T_15 = count == 3'h4; // @[UartController.scala 72:14]
+ Rx rx ( // @[UartController.scala 25:18]
+ .clock(clock),
+ .reset(reset),
+ .io_CLK_PER_BIT(rx_io_CLK_PER_BIT),
+ .io_rxd(rx_io_rxd),
+ .io_valid(rx_io_valid),
+ .io_data(rx_io_data)
+ );
+ assign io_rx_data_o = regFinalData; // @[UartController.scala 77:16]
+ assign io_addr_o = regAddr[7:0]; // @[UartController.scala 76:13]
+ assign io_valid = regValid; // @[UartController.scala 78:12]
+ assign io_done = regDone; // @[UartController.scala 79:11]
+ //assign rx_clock = clock;
+ //assign rxreset = reset;
+ assign rx_io_CLK_PER_BIT = io_CLK_PER_BIT; // @[UartController.scala 27:21]
+ assign rx_io_rxd = io_rxd; // @[UartController.scala 28:13]
+`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}};
+ regDone = _RAND_0[0:0];
+ _RAND_1 = {1{`RANDOM}};
+ count = _RAND_1[2:0];
+ _RAND_2 = {1{`RANDOM}};
+ regFinalData = _RAND_2[31:0];
+ _RAND_3 = {1{`RANDOM}};
+ regAddr = _RAND_3[13:0];
+ _RAND_4 = {1{`RANDOM}};
+ regValid = _RAND_4[0:0];
+ _RAND_5 = {1{`RANDOM}};
+ dataReg = _RAND_5[7:0];
+ _RAND_6 = {1{`RANDOM}};
+ regLSB1 = _RAND_6[7:0];
+ _RAND_7 = {1{`RANDOM}};
+ regLSB2 = _RAND_7[7:0];
+ _RAND_8 = {1{`RANDOM}};
+ regMSB1 = _RAND_8[7:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ regDone <= 1'h0;
+ end else if (!(_T_5)) begin
+ if (!(_T_6)) begin
+ if (!(_T_7)) begin
+ if (_T_8) begin
+ regDone <= _GEN_6;
+ end
+ end
+ end
+ end
+ if (reset) begin
+ count <= 3'h0;
+ end else if (_T_15) begin
+ count <= 3'h0;
+ end else if (_T_1) begin
+ if (_T_2) begin
+ count <= _T_4;
+ end
+ end
+ if (reset) begin
+ regFinalData <= 32'h0;
+ end else if (!(_T_5)) begin
+ if (!(_T_6)) begin
+ if (!(_T_7)) begin
+ if (_T_8) begin
+ if (_T_12) begin
+ regFinalData <= 32'h0;
+ end else begin
+ regFinalData <= _T_11;
+ end
+ end
+ end
+ end
+ end
+ if (reset) begin
+ regAddr <= 14'h3fff;
+ end else if (!(_T_5)) begin
+ if (!(_T_6)) begin
+ if (!(_T_7)) begin
+ if (_T_8) begin
+ if (_T_12) begin
+ regAddr <= 14'h0;
+ end else begin
+ regAddr <= _T_14;
+ end
+ end
+ end
+ end
+ end
+ if (reset) begin
+ regValid <= 1'h0;
+ end else if (_T_5) begin
+ if (_T_1) begin
+ if (_T_2) begin
+ regValid <= 1'h0;
+ end
+ end
+ end else if (_T_6) begin
+ if (_T_1) begin
+ if (_T_2) begin
+ regValid <= 1'h0;
+ end
+ end
+ end else if (_T_7) begin
+ if (_T_1) begin
+ if (_T_2) begin
+ regValid <= 1'h0;
+ end
+ end
+ end else if (_T_8) begin
+ if (_T_12) begin
+ regValid <= 1'h0;
+ end else begin
+ regValid <= 1'h1;
+ end
+ end else if (_T_1) begin
+ if (_T_2) begin
+ regValid <= 1'h0;
+ end
+ end
+ if (reset) begin
+ dataReg <= 8'h0;
+ end else if (_T_1) begin
+ if (_T_2) begin
+ dataReg <= rx_io_data;
+ end
+ end
+ if (reset) begin
+ regLSB1 <= 8'h0;
+ end else if (_T_5) begin
+ regLSB1 <= dataReg;
+ end
+ if (reset) begin
+ regLSB2 <= 8'h0;
+ end else if (!(_T_5)) begin
+ if (_T_6) begin
+ regLSB2 <= dataReg;
+ end
+ end
+ if (reset) begin
+ regMSB1 <= 8'h0;
+ end else if (!(_T_5)) begin
+ if (!(_T_6)) begin
+ if (_T_7) begin
+ regMSB1 <= dataReg;
+ end
+ end
+ end
+ end
+endmodule
+module ID_EX(
+ input clock,
+ input reset,
+ input [31:0] io_pc_in,
+ input [31:0] io_pc4_in,
+ input [4:0] io_rs1_sel_in,
+ input [4:0] io_rs2_sel_in,
+ input [31:0] io_rs1_in,
+ input [31:0] io_rs2_in,
+ input [31:0] io_imm,
+ input [4:0] io_rd_sel_in,
+ input [2:0] io_func3_in,
+ input [6:0] io_func7_in,
+ input io_ctrl_MemWr_in,
+ input io_ctrl_MemRd_in,
+ input io_ctrl_CsrWen_in,
+ input io_ctrl_RegWr_in,
+ input io_ctrl_MemToReg_in,
+ input [3:0] io_ctrl_AluOp_in,
+ input [1:0] io_ctrl_OpA_sel_in,
+ input io_ctrl_OpB_sel_in,
+ input [6:0] io_inst_op_in,
+ input [31:0] io_csr_data_i,
+ input io_stall,
+ output [31:0] io_pc_out,
+ output [31:0] io_pc4_out,
+ output [31:0] io_rs1_out,
+ output [31:0] io_rs2_out,
+ output [31:0] io_imm_out,
+ output [2:0] io_func3_out,
+ output [6:0] io_func7_out,
+ output [6:0] io_inst_op_out,
+ output [4:0] io_rd_sel_out,
+ output [4:0] io_rs1_sel_out,
+ output [4:0] io_rs2_sel_out,
+ output io_ctrl_MemWr_out,
+ output io_ctrl_MemRd_out,
+ output io_ctrl_RegWr_out,
+ output io_ctrl_CsrWen_out,
+ output io_ctrl_MemToReg_out,
+ output [3:0] io_ctrl_AluOp_out,
+ output [1:0] io_ctrl_OpA_sel_out,
+ output io_ctrl_OpB_sel_out,
+ output [31:0] io_csr_data_o
+);
+`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;
+`endif // RANDOMIZE_REG_INIT
+ reg [31:0] pc_reg; // @[ID_EX.scala 59:25]
+ reg [31:0] pc4_reg; // @[ID_EX.scala 60:26]
+ reg [31:0] rs1_reg; // @[ID_EX.scala 61:26]
+ reg [31:0] rs2_reg; // @[ID_EX.scala 62:26]
+ reg [31:0] imm_reg; // @[ID_EX.scala 63:26]
+ reg [4:0] rd_sel_reg; // @[ID_EX.scala 64:29]
+ reg [4:0] rs1_sel_reg; // @[ID_EX.scala 65:30]
+ reg [4:0] rs2_sel_reg; // @[ID_EX.scala 66:30]
+ reg [2:0] func3_reg; // @[ID_EX.scala 67:28]
+ reg [6:0] func7_reg; // @[ID_EX.scala 68:28]
+ reg [6:0] inst_op_reg; // @[ID_EX.scala 69:30]
+ reg [31:0] csr_data_reg; // @[ID_EX.scala 71:31]
+ reg ctrl_MemWr_reg; // @[ID_EX.scala 73:33]
+ reg ctrl_MemRd_reg; // @[ID_EX.scala 74:33]
+ reg ctrl_RegWr_reg; // @[ID_EX.scala 76:33]
+ reg ctrl_CsrWen_reg; // @[ID_EX.scala 77:34]
+ reg ctrl_MemToReg_reg; // @[ID_EX.scala 78:36]
+ reg [3:0] ctrl_AluOp_reg; // @[ID_EX.scala 79:33]
+ reg [1:0] ctrl_OpA_sel_reg; // @[ID_EX.scala 80:35]
+ reg ctrl_OpB_sel_reg; // @[ID_EX.scala 81:35]
+ wire _T = ~io_stall; // @[ID_EX.scala 85:19]
+ assign io_pc_out = pc_reg; // @[ID_EX.scala 113:19 ID_EX.scala 140:19]
+ assign io_pc4_out = pc4_reg; // @[ID_EX.scala 114:20 ID_EX.scala 141:20]
+ assign io_rs1_out = rs1_reg; // @[ID_EX.scala 115:20 ID_EX.scala 142:20]
+ assign io_rs2_out = rs2_reg; // @[ID_EX.scala 116:20 ID_EX.scala 143:20]
+ assign io_imm_out = imm_reg; // @[ID_EX.scala 118:20 ID_EX.scala 145:20]
+ assign io_func3_out = func3_reg; // @[ID_EX.scala 122:22 ID_EX.scala 149:22]
+ assign io_func7_out = func7_reg; // @[ID_EX.scala 123:22 ID_EX.scala 150:22]
+ assign io_inst_op_out = inst_op_reg; // @[ID_EX.scala 124:24 ID_EX.scala 151:24]
+ assign io_rd_sel_out = rd_sel_reg; // @[ID_EX.scala 119:23 ID_EX.scala 146:23]
+ assign io_rs1_sel_out = rs1_sel_reg; // @[ID_EX.scala 120:24 ID_EX.scala 147:24]
+ assign io_rs2_sel_out = rs2_sel_reg; // @[ID_EX.scala 121:24 ID_EX.scala 148:24]
+ assign io_ctrl_MemWr_out = ctrl_MemWr_reg; // @[ID_EX.scala 126:27 ID_EX.scala 154:27]
+ assign io_ctrl_MemRd_out = ctrl_MemRd_reg; // @[ID_EX.scala 127:27 ID_EX.scala 155:27]
+ assign io_ctrl_RegWr_out = ctrl_RegWr_reg; // @[ID_EX.scala 129:27 ID_EX.scala 157:27]
+ assign io_ctrl_CsrWen_out = ctrl_CsrWen_reg; // @[ID_EX.scala 130:28 ID_EX.scala 158:28]
+ assign io_ctrl_MemToReg_out = ctrl_MemToReg_reg; // @[ID_EX.scala 131:30 ID_EX.scala 159:30]
+ assign io_ctrl_AluOp_out = ctrl_AluOp_reg; // @[ID_EX.scala 132:27 ID_EX.scala 160:27]
+ assign io_ctrl_OpA_sel_out = ctrl_OpA_sel_reg; // @[ID_EX.scala 133:29 ID_EX.scala 161:29]
+ assign io_ctrl_OpB_sel_out = ctrl_OpB_sel_reg; // @[ID_EX.scala 134:29 ID_EX.scala 162:29]
+ assign io_csr_data_o = csr_data_reg; // @[ID_EX.scala 117:23 ID_EX.scala 144:23]
+`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];
+ _RAND_1 = {1{`RANDOM}};
+ pc4_reg = _RAND_1[31:0];
+ _RAND_2 = {1{`RANDOM}};
+ rs1_reg = _RAND_2[31:0];
+ _RAND_3 = {1{`RANDOM}};
+ rs2_reg = _RAND_3[31:0];
+ _RAND_4 = {1{`RANDOM}};
+ imm_reg = _RAND_4[31:0];
+ _RAND_5 = {1{`RANDOM}};
+ rd_sel_reg = _RAND_5[4:0];
+ _RAND_6 = {1{`RANDOM}};
+ rs1_sel_reg = _RAND_6[4:0];
+ _RAND_7 = {1{`RANDOM}};
+ rs2_sel_reg = _RAND_7[4:0];
+ _RAND_8 = {1{`RANDOM}};
+ func3_reg = _RAND_8[2:0];
+ _RAND_9 = {1{`RANDOM}};
+ func7_reg = _RAND_9[6:0];
+ _RAND_10 = {1{`RANDOM}};
+ inst_op_reg = _RAND_10[6:0];
+ _RAND_11 = {1{`RANDOM}};
+ csr_data_reg = _RAND_11[31:0];
+ _RAND_12 = {1{`RANDOM}};
+ ctrl_MemWr_reg = _RAND_12[0:0];
+ _RAND_13 = {1{`RANDOM}};
+ ctrl_MemRd_reg = _RAND_13[0:0];
+ _RAND_14 = {1{`RANDOM}};
+ ctrl_RegWr_reg = _RAND_14[0:0];
+ _RAND_15 = {1{`RANDOM}};
+ ctrl_CsrWen_reg = _RAND_15[0:0];
+ _RAND_16 = {1{`RANDOM}};
+ ctrl_MemToReg_reg = _RAND_16[0:0];
+ _RAND_17 = {1{`RANDOM}};
+ ctrl_AluOp_reg = _RAND_17[3:0];
+ _RAND_18 = {1{`RANDOM}};
+ ctrl_OpA_sel_reg = _RAND_18[1:0];
+ _RAND_19 = {1{`RANDOM}};
+ ctrl_OpB_sel_reg = _RAND_19[0:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ pc_reg <= 32'sh0;
+ end else if (_T) begin
+ pc_reg <= io_pc_in;
+ end
+ if (reset) begin
+ pc4_reg <= 32'sh0;
+ end else if (_T) begin
+ pc4_reg <= io_pc4_in;
+ end
+ if (reset) begin
+ rs1_reg <= 32'sh0;
+ end else if (_T) begin
+ rs1_reg <= io_rs1_in;
+ end
+ if (reset) begin
+ rs2_reg <= 32'sh0;
+ end else if (_T) begin
+ rs2_reg <= io_rs2_in;
+ end
+ if (reset) begin
+ imm_reg <= 32'sh0;
+ end else if (_T) begin
+ imm_reg <= io_imm;
+ end
+ if (reset) begin
+ rd_sel_reg <= 5'h0;
+ end else if (_T) begin
+ rd_sel_reg <= io_rd_sel_in;
+ end
+ if (reset) begin
+ rs1_sel_reg <= 5'h0;
+ end else if (_T) begin
+ rs1_sel_reg <= io_rs1_sel_in;
+ end
+ if (reset) begin
+ rs2_sel_reg <= 5'h0;
+ end else if (_T) begin
+ rs2_sel_reg <= io_rs2_sel_in;
+ end
+ if (reset) begin
+ func3_reg <= 3'h0;
+ end else if (_T) begin
+ func3_reg <= io_func3_in;
+ end
+ if (reset) begin
+ func7_reg <= 7'h0;
+ end else if (_T) begin
+ func7_reg <= io_func7_in;
+ end
+ if (reset) begin
+ inst_op_reg <= 7'h0;
+ end else if (_T) begin
+ inst_op_reg <= io_inst_op_in;
+ end
+ if (reset) begin
+ csr_data_reg <= 32'h0;
+ end else if (_T) begin
+ csr_data_reg <= io_csr_data_i;
+ end
+ if (reset) begin
+ ctrl_MemWr_reg <= 1'h0;
+ end else if (_T) begin
+ ctrl_MemWr_reg <= io_ctrl_MemWr_in;
+ end
+ if (reset) begin
+ ctrl_MemRd_reg <= 1'h0;
+ end else if (_T) begin
+ ctrl_MemRd_reg <= io_ctrl_MemRd_in;
+ end
+ if (reset) begin
+ ctrl_RegWr_reg <= 1'h0;
+ end else if (_T) begin
+ ctrl_RegWr_reg <= io_ctrl_RegWr_in;
+ end
+ if (reset) begin
+ ctrl_CsrWen_reg <= 1'h0;
+ end else if (_T) begin
+ ctrl_CsrWen_reg <= io_ctrl_CsrWen_in;
+ end
+ if (reset) begin
+ ctrl_MemToReg_reg <= 1'h0;
+ end else if (_T) begin
+ ctrl_MemToReg_reg <= io_ctrl_MemToReg_in;
+ end
+ if (reset) begin
+ ctrl_AluOp_reg <= 4'h0;
+ end else if (_T) begin
+ ctrl_AluOp_reg <= io_ctrl_AluOp_in;
+ end
+ if (reset) begin
+ ctrl_OpA_sel_reg <= 2'h0;
+ end else if (_T) begin
+ ctrl_OpA_sel_reg <= io_ctrl_OpA_sel_in;
+ end
+ if (reset) begin
+ ctrl_OpB_sel_reg <= 1'h0;
+ end else if (_T) begin
+ ctrl_OpB_sel_reg <= io_ctrl_OpB_sel_in;
+ end
+ end
+endmodule
+module EX_MEM(
+ input clock,
+ input reset,
+ input io_ctrl_MemWr_in,
+ input io_ctrl_MemRd_in,
+ input io_ctrl_RegWr_in,
+ input io_ctrl_CsrWen_in,
+ input io_ctrl_MemToReg_in,
+ input [31:0] io_rs2_in,
+ input [4:0] io_rd_sel_in,
+ input [31:0] io_alu_in,
+ input [2:0] io_EX_MEM_func3,
+ input [31:0] io_csr_data_i,
+ input io_stall,
+ output io_ctrl_MemWr_out,
+ output io_ctrl_MemRd_out,
+ output io_ctrl_RegWr_out,
+ output io_ctrl_CsrWen_out,
+ output io_ctrl_MemToReg_out,
+ output [31:0] io_rs2_out,
+ output [4:0] io_rd_sel_out,
+ output [31:0] io_alu_output,
+ output [2:0] io_EX_MEM_func3_out,
+ output [31:0] io_csr_data_o
+);
+`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;
+`endif // RANDOMIZE_REG_INIT
+ reg reg_memWr; // @[EX_MEM.scala 37:32]
+ reg reg_memRd; // @[EX_MEM.scala 38:32]
+ reg reg_regWr; // @[EX_MEM.scala 39:32]
+ reg reg_csrWen; // @[EX_MEM.scala 40:33]
+ reg reg_memToReg; // @[EX_MEM.scala 41:35]
+ reg [31:0] reg_rs2; // @[EX_MEM.scala 42:30]
+ reg [4:0] reg_rd_sel; // @[EX_MEM.scala 43:33]
+ reg [31:0] reg_alu_output; // @[EX_MEM.scala 45:37]
+ reg [2:0] reg_func3; // @[EX_MEM.scala 46:37]
+ reg [31:0] reg_csr_data; // @[EX_MEM.scala 49:35]
+ wire _T = ~io_stall; // @[EX_MEM.scala 51:19]
+ assign io_ctrl_MemWr_out = reg_memWr; // @[EX_MEM.scala 82:23]
+ assign io_ctrl_MemRd_out = reg_memRd; // @[EX_MEM.scala 83:23]
+ assign io_ctrl_RegWr_out = reg_regWr; // @[EX_MEM.scala 84:23]
+ assign io_ctrl_CsrWen_out = reg_csrWen; // @[EX_MEM.scala 85:24]
+ assign io_ctrl_MemToReg_out = reg_memToReg; // @[EX_MEM.scala 86:26]
+ assign io_rs2_out = reg_rs2; // @[EX_MEM.scala 87:16]
+ assign io_rd_sel_out = reg_rd_sel; // @[EX_MEM.scala 88:19]
+ assign io_alu_output = reg_alu_output; // @[EX_MEM.scala 90:19]
+ assign io_EX_MEM_func3_out = reg_func3; // @[EX_MEM.scala 91:25]
+ assign io_csr_data_o = reg_csr_data; // @[EX_MEM.scala 94:19]
+`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_memWr = _RAND_0[0:0];
+ _RAND_1 = {1{`RANDOM}};
+ reg_memRd = _RAND_1[0:0];
+ _RAND_2 = {1{`RANDOM}};
+ reg_regWr = _RAND_2[0:0];
+ _RAND_3 = {1{`RANDOM}};
+ reg_csrWen = _RAND_3[0:0];
+ _RAND_4 = {1{`RANDOM}};
+ reg_memToReg = _RAND_4[0:0];
+ _RAND_5 = {1{`RANDOM}};
+ reg_rs2 = _RAND_5[31:0];
+ _RAND_6 = {1{`RANDOM}};
+ reg_rd_sel = _RAND_6[4:0];
+ _RAND_7 = {1{`RANDOM}};
+ reg_alu_output = _RAND_7[31:0];
+ _RAND_8 = {1{`RANDOM}};
+ reg_func3 = _RAND_8[2:0];
+ _RAND_9 = {1{`RANDOM}};
+ reg_csr_data = _RAND_9[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ reg_memWr <= 1'h0;
+ end else if (_T) begin
+ reg_memWr <= io_ctrl_MemWr_in;
+ end
+ if (reset) begin
+ reg_memRd <= 1'h0;
+ end else if (_T) begin
+ reg_memRd <= io_ctrl_MemRd_in;
+ end
+ if (reset) begin
+ reg_regWr <= 1'h0;
+ end else if (_T) begin
+ reg_regWr <= io_ctrl_RegWr_in;
+ end
+ if (reset) begin
+ reg_csrWen <= 1'h0;
+ end else if (_T) begin
+ reg_csrWen <= io_ctrl_CsrWen_in;
+ end
+ if (reset) begin
+ reg_memToReg <= 1'h0;
+ end else if (_T) begin
+ reg_memToReg <= io_ctrl_MemToReg_in;
+ end
+ if (reset) begin
+ reg_rs2 <= 32'sh0;
+ end else if (_T) begin
+ reg_rs2 <= io_rs2_in;
+ end
+ if (reset) begin
+ reg_rd_sel <= 5'h0;
+ end else if (_T) begin
+ reg_rd_sel <= io_rd_sel_in;
+ end
+ if (reset) begin
+ reg_alu_output <= 32'sh0;
+ end else if (_T) begin
+ reg_alu_output <= io_alu_in;
+ end
+ if (reset) begin
+ reg_func3 <= 3'h0;
+ end else if (_T) begin
+ reg_func3 <= io_EX_MEM_func3;
+ end
+ if (reset) begin
+ reg_csr_data <= 32'h0;
+ end else if (_T) begin
+ reg_csr_data <= io_csr_data_i;
+ end
+ end
+endmodule
+module MEM_WB(
+ input clock,
+ input reset,
+ input io_ctrl_RegWr_in,
+ input io_ctrl_CsrWen_in,
+ input io_ctrl_MemToReg_in,
+ input [4:0] io_rd_sel_in,
+ input io_ctrl_MemRd_in,
+ input [31:0] io_dmem_data_in,
+ input [31:0] io_alu_in,
+ input [31:0] io_csr_data_in,
+ input io_stall,
+ output io_ctrl_RegWr_out,
+ output io_ctrl_CsrWen_out,
+ output io_ctrl_MemToReg_out,
+ output io_ctrl_MemRd_out,
+ output [4:0] io_rd_sel_out,
+ output [31:0] io_dmem_data_out,
+ output [31:0] io_alu_output,
+ output [31:0] io_csr_data_out
+);
+`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;
+`endif // RANDOMIZE_REG_INIT
+ reg reg_regWr; // @[MEM_WB.scala 32:28]
+ reg reg_csrWen; // @[MEM_WB.scala 34:29]
+ reg reg_memToReg; // @[MEM_WB.scala 36:31]
+ reg reg_memRd; // @[MEM_WB.scala 38:28]
+ reg [4:0] reg_rdSel; // @[MEM_WB.scala 40:28]
+ reg [31:0] reg_dataMem_data; // @[MEM_WB.scala 42:35]
+ reg [31:0] reg_alu_output; // @[MEM_WB.scala 44:33]
+ reg [31:0] reg_csr_data; // @[MEM_WB.scala 50:31]
+ wire _T = ~io_stall; // @[MEM_WB.scala 52:19]
+ assign io_ctrl_RegWr_out = reg_regWr; // @[MEM_WB.scala 65:27 MEM_WB.scala 76:27]
+ assign io_ctrl_CsrWen_out = reg_csrWen; // @[MEM_WB.scala 66:28 MEM_WB.scala 77:28]
+ assign io_ctrl_MemToReg_out = reg_memToReg; // @[MEM_WB.scala 64:30 MEM_WB.scala 75:30]
+ assign io_ctrl_MemRd_out = reg_memRd; // @[MEM_WB.scala 67:27 MEM_WB.scala 78:27]
+ assign io_rd_sel_out = reg_rdSel; // @[MEM_WB.scala 68:23 MEM_WB.scala 79:23]
+ assign io_dmem_data_out = reg_dataMem_data; // @[MEM_WB.scala 69:26 MEM_WB.scala 80:26]
+ assign io_alu_output = reg_alu_output; // @[MEM_WB.scala 70:23 MEM_WB.scala 81:23]
+ assign io_csr_data_out = reg_csr_data; // @[MEM_WB.scala 73:25 MEM_WB.scala 84:25]
+`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_regWr = _RAND_0[0:0];
+ _RAND_1 = {1{`RANDOM}};
+ reg_csrWen = _RAND_1[0:0];
+ _RAND_2 = {1{`RANDOM}};
+ reg_memToReg = _RAND_2[0:0];
+ _RAND_3 = {1{`RANDOM}};
+ reg_memRd = _RAND_3[0:0];
+ _RAND_4 = {1{`RANDOM}};
+ reg_rdSel = _RAND_4[4:0];
+ _RAND_5 = {1{`RANDOM}};
+ reg_dataMem_data = _RAND_5[31:0];
+ _RAND_6 = {1{`RANDOM}};
+ reg_alu_output = _RAND_6[31:0];
+ _RAND_7 = {1{`RANDOM}};
+ reg_csr_data = _RAND_7[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ reg_regWr <= 1'h0;
+ end else if (_T) begin
+ reg_regWr <= io_ctrl_RegWr_in;
+ end
+ if (reset) begin
+ reg_csrWen <= 1'h0;
+ end else if (_T) begin
+ reg_csrWen <= io_ctrl_CsrWen_in;
+ end
+ if (reset) begin
+ reg_memToReg <= 1'h0;
+ end else if (_T) begin
+ reg_memToReg <= io_ctrl_MemToReg_in;
+ end
+ if (reset) begin
+ reg_memRd <= 1'h0;
+ end else if (_T) begin
+ reg_memRd <= io_ctrl_MemRd_in;
+ end
+ if (reset) begin
+ reg_rdSel <= 5'h0;
+ end else if (_T) begin
+ reg_rdSel <= io_rd_sel_in;
+ end
+ if (reset) begin
+ reg_dataMem_data <= 32'sh0;
+ end else if (_T) begin
+ reg_dataMem_data <= io_dmem_data_in;
+ end
+ if (reset) begin
+ reg_alu_output <= 32'sh0;
+ end else if (_T) begin
+ reg_alu_output <= io_alu_in;
+ end
+ if (reset) begin
+ reg_csr_data <= 32'h0;
+ end else if (_T) begin
+ reg_csr_data <= io_csr_data_in;
+ end
+ end
+endmodule
+module Pc(
+ input clock,
+ input reset,
+ input [31:0] io_in,
+ output [31:0] io_out,
+ output [31:0] io_pc4
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ wire [31:0] _T_2 = 32'sh30 - 32'sh4; // @[Pc.scala 13:30]
+ reg [31:0] reg_; // @[Pc.scala 13:18]
+ assign io_out = reg_; // @[Pc.scala 16:12]
+ assign io_pc4 = $signed(reg_) + 32'sh4; // @[Pc.scala 15:12]
+`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_ = _RAND_0[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ reg_ <= _T_2;
+ end else begin
+ reg_ <= io_in;
+ end
+ end
+endmodule
+module Fetch(
+ input clock,
+ input reset,
+ input io_core_instr_gnt_i,
+ input io_core_instr_rvalid_i,
+ input [31:0] io_core_instr_rdata_i,
+ input io_csrRegFile_irq_pending_i,
+ input io_csrRegFile_csr_mstatus_mie_i,
+ input [31:0] io_csrRegFile_csr_mtvec_i,
+ output io_csrRegFile_csr_mtvec_init_o,
+ output io_csrRegFile_csr_save_cause_o,
+ output io_csrRegFile_csr_save_if_o,
+ output [31:0] io_csrRegFile_csr_if_pc_o,
+ output [5:0] io_csrRegFile_exc_cause_o,
+ input [31:0] io_csrRegFile_csr_mepc_i,
+ input io_core_init_mtvec_i,
+ input [31:0] io_decode_sb_imm_i,
+ input [31:0] io_decode_uj_imm_i,
+ input [31:0] io_decode_jalr_imm_i,
+ input [1:0] io_decode_ctrl_next_pc_sel_i,
+ input io_decode_ctrl_out_branch_i,
+ input io_decode_branchLogic_output_i,
+ input [31:0] io_decode_hazardDetection_pc_i,
+ input [31:0] io_decode_hazardDetection_inst_i,
+ input [31:0] io_decode_hazardDetection_current_pc_i,
+ input io_decode_hazardDetection_pc_forward_i,
+ input io_decode_hazardDetection_inst_forward_i,
+ input io_decode_mret_inst_i,
+ input io_core_stall_i,
+ output [31:0] io_core_instr_addr_o,
+ output io_core_instr_req_o,
+ output [31:0] io_decode_if_id_pc_o,
+ output [31:0] io_decode_if_id_pc4_o,
+ output [31:0] io_decode_if_id_inst_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 pc_clock; // @[Fetch.scala 94:18]
+ // wire pcreset; // @[Fetch.scala 94:18]
+ wire [31:0] pc_io_in; // @[Fetch.scala 94:18]
+ wire [31:0] pc_io_out; // @[Fetch.scala 94:18]
+ wire [31:0] pc_io_pc4; // @[Fetch.scala 94:18]
+ reg [31:0] if_id_pc_reg; // @[Fetch.scala 102:25]
+ reg [31:0] if_id_pc4_reg; // @[Fetch.scala 103:26]
+ reg [31:0] if_id_inst_reg; // @[Fetch.scala 104:31]
+ wire handle_irq = io_csrRegFile_irq_pending_i & io_csrRegFile_csr_mstatus_mie_i; // @[Fetch.scala 107:48]
+ wire _T_12 = ~io_core_stall_i; // @[Fetch.scala 127:8]
+ wire _T_13 = ~handle_irq; // @[Fetch.scala 127:28]
+ wire _T_14 = _T_12 & _T_13; // @[Fetch.scala 127:25]
+ wire [31:0] _GEN_0 = _T_14 ? $signed(pc_io_out) : $signed(if_id_pc_reg); // @[Fetch.scala 127:38]
+ wire _T_23 = io_decode_ctrl_next_pc_sel_i == 2'h1; // @[Fetch.scala 163:41]
+ wire _T_26 = io_decode_branchLogic_output_i & io_decode_ctrl_out_branch_i; // @[Fetch.scala 164:53]
+ wire [31:0] _GEN_6 = _T_26 ? $signed(io_decode_sb_imm_i) : $signed(pc_io_pc4); // @[Fetch.scala 164:93]
+ wire _T_27 = io_decode_ctrl_next_pc_sel_i == 2'h2; // @[Fetch.scala 172:47]
+ wire _T_28 = io_decode_ctrl_next_pc_sel_i == 2'h3; // @[Fetch.scala 177:47]
+ wire [31:0] _GEN_10 = io_decode_mret_inst_i ? $signed(io_csrRegFile_csr_mepc_i) : $signed(pc_io_pc4); // @[Fetch.scala 182:41]
+ wire [31:0] _GEN_14 = _T_28 ? $signed(io_decode_jalr_imm_i) : $signed(_GEN_10); // @[Fetch.scala 177:60]
+ wire [31:0] _GEN_18 = _T_27 ? $signed(io_decode_uj_imm_i) : $signed(_GEN_14); // @[Fetch.scala 172:60]
+ wire [31:0] _GEN_22 = _T_23 ? $signed(_GEN_6) : $signed(_GEN_18); // @[Fetch.scala 163:54]
+ wire [31:0] _GEN_26 = io_decode_hazardDetection_pc_forward_i ? $signed(io_decode_hazardDetection_pc_i) : $signed(_GEN_22); // @[Fetch.scala 160:58]
+ wire _T_31 = _T_12 & handle_irq; // @[Fetch.scala 191:31]
+ wire [31:0] _T_37 = {io_csrRegFile_csr_mtvec_i[31:8],1'h0,7'h2c}; // @[Fetch.scala 192:123]
+ wire [31:0] _T_45 = _T_28 ? io_decode_jalr_imm_i : pc_io_out; // @[Fetch.scala 200:12]
+ wire [31:0] _T_46 = _T_27 ? io_decode_uj_imm_i : _T_45; // @[Fetch.scala 199:10]
+ wire [31:0] _T_47 = _T_23 ? io_decode_sb_imm_i : _T_46; // @[Fetch.scala 198:37]
+ wire [31:0] _GEN_30 = _T_31 ? $signed(_T_37) : $signed(pc_io_out); // @[Fetch.scala 191:43]
+ wire [31:0] _GEN_33 = _T_31 ? _T_47 : 32'h0; // @[Fetch.scala 191:43]
+ wire [5:0] _GEN_34 = _T_31 ? 6'h2b : 6'h0; // @[Fetch.scala 191:43]
+ Pc pc ( // @[Fetch.scala 94:18]
+ .clock(clock),
+ .reset(reset),
+ .io_in(pc_io_in),
+ .io_out(pc_io_out),
+ .io_pc4(pc_io_pc4)
+ );
+ assign io_csrRegFile_csr_mtvec_init_o = io_core_init_mtvec_i; // @[Fetch.scala 114:34]
+ assign io_csrRegFile_csr_save_cause_o = _T_14 ? 1'h0 : _T_31; // @[Fetch.scala 99:34 Fetch.scala 118:34 Fetch.scala 201:36]
+ assign io_csrRegFile_csr_save_if_o = _T_14 ? 1'h0 : _T_31; // @[Fetch.scala 97:31 Fetch.scala 117:31 Fetch.scala 194:33]
+ assign io_csrRegFile_csr_if_pc_o = _T_14 ? 32'h0 : _GEN_33; // @[Fetch.scala 98:29 Fetch.scala 198:31]
+ assign io_csrRegFile_exc_cause_o = _T_14 ? 6'h0 : _GEN_34; // @[Fetch.scala 119:29 Fetch.scala 202:31]
+ assign io_core_instr_addr_o = {{18'd0}, pc_io_in[13:0]}; // @[Fetch.scala 121:24]
+ assign io_core_instr_req_o = io_core_instr_gnt_i; // @[Fetch.scala 123:23]
+ assign io_decode_if_id_pc_o = if_id_pc_reg; // @[Fetch.scala 209:24]
+ assign io_decode_if_id_pc4_o = if_id_pc4_reg; // @[Fetch.scala 210:25]
+ assign io_decode_if_id_inst_o = if_id_inst_reg; // @[Fetch.scala 211:26]
+ //assign pc_clock = clock;
+// assign pcreset = reset;
+ assign pc_io_in = _T_14 ? $signed(_GEN_26) : $signed(_GEN_30); // @[Fetch.scala 161:16 Fetch.scala 165:20 Fetch.scala 170:20 Fetch.scala 173:18 Fetch.scala 178:18 Fetch.scala 183:18 Fetch.scala 188:18 Fetch.scala 192:14 Fetch.scala 205:16]
+`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_id_pc_reg = _RAND_0[31:0];
+ _RAND_1 = {1{`RANDOM}};
+ if_id_pc4_reg = _RAND_1[31:0];
+ _RAND_2 = {1{`RANDOM}};
+ if_id_inst_reg = _RAND_2[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (_T_14) begin
+ if (io_decode_hazardDetection_pc_forward_i) begin
+ if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_pc_reg <= io_decode_hazardDetection_current_pc_i;
+ end else if (_T_14) begin
+ if_id_pc_reg <= pc_io_out;
+ end
+ end else if (_T_14) begin
+ if_id_pc_reg <= pc_io_out;
+ end
+ end else if (_T_23) begin
+ if (_T_26) begin
+ if_id_pc_reg <= 32'sh0;
+ end else if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_pc_reg <= io_decode_hazardDetection_current_pc_i;
+ end else if (_T_14) begin
+ if_id_pc_reg <= pc_io_out;
+ end
+ end else if (_T_14) begin
+ if_id_pc_reg <= pc_io_out;
+ end
+ end else if (_T_27) begin
+ if_id_pc_reg <= 32'sh0;
+ end else if (_T_28) begin
+ if_id_pc_reg <= 32'sh0;
+ end else if (io_decode_mret_inst_i) begin
+ if_id_pc_reg <= 32'sh0;
+ end else if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_pc_reg <= io_decode_hazardDetection_current_pc_i;
+ end else begin
+ if_id_pc_reg <= _GEN_0;
+ end
+ end else begin
+ if_id_pc_reg <= _GEN_0;
+ end
+ end else if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_pc_reg <= io_decode_hazardDetection_current_pc_i;
+ end else begin
+ if_id_pc_reg <= _GEN_0;
+ end
+ end else begin
+ if_id_pc_reg <= _GEN_0;
+ end
+ if (_T_14) begin
+ if (io_decode_hazardDetection_pc_forward_i) begin
+ if (_T_14) begin
+ if_id_pc4_reg <= pc_io_pc4;
+ end
+ end else if (_T_23) begin
+ if (_T_26) begin
+ if_id_pc4_reg <= 32'sh0;
+ end else if (_T_14) begin
+ if_id_pc4_reg <= pc_io_pc4;
+ end
+ end else if (_T_27) begin
+ if_id_pc4_reg <= 32'sh0;
+ end else if (_T_28) begin
+ if_id_pc4_reg <= 32'sh0;
+ end else if (io_decode_mret_inst_i) begin
+ if_id_pc4_reg <= 32'sh0;
+ end else if (_T_14) begin
+ if_id_pc4_reg <= pc_io_pc4;
+ end
+ end else if (_T_14) begin
+ if_id_pc4_reg <= pc_io_pc4;
+ end
+ if (reset) begin
+ if_id_inst_reg <= 32'h13;
+ end else if (_T_14) begin
+ if (io_decode_hazardDetection_pc_forward_i) begin
+ if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_inst_reg <= io_decode_hazardDetection_inst_i;
+ end else if (io_core_instr_rvalid_i) begin
+ if_id_inst_reg <= io_core_instr_rdata_i;
+ end else begin
+ if_id_inst_reg <= 32'h13;
+ end
+ end
+ end else if (_T_23) begin
+ if (_T_26) begin
+ if_id_inst_reg <= 32'h13;
+ end else if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_inst_reg <= io_decode_hazardDetection_inst_i;
+ end else if (io_core_instr_rvalid_i) begin
+ if_id_inst_reg <= io_core_instr_rdata_i;
+ end else begin
+ if_id_inst_reg <= 32'h13;
+ end
+ end
+ end else if (_T_27) begin
+ if_id_inst_reg <= 32'h13;
+ end else if (_T_28) begin
+ if_id_inst_reg <= 32'h13;
+ end else if (io_decode_mret_inst_i) begin
+ if_id_inst_reg <= 32'h13;
+ end else if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_inst_reg <= io_decode_hazardDetection_inst_i;
+ end else if (io_core_instr_rvalid_i) begin
+ if_id_inst_reg <= io_core_instr_rdata_i;
+ end else begin
+ if_id_inst_reg <= 32'h13;
+ end
+ end
+ end else if (_T_31) begin
+ if_id_inst_reg <= 32'h13;
+ end else if (_T_14) begin
+ if (io_decode_hazardDetection_inst_forward_i) begin
+ if_id_inst_reg <= io_decode_hazardDetection_inst_i;
+ end else if (io_core_instr_rvalid_i) begin
+ if_id_inst_reg <= io_core_instr_rdata_i;
+ end else begin
+ if_id_inst_reg <= 32'h13;
+ end
+ end
+ end
+endmodule
+module HazardDetection(
+ input [31:0] io_IF_ID_INST,
+ input io_ID_EX_MEMREAD,
+ input [4:0] io_ID_EX_REGRD,
+ input [31:0] io_pc_in,
+ input [31:0] io_current_pc,
+ input io_IF_ID_MEMREAD,
+ output io_inst_forward,
+ output io_pc_forward,
+ output io_ctrl_forward,
+ output [31:0] io_inst_out,
+ output [31:0] io_pc_out,
+ output [31:0] io_current_pc_out
+);
+ wire [4:0] rs1_sel = io_IF_ID_INST[19:15]; // @[HazardDetection.scala 20:30]
+ wire [4:0] rs2_sel = io_IF_ID_INST[24:20]; // @[HazardDetection.scala 21:30]
+ wire _T_2 = io_ID_EX_REGRD == rs1_sel; // @[HazardDetection.scala 24:59]
+ wire _T_3 = io_ID_EX_MEMREAD & _T_2; // @[HazardDetection.scala 24:40]
+ wire _T_6 = io_ID_EX_REGRD == rs2_sel; // @[HazardDetection.scala 35:90]
+ wire _T_7 = _T_2 | _T_6; // @[HazardDetection.scala 35:71]
+ wire _T_8 = io_ID_EX_MEMREAD & _T_7; // @[HazardDetection.scala 35:38]
+ assign io_inst_forward = io_IF_ID_MEMREAD ? _T_3 : _T_8; // @[HazardDetection.scala 48:23 HazardDetection.scala 57:21 HazardDetection.scala 48:23 HazardDetection.scala 57:21]
+ assign io_pc_forward = io_IF_ID_MEMREAD ? _T_3 : _T_8; // @[HazardDetection.scala 49:21 HazardDetection.scala 58:19 HazardDetection.scala 49:21 HazardDetection.scala 58:19]
+ assign io_ctrl_forward = io_IF_ID_MEMREAD ? _T_3 : _T_8; // @[HazardDetection.scala 50:23 HazardDetection.scala 59:21 HazardDetection.scala 50:23 HazardDetection.scala 59:21]
+ assign io_inst_out = io_IF_ID_INST; // @[HazardDetection.scala 51:19 HazardDetection.scala 60:17 HazardDetection.scala 51:19 HazardDetection.scala 60:17]
+ assign io_pc_out = io_pc_in; // @[HazardDetection.scala 52:17 HazardDetection.scala 61:15 HazardDetection.scala 52:17 HazardDetection.scala 61:15]
+ assign io_current_pc_out = io_current_pc; // @[HazardDetection.scala 53:25 HazardDetection.scala 62:23 HazardDetection.scala 53:25 HazardDetection.scala 62:23]
+endmodule
+module InstructionTypeDecode(
+ input [2:0] io_func3,
+ input [6:0] io_func7,
+ input [6:0] io_opcode,
+ output io_r_type,
+ output io_load_type,
+ output io_s_type,
+ output io_sb_type,
+ output io_i_type,
+ output io_jalr_type,
+ output io_jal_type,
+ output io_lui_type,
+ output io_Auipc,
+ output io_multiply,
+ output io_csr_imm_type,
+ output io_csr_type,
+ output [1:0] io_csr_op
+);
+ wire _T = io_opcode == 7'h33; // @[InstructionTypeDecode.scala 27:20]
+ wire _T_1 = io_func7 == 7'h1; // @[InstructionTypeDecode.scala 29:23]
+ wire _GEN_1 = _T_1 ? 1'h0 : 1'h1; // @[InstructionTypeDecode.scala 30:9]
+ wire _T_2 = io_opcode == 7'h3; // @[InstructionTypeDecode.scala 39:25]
+ wire _T_3 = io_opcode == 7'h23; // @[InstructionTypeDecode.scala 41:27]
+ wire _T_4 = io_opcode == 7'h63; // @[InstructionTypeDecode.scala 43:27]
+ wire _T_5 = io_opcode == 7'h13; // @[InstructionTypeDecode.scala 45:27]
+ wire _T_6 = io_opcode == 7'h67; // @[InstructionTypeDecode.scala 47:27]
+ wire _T_7 = io_opcode == 7'h6f; // @[InstructionTypeDecode.scala 49:27]
+ wire _T_8 = io_opcode == 7'h37; // @[InstructionTypeDecode.scala 51:27]
+ wire _T_9 = io_opcode == 7'h17; // @[InstructionTypeDecode.scala 54:26]
+ wire _T_10 = io_opcode == 7'h73; // @[InstructionTypeDecode.scala 56:27]
+ wire _T_11 = io_func3 == 3'h1; // @[InstructionTypeDecode.scala 56:56]
+ wire _T_12 = _T_10 & _T_11; // @[InstructionTypeDecode.scala 56:44]
+ wire _T_14 = io_func3 == 3'h2; // @[InstructionTypeDecode.scala 59:56]
+ wire _T_15 = _T_10 & _T_14; // @[InstructionTypeDecode.scala 59:44]
+ wire _T_17 = io_func3 == 3'h3; // @[InstructionTypeDecode.scala 62:56]
+ wire _T_18 = _T_10 & _T_17; // @[InstructionTypeDecode.scala 62:44]
+ wire _T_20 = io_func3 == 3'h5; // @[InstructionTypeDecode.scala 65:56]
+ wire _T_21 = _T_10 & _T_20; // @[InstructionTypeDecode.scala 65:44]
+ wire _T_23 = io_func3 == 3'h6; // @[InstructionTypeDecode.scala 68:56]
+ wire _T_24 = _T_10 & _T_23; // @[InstructionTypeDecode.scala 68:44]
+ wire _T_26 = io_func3 == 3'h7; // @[InstructionTypeDecode.scala 71:56]
+ wire _T_27 = _T_10 & _T_26; // @[InstructionTypeDecode.scala 71:44]
+ wire [1:0] _GEN_3 = _T_27 ? 2'h3 : 2'h0; // @[InstructionTypeDecode.scala 71:70]
+ wire _GEN_5 = _T_24 | _T_27; // @[InstructionTypeDecode.scala 68:70]
+ wire [1:0] _GEN_6 = _T_24 ? 2'h2 : _GEN_3; // @[InstructionTypeDecode.scala 68:70]
+ wire _GEN_8 = _T_21 | _GEN_5; // @[InstructionTypeDecode.scala 65:70]
+ wire [1:0] _GEN_9 = _T_21 ? 2'h1 : _GEN_6; // @[InstructionTypeDecode.scala 65:70]
+ wire [1:0] _GEN_12 = _T_18 ? 2'h3 : _GEN_9; // @[InstructionTypeDecode.scala 62:70]
+ wire _GEN_13 = _T_18 ? 1'h0 : _GEN_8; // @[InstructionTypeDecode.scala 62:70]
+ wire _GEN_15 = _T_15 | _T_18; // @[InstructionTypeDecode.scala 59:70]
+ wire [1:0] _GEN_16 = _T_15 ? 2'h2 : _GEN_12; // @[InstructionTypeDecode.scala 59:70]
+ wire _GEN_17 = _T_15 ? 1'h0 : _GEN_13; // @[InstructionTypeDecode.scala 59:70]
+ wire _GEN_19 = _T_12 | _GEN_15; // @[InstructionTypeDecode.scala 56:70]
+ wire [1:0] _GEN_20 = _T_12 ? 2'h1 : _GEN_16; // @[InstructionTypeDecode.scala 56:70]
+ wire _GEN_21 = _T_12 ? 1'h0 : _GEN_17; // @[InstructionTypeDecode.scala 56:70]
+ wire _GEN_24 = _T_9 ? 1'h0 : _GEN_19; // @[InstructionTypeDecode.scala 54:44]
+ wire [1:0] _GEN_25 = _T_9 ? 2'h0 : _GEN_20; // @[InstructionTypeDecode.scala 54:44]
+ wire _GEN_26 = _T_9 ? 1'h0 : _GEN_21; // @[InstructionTypeDecode.scala 54:44]
+ wire _GEN_29 = _T_8 ? 1'h0 : _T_9; // @[InstructionTypeDecode.scala 51:45]
+ wire _GEN_30 = _T_8 ? 1'h0 : _GEN_24; // @[InstructionTypeDecode.scala 51:45]
+ wire [1:0] _GEN_31 = _T_8 ? 2'h0 : _GEN_25; // @[InstructionTypeDecode.scala 51:45]
+ wire _GEN_32 = _T_8 ? 1'h0 : _GEN_26; // @[InstructionTypeDecode.scala 51:45]
+ wire _GEN_35 = _T_7 ? 1'h0 : _T_8; // @[InstructionTypeDecode.scala 49:45]
+ wire _GEN_36 = _T_7 ? 1'h0 : _GEN_29; // @[InstructionTypeDecode.scala 49:45]
+ wire _GEN_37 = _T_7 ? 1'h0 : _GEN_30; // @[InstructionTypeDecode.scala 49:45]
+ wire [1:0] _GEN_38 = _T_7 ? 2'h0 : _GEN_31; // @[InstructionTypeDecode.scala 49:45]
+ wire _GEN_39 = _T_7 ? 1'h0 : _GEN_32; // @[InstructionTypeDecode.scala 49:45]
+ wire _GEN_42 = _T_6 ? 1'h0 : _T_7; // @[InstructionTypeDecode.scala 47:45]
+ wire _GEN_43 = _T_6 ? 1'h0 : _GEN_35; // @[InstructionTypeDecode.scala 47:45]
+ wire _GEN_44 = _T_6 ? 1'h0 : _GEN_36; // @[InstructionTypeDecode.scala 47:45]
+ wire _GEN_45 = _T_6 ? 1'h0 : _GEN_37; // @[InstructionTypeDecode.scala 47:45]
+ wire [1:0] _GEN_46 = _T_6 ? 2'h0 : _GEN_38; // @[InstructionTypeDecode.scala 47:45]
+ wire _GEN_47 = _T_6 ? 1'h0 : _GEN_39; // @[InstructionTypeDecode.scala 47:45]
+ wire _GEN_50 = _T_5 ? 1'h0 : _T_6; // @[InstructionTypeDecode.scala 45:45]
+ wire _GEN_51 = _T_5 ? 1'h0 : _GEN_42; // @[InstructionTypeDecode.scala 45:45]
+ wire _GEN_52 = _T_5 ? 1'h0 : _GEN_43; // @[InstructionTypeDecode.scala 45:45]
+ wire _GEN_53 = _T_5 ? 1'h0 : _GEN_44; // @[InstructionTypeDecode.scala 45:45]
+ wire _GEN_54 = _T_5 ? 1'h0 : _GEN_45; // @[InstructionTypeDecode.scala 45:45]
+ wire [1:0] _GEN_55 = _T_5 ? 2'h0 : _GEN_46; // @[InstructionTypeDecode.scala 45:45]
+ wire _GEN_56 = _T_5 ? 1'h0 : _GEN_47; // @[InstructionTypeDecode.scala 45:45]
+ wire _GEN_59 = _T_4 ? 1'h0 : _T_5; // @[InstructionTypeDecode.scala 43:45]
+ wire _GEN_60 = _T_4 ? 1'h0 : _GEN_50; // @[InstructionTypeDecode.scala 43:45]
+ wire _GEN_61 = _T_4 ? 1'h0 : _GEN_51; // @[InstructionTypeDecode.scala 43:45]
+ wire _GEN_62 = _T_4 ? 1'h0 : _GEN_52; // @[InstructionTypeDecode.scala 43:45]
+ wire _GEN_63 = _T_4 ? 1'h0 : _GEN_53; // @[InstructionTypeDecode.scala 43:45]
+ wire _GEN_64 = _T_4 ? 1'h0 : _GEN_54; // @[InstructionTypeDecode.scala 43:45]
+ wire [1:0] _GEN_65 = _T_4 ? 2'h0 : _GEN_55; // @[InstructionTypeDecode.scala 43:45]
+ wire _GEN_66 = _T_4 ? 1'h0 : _GEN_56; // @[InstructionTypeDecode.scala 43:45]
+ wire _GEN_69 = _T_3 ? 1'h0 : _T_4; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_70 = _T_3 ? 1'h0 : _GEN_59; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_71 = _T_3 ? 1'h0 : _GEN_60; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_72 = _T_3 ? 1'h0 : _GEN_61; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_73 = _T_3 ? 1'h0 : _GEN_62; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_74 = _T_3 ? 1'h0 : _GEN_63; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_75 = _T_3 ? 1'h0 : _GEN_64; // @[InstructionTypeDecode.scala 41:45]
+ wire [1:0] _GEN_76 = _T_3 ? 2'h0 : _GEN_65; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_77 = _T_3 ? 1'h0 : _GEN_66; // @[InstructionTypeDecode.scala 41:45]
+ wire _GEN_80 = _T_2 ? 1'h0 : _T_3; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_81 = _T_2 ? 1'h0 : _GEN_69; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_82 = _T_2 ? 1'h0 : _GEN_70; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_83 = _T_2 ? 1'h0 : _GEN_71; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_84 = _T_2 ? 1'h0 : _GEN_72; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_85 = _T_2 ? 1'h0 : _GEN_73; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_86 = _T_2 ? 1'h0 : _GEN_74; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_87 = _T_2 ? 1'h0 : _GEN_75; // @[InstructionTypeDecode.scala 39:43]
+ wire [1:0] _GEN_88 = _T_2 ? 2'h0 : _GEN_76; // @[InstructionTypeDecode.scala 39:43]
+ wire _GEN_89 = _T_2 ? 1'h0 : _GEN_77; // @[InstructionTypeDecode.scala 39:43]
+ assign io_r_type = _T & _GEN_1; // @[InstructionTypeDecode.scala 82:19 InstructionTypeDecode.scala 32:23 InstructionTypeDecode.scala 36:21 InstructionTypeDecode.scala 82:19]
+ assign io_load_type = _T ? 1'h0 : _T_2; // @[InstructionTypeDecode.scala 83:22 InstructionTypeDecode.scala 40:22 InstructionTypeDecode.scala 83:22]
+ assign io_s_type = _T ? 1'h0 : _GEN_80; // @[InstructionTypeDecode.scala 84:19 InstructionTypeDecode.scala 42:19 InstructionTypeDecode.scala 84:19]
+ assign io_sb_type = _T ? 1'h0 : _GEN_81; // @[InstructionTypeDecode.scala 85:20 InstructionTypeDecode.scala 44:20 InstructionTypeDecode.scala 85:20]
+ assign io_i_type = _T ? 1'h0 : _GEN_82; // @[InstructionTypeDecode.scala 86:19 InstructionTypeDecode.scala 46:19 InstructionTypeDecode.scala 86:19]
+ assign io_jalr_type = _T ? 1'h0 : _GEN_83; // @[InstructionTypeDecode.scala 87:22 InstructionTypeDecode.scala 48:22 InstructionTypeDecode.scala 87:22]
+ assign io_jal_type = _T ? 1'h0 : _GEN_84; // @[InstructionTypeDecode.scala 88:21 InstructionTypeDecode.scala 50:21 InstructionTypeDecode.scala 88:21]
+ assign io_lui_type = _T ? 1'h0 : _GEN_85; // @[InstructionTypeDecode.scala 89:21 InstructionTypeDecode.scala 52:21 InstructionTypeDecode.scala 89:21]
+ assign io_Auipc = _T ? 1'h0 : _GEN_86; // @[InstructionTypeDecode.scala 90:21 InstructionTypeDecode.scala 55:18 InstructionTypeDecode.scala 90:21]
+ assign io_multiply = _T & _T_1; // @[InstructionTypeDecode.scala 91:21 InstructionTypeDecode.scala 31:23 InstructionTypeDecode.scala 91:21]
+ assign io_csr_imm_type = _T ? 1'h0 : _GEN_89; // @[InstructionTypeDecode.scala 93:25 InstructionTypeDecode.scala 66:25 InstructionTypeDecode.scala 69:25 InstructionTypeDecode.scala 72:25 InstructionTypeDecode.scala 93:25]
+ assign io_csr_type = _T ? 1'h0 : _GEN_87; // @[InstructionTypeDecode.scala 92:21 InstructionTypeDecode.scala 57:21 InstructionTypeDecode.scala 60:21 InstructionTypeDecode.scala 63:21 InstructionTypeDecode.scala 92:21]
+ assign io_csr_op = _T ? 2'h0 : _GEN_88; // @[InstructionTypeDecode.scala 94:19 InstructionTypeDecode.scala 58:19 InstructionTypeDecode.scala 61:19 InstructionTypeDecode.scala 64:19 InstructionTypeDecode.scala 67:19 InstructionTypeDecode.scala 70:19 InstructionTypeDecode.scala 73:19 InstructionTypeDecode.scala 94:19]
+endmodule
+module ControlDecode(
+ input io_in_r_type,
+ input io_in_load_type,
+ input io_in_s_type,
+ input io_in_sb_type,
+ input io_in_i_type,
+ input io_in_jalr_type,
+ input io_in_jal_type,
+ input io_in_lui_type,
+ input io_in_csr_type,
+ input io_in_csr_imm_type,
+ input io_Auipc,
+ input io_multiply,
+ output io_memWrite,
+ output io_memRead,
+ output io_branch,
+ output io_regWrite,
+ output io_csr_wen,
+ output io_memToReg,
+ output [3:0] io_aluOperation,
+ output [1:0] io_operand_a_sel,
+ output io_operand_b_sel,
+ output [1:0] io_extend_sel,
+ output [1:0] io_next_pc_sel
+);
+ wire [4:0] _GEN_2 = io_in_csr_imm_type ? 5'h8 : 5'h1c; // @[ControlDecode.scala 169:45]
+ wire _GEN_4 = io_in_csr_type | io_in_csr_imm_type; // @[ControlDecode.scala 157:41]
+ wire [4:0] _GEN_5 = io_in_csr_type ? 5'h8 : _GEN_2; // @[ControlDecode.scala 157:41]
+ wire _GEN_7 = io_multiply | _GEN_4; // @[ControlDecode.scala 145:36]
+ wire [4:0] _GEN_8 = io_multiply ? 5'h9 : _GEN_5; // @[ControlDecode.scala 145:36]
+ wire _GEN_9 = io_multiply ? 1'h0 : _GEN_4; // @[ControlDecode.scala 145:36]
+ wire _GEN_11 = io_Auipc | _GEN_7; // @[ControlDecode.scala 133:5]
+ wire [4:0] _GEN_12 = io_Auipc ? 5'h7 : _GEN_8; // @[ControlDecode.scala 133:5]
+ wire _GEN_14 = io_Auipc | _GEN_9; // @[ControlDecode.scala 133:5]
+ wire [1:0] _GEN_15 = io_Auipc ? 2'h2 : 2'h0; // @[ControlDecode.scala 133:5]
+ wire _GEN_16 = io_Auipc ? 1'h0 : _GEN_9; // @[ControlDecode.scala 133:5]
+ wire _GEN_18 = io_in_lui_type | _GEN_11; // @[ControlDecode.scala 120:5]
+ wire [4:0] _GEN_19 = io_in_lui_type ? 5'h6 : _GEN_12; // @[ControlDecode.scala 120:5]
+ wire [1:0] _GEN_20 = io_in_lui_type ? 2'h3 : {{1'd0}, io_Auipc}; // @[ControlDecode.scala 120:5]
+ wire _GEN_21 = io_in_lui_type | _GEN_14; // @[ControlDecode.scala 120:5]
+ wire [1:0] _GEN_22 = io_in_lui_type ? 2'h2 : _GEN_15; // @[ControlDecode.scala 120:5]
+ wire _GEN_23 = io_in_lui_type ? 1'h0 : _GEN_16; // @[ControlDecode.scala 120:5]
+ wire _GEN_25 = io_in_jal_type | _GEN_18; // @[ControlDecode.scala 107:41]
+ wire [4:0] _GEN_26 = io_in_jal_type ? 5'h3 : _GEN_19; // @[ControlDecode.scala 107:41]
+ wire [1:0] _GEN_27 = io_in_jal_type ? 2'h2 : _GEN_20; // @[ControlDecode.scala 107:41]
+ wire _GEN_28 = io_in_jal_type ? 1'h0 : _GEN_21; // @[ControlDecode.scala 107:41]
+ wire [1:0] _GEN_29 = io_in_jal_type ? 2'h0 : _GEN_22; // @[ControlDecode.scala 107:41]
+ wire [1:0] _GEN_30 = io_in_jal_type ? 2'h2 : 2'h0; // @[ControlDecode.scala 107:41]
+ wire _GEN_31 = io_in_jal_type ? 1'h0 : _GEN_23; // @[ControlDecode.scala 107:41]
+ wire _GEN_33 = io_in_jalr_type | _GEN_25; // @[ControlDecode.scala 96:42]
+ wire [4:0] _GEN_34 = io_in_jalr_type ? 5'h3 : _GEN_26; // @[ControlDecode.scala 96:42]
+ wire [1:0] _GEN_35 = io_in_jalr_type ? 2'h2 : _GEN_27; // @[ControlDecode.scala 96:42]
+ wire _GEN_36 = io_in_jalr_type ? 1'h0 : _GEN_28; // @[ControlDecode.scala 96:42]
+ wire [1:0] _GEN_37 = io_in_jalr_type ? 2'h0 : _GEN_29; // @[ControlDecode.scala 96:42]
+ wire [1:0] _GEN_38 = io_in_jalr_type ? 2'h3 : _GEN_30; // @[ControlDecode.scala 96:42]
+ wire _GEN_39 = io_in_jalr_type ? 1'h0 : _GEN_31; // @[ControlDecode.scala 96:42]
+ wire _GEN_41 = io_in_i_type | _GEN_33; // @[ControlDecode.scala 85:39]
+ wire [4:0] _GEN_42 = io_in_i_type ? 5'h1 : _GEN_34; // @[ControlDecode.scala 85:39]
+ wire [1:0] _GEN_43 = io_in_i_type ? 2'h0 : _GEN_35; // @[ControlDecode.scala 85:39]
+ wire _GEN_44 = io_in_i_type | _GEN_36; // @[ControlDecode.scala 85:39]
+ wire [1:0] _GEN_45 = io_in_i_type ? 2'h0 : _GEN_37; // @[ControlDecode.scala 85:39]
+ wire [1:0] _GEN_46 = io_in_i_type ? 2'h0 : _GEN_38; // @[ControlDecode.scala 85:39]
+ wire _GEN_47 = io_in_i_type ? 1'h0 : _GEN_39; // @[ControlDecode.scala 85:39]
+ wire _GEN_50 = io_in_sb_type ? 1'h0 : _GEN_41; // @[ControlDecode.scala 74:40]
+ wire [4:0] _GEN_51 = io_in_sb_type ? 5'h2 : _GEN_42; // @[ControlDecode.scala 74:40]
+ wire [1:0] _GEN_52 = io_in_sb_type ? 2'h0 : _GEN_43; // @[ControlDecode.scala 74:40]
+ wire _GEN_53 = io_in_sb_type ? 1'h0 : _GEN_44; // @[ControlDecode.scala 74:40]
+ wire [1:0] _GEN_54 = io_in_sb_type ? 2'h0 : _GEN_45; // @[ControlDecode.scala 74:40]
+ wire [1:0] _GEN_55 = io_in_sb_type ? 2'h1 : _GEN_46; // @[ControlDecode.scala 74:40]
+ wire _GEN_56 = io_in_sb_type ? 1'h0 : _GEN_47; // @[ControlDecode.scala 74:40]
+ wire _GEN_59 = io_in_s_type ? 1'h0 : io_in_sb_type; // @[ControlDecode.scala 62:39]
+ wire _GEN_60 = io_in_s_type ? 1'h0 : _GEN_50; // @[ControlDecode.scala 62:39]
+ wire [4:0] _GEN_61 = io_in_s_type ? 5'h5 : _GEN_51; // @[ControlDecode.scala 62:39]
+ wire [1:0] _GEN_62 = io_in_s_type ? 2'h0 : _GEN_52; // @[ControlDecode.scala 62:39]
+ wire _GEN_63 = io_in_s_type | _GEN_53; // @[ControlDecode.scala 62:39]
+ wire [1:0] _GEN_64 = io_in_s_type ? 2'h1 : _GEN_54; // @[ControlDecode.scala 62:39]
+ wire [1:0] _GEN_65 = io_in_s_type ? 2'h0 : _GEN_55; // @[ControlDecode.scala 62:39]
+ wire _GEN_66 = io_in_s_type ? 1'h0 : _GEN_56; // @[ControlDecode.scala 62:39]
+ wire _GEN_67 = io_in_load_type ? 1'h0 : io_in_s_type; // @[ControlDecode.scala 50:40]
+ wire _GEN_69 = io_in_load_type ? 1'h0 : _GEN_59; // @[ControlDecode.scala 50:40]
+ wire _GEN_70 = io_in_load_type | _GEN_60; // @[ControlDecode.scala 50:40]
+ wire [4:0] _GEN_71 = io_in_load_type ? 5'h4 : _GEN_61; // @[ControlDecode.scala 50:40]
+ wire [1:0] _GEN_72 = io_in_load_type ? 2'h0 : _GEN_62; // @[ControlDecode.scala 50:40]
+ wire _GEN_73 = io_in_load_type | _GEN_63; // @[ControlDecode.scala 50:40]
+ wire [1:0] _GEN_74 = io_in_load_type ? 2'h0 : _GEN_64; // @[ControlDecode.scala 50:40]
+ wire [1:0] _GEN_75 = io_in_load_type ? 2'h0 : _GEN_65; // @[ControlDecode.scala 50:40]
+ wire _GEN_76 = io_in_load_type ? 1'h0 : _GEN_66; // @[ControlDecode.scala 50:40]
+ wire [4:0] _GEN_81 = io_in_r_type ? 5'h0 : _GEN_71; // @[ControlDecode.scala 37:32]
+ assign io_memWrite = io_in_r_type ? 1'h0 : _GEN_67; // @[ControlDecode.scala 188:21 ControlDecode.scala 38:21 ControlDecode.scala 52:21 ControlDecode.scala 64:21 ControlDecode.scala 75:21 ControlDecode.scala 86:21 ControlDecode.scala 97:21 ControlDecode.scala 108:21 ControlDecode.scala 121:21 ControlDecode.scala 134:21 ControlDecode.scala 146:21 ControlDecode.scala 158:21 ControlDecode.scala 170:21 ControlDecode.scala 188:21]
+ assign io_memRead = io_in_r_type ? 1'h0 : io_in_load_type; // @[ControlDecode.scala 189:21 ControlDecode.scala 39:21 ControlDecode.scala 53:21 ControlDecode.scala 65:21 ControlDecode.scala 76:21 ControlDecode.scala 87:21 ControlDecode.scala 98:21 ControlDecode.scala 109:21 ControlDecode.scala 122:21 ControlDecode.scala 135:21 ControlDecode.scala 147:21 ControlDecode.scala 159:20 ControlDecode.scala 171:20 ControlDecode.scala 189:21]
+ assign io_branch = io_in_r_type ? 1'h0 : _GEN_69; // @[ControlDecode.scala 190:19 ControlDecode.scala 40:19 ControlDecode.scala 54:19 ControlDecode.scala 66:19 ControlDecode.scala 77:19 ControlDecode.scala 88:19 ControlDecode.scala 99:19 ControlDecode.scala 110:19 ControlDecode.scala 123:19 ControlDecode.scala 136:19 ControlDecode.scala 148:19 ControlDecode.scala 160:19 ControlDecode.scala 172:19 ControlDecode.scala 190:19]
+ assign io_regWrite = io_in_r_type | _GEN_70; // @[ControlDecode.scala 191:21 ControlDecode.scala 41:21 ControlDecode.scala 55:21 ControlDecode.scala 67:21 ControlDecode.scala 78:21 ControlDecode.scala 89:21 ControlDecode.scala 100:21 ControlDecode.scala 111:21 ControlDecode.scala 124:21 ControlDecode.scala 137:21 ControlDecode.scala 149:21 ControlDecode.scala 161:21 ControlDecode.scala 173:21 ControlDecode.scala 191:21]
+ assign io_csr_wen = io_in_r_type ? 1'h0 : _GEN_76; // @[ControlDecode.scala 198:20 ControlDecode.scala 162:20 ControlDecode.scala 174:20 ControlDecode.scala 198:20]
+ assign io_memToReg = io_in_r_type ? 1'h0 : io_in_load_type; // @[ControlDecode.scala 192:21 ControlDecode.scala 42:21 ControlDecode.scala 56:21 ControlDecode.scala 68:21 ControlDecode.scala 79:21 ControlDecode.scala 90:21 ControlDecode.scala 101:21 ControlDecode.scala 112:21 ControlDecode.scala 125:21 ControlDecode.scala 138:21 ControlDecode.scala 150:21 ControlDecode.scala 163:21 ControlDecode.scala 175:21 ControlDecode.scala 192:21]
+ assign io_aluOperation = _GEN_81[3:0]; // @[ControlDecode.scala 193:25 ControlDecode.scala 43:25 ControlDecode.scala 57:25 ControlDecode.scala 69:25 ControlDecode.scala 80:25 ControlDecode.scala 91:25 ControlDecode.scala 102:25 ControlDecode.scala 113:25 ControlDecode.scala 126:25 ControlDecode.scala 139:25 ControlDecode.scala 151:25 ControlDecode.scala 164:25 ControlDecode.scala 176:25 ControlDecode.scala 193:25]
+ assign io_operand_a_sel = io_in_r_type ? 2'h0 : _GEN_72; // @[ControlDecode.scala 194:26 ControlDecode.scala 44:26 ControlDecode.scala 58:26 ControlDecode.scala 70:26 ControlDecode.scala 81:26 ControlDecode.scala 92:26 ControlDecode.scala 103:26 ControlDecode.scala 114:26 ControlDecode.scala 127:26 ControlDecode.scala 140:26 ControlDecode.scala 152:26 ControlDecode.scala 165:26 ControlDecode.scala 177:26 ControlDecode.scala 194:26]
+ assign io_operand_b_sel = io_in_r_type ? 1'h0 : _GEN_73; // @[ControlDecode.scala 195:26 ControlDecode.scala 45:26 ControlDecode.scala 59:26 ControlDecode.scala 71:26 ControlDecode.scala 82:26 ControlDecode.scala 93:26 ControlDecode.scala 104:26 ControlDecode.scala 115:26 ControlDecode.scala 128:26 ControlDecode.scala 141:26 ControlDecode.scala 153:26 ControlDecode.scala 166:26 ControlDecode.scala 178:26 ControlDecode.scala 195:26]
+ assign io_extend_sel = io_in_r_type ? 2'h0 : _GEN_74; // @[ControlDecode.scala 196:23 ControlDecode.scala 46:23 ControlDecode.scala 60:23 ControlDecode.scala 72:23 ControlDecode.scala 83:23 ControlDecode.scala 94:23 ControlDecode.scala 105:23 ControlDecode.scala 116:23 ControlDecode.scala 129:23 ControlDecode.scala 142:23 ControlDecode.scala 154:23 ControlDecode.scala 167:23 ControlDecode.scala 179:23 ControlDecode.scala 196:23]
+ assign io_next_pc_sel = io_in_r_type ? 2'h0 : _GEN_75; // @[ControlDecode.scala 197:24 ControlDecode.scala 47:24 ControlDecode.scala 61:24 ControlDecode.scala 73:24 ControlDecode.scala 84:24 ControlDecode.scala 95:24 ControlDecode.scala 106:24 ControlDecode.scala 117:24 ControlDecode.scala 130:24 ControlDecode.scala 143:24 ControlDecode.scala 155:24 ControlDecode.scala 168:24 ControlDecode.scala 180:24 ControlDecode.scala 197:24]
+endmodule
+module Control(
+ input [6:0] io_in_opcode,
+ input [6:0] io_func7,
+ input [2:0] io_func3,
+ output io_out_memWrite,
+ output io_out_branch,
+ output io_out_memRead,
+ output io_out_regWrite,
+ output io_csr_we_o,
+ output io_csr_imm_type,
+ output [1:0] io_csr_op_o,
+ output io_out_memToReg,
+ output [3:0] io_out_aluOp,
+ output [1:0] io_out_operand_a_sel,
+ output io_out_operand_b_sel,
+ output [1:0] io_out_extend_sel,
+ output [1:0] io_out_next_pc_sel
+);
+ wire [2:0] instruction_type_decode_io_func3; // @[Control.scala 26:41]
+ wire [6:0] instruction_type_decode_io_func7; // @[Control.scala 26:41]
+ wire [6:0] instruction_type_decode_io_opcode; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_r_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_load_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_s_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_sb_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_i_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_jalr_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_jal_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_lui_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_Auipc; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_multiply; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_csr_imm_type; // @[Control.scala 26:41]
+ wire instruction_type_decode_io_csr_type; // @[Control.scala 26:41]
+ wire [1:0] instruction_type_decode_io_csr_op; // @[Control.scala 26:41]
+ wire control_decode_io_in_r_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_load_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_s_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_sb_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_i_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_jalr_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_jal_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_lui_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_csr_type; // @[Control.scala 27:32]
+ wire control_decode_io_in_csr_imm_type; // @[Control.scala 27:32]
+ wire control_decode_io_Auipc; // @[Control.scala 27:32]
+ wire control_decode_io_multiply; // @[Control.scala 27:32]
+ wire control_decode_io_memWrite; // @[Control.scala 27:32]
+ wire control_decode_io_memRead; // @[Control.scala 27:32]
+ wire control_decode_io_branch; // @[Control.scala 27:32]
+ wire control_decode_io_regWrite; // @[Control.scala 27:32]
+ wire control_decode_io_csr_wen; // @[Control.scala 27:32]
+ wire control_decode_io_memToReg; // @[Control.scala 27:32]
+ wire [3:0] control_decode_io_aluOperation; // @[Control.scala 27:32]
+ wire [1:0] control_decode_io_operand_a_sel; // @[Control.scala 27:32]
+ wire control_decode_io_operand_b_sel; // @[Control.scala 27:32]
+ wire [1:0] control_decode_io_extend_sel; // @[Control.scala 27:32]
+ wire [1:0] control_decode_io_next_pc_sel; // @[Control.scala 27:32]
+ InstructionTypeDecode instruction_type_decode ( // @[Control.scala 26:41]
+ .io_func3(instruction_type_decode_io_func3),
+ .io_func7(instruction_type_decode_io_func7),
+ .io_opcode(instruction_type_decode_io_opcode),
+ .io_r_type(instruction_type_decode_io_r_type),
+ .io_load_type(instruction_type_decode_io_load_type),
+ .io_s_type(instruction_type_decode_io_s_type),
+ .io_sb_type(instruction_type_decode_io_sb_type),
+ .io_i_type(instruction_type_decode_io_i_type),
+ .io_jalr_type(instruction_type_decode_io_jalr_type),
+ .io_jal_type(instruction_type_decode_io_jal_type),
+ .io_lui_type(instruction_type_decode_io_lui_type),
+ .io_Auipc(instruction_type_decode_io_Auipc),
+ .io_multiply(instruction_type_decode_io_multiply),
+ .io_csr_imm_type(instruction_type_decode_io_csr_imm_type),
+ .io_csr_type(instruction_type_decode_io_csr_type),
+ .io_csr_op(instruction_type_decode_io_csr_op)
+ );
+ ControlDecode control_decode ( // @[Control.scala 27:32]
+ .io_in_r_type(control_decode_io_in_r_type),
+ .io_in_load_type(control_decode_io_in_load_type),
+ .io_in_s_type(control_decode_io_in_s_type),
+ .io_in_sb_type(control_decode_io_in_sb_type),
+ .io_in_i_type(control_decode_io_in_i_type),
+ .io_in_jalr_type(control_decode_io_in_jalr_type),
+ .io_in_jal_type(control_decode_io_in_jal_type),
+ .io_in_lui_type(control_decode_io_in_lui_type),
+ .io_in_csr_type(control_decode_io_in_csr_type),
+ .io_in_csr_imm_type(control_decode_io_in_csr_imm_type),
+ .io_Auipc(control_decode_io_Auipc),
+ .io_multiply(control_decode_io_multiply),
+ .io_memWrite(control_decode_io_memWrite),
+ .io_memRead(control_decode_io_memRead),
+ .io_branch(control_decode_io_branch),
+ .io_regWrite(control_decode_io_regWrite),
+ .io_csr_wen(control_decode_io_csr_wen),
+ .io_memToReg(control_decode_io_memToReg),
+ .io_aluOperation(control_decode_io_aluOperation),
+ .io_operand_a_sel(control_decode_io_operand_a_sel),
+ .io_operand_b_sel(control_decode_io_operand_b_sel),
+ .io_extend_sel(control_decode_io_extend_sel),
+ .io_next_pc_sel(control_decode_io_next_pc_sel)
+ );
+ assign io_out_memWrite = control_decode_io_memWrite; // @[Control.scala 43:21]
+ assign io_out_branch = control_decode_io_branch; // @[Control.scala 44:19]
+ assign io_out_memRead = control_decode_io_memRead; // @[Control.scala 45:20]
+ assign io_out_regWrite = control_decode_io_regWrite; // @[Control.scala 46:21]
+ assign io_csr_we_o = control_decode_io_csr_wen; // @[Control.scala 47:17]
+ assign io_csr_imm_type = instruction_type_decode_io_csr_imm_type; // @[Control.scala 57:21]
+ assign io_csr_op_o = instruction_type_decode_io_csr_op; // @[Control.scala 56:17]
+ assign io_out_memToReg = control_decode_io_memToReg; // @[Control.scala 48:21]
+ assign io_out_aluOp = control_decode_io_aluOperation; // @[Control.scala 49:18]
+ assign io_out_operand_a_sel = control_decode_io_operand_a_sel; // @[Control.scala 50:26]
+ assign io_out_operand_b_sel = control_decode_io_operand_b_sel; // @[Control.scala 51:26]
+ assign io_out_extend_sel = control_decode_io_extend_sel; // @[Control.scala 52:23]
+ assign io_out_next_pc_sel = control_decode_io_next_pc_sel; // @[Control.scala 53:24]
+ assign instruction_type_decode_io_func3 = io_func3; // @[Control.scala 29:39]
+ assign instruction_type_decode_io_func7 = io_func7; // @[Control.scala 58:38]
+ assign instruction_type_decode_io_opcode = io_in_opcode; // @[Control.scala 28:39]
+ assign control_decode_io_in_r_type = instruction_type_decode_io_r_type; // @[Control.scala 30:33]
+ assign control_decode_io_in_load_type = instruction_type_decode_io_load_type; // @[Control.scala 31:36]
+ assign control_decode_io_in_s_type = instruction_type_decode_io_s_type; // @[Control.scala 32:33]
+ assign control_decode_io_in_sb_type = instruction_type_decode_io_sb_type; // @[Control.scala 33:34]
+ assign control_decode_io_in_i_type = instruction_type_decode_io_i_type; // @[Control.scala 34:33]
+ assign control_decode_io_in_jalr_type = instruction_type_decode_io_jalr_type; // @[Control.scala 35:36]
+ assign control_decode_io_in_jal_type = instruction_type_decode_io_jal_type; // @[Control.scala 36:35]
+ assign control_decode_io_in_lui_type = instruction_type_decode_io_lui_type; // @[Control.scala 37:35]
+ assign control_decode_io_in_csr_type = instruction_type_decode_io_csr_type; // @[Control.scala 40:35]
+ assign control_decode_io_in_csr_imm_type = instruction_type_decode_io_csr_imm_type; // @[Control.scala 41:39]
+ assign control_decode_io_Auipc = instruction_type_decode_io_Auipc; // @[Control.scala 38:35]
+ assign control_decode_io_multiply = instruction_type_decode_io_multiply; // @[Control.scala 39:35]
+endmodule
+module DecodeForwardUnit(
+ input [4:0] io_ID_EX_REGRD,
+ input io_ID_EX_MEMRD,
+ input [4:0] io_EX_MEM_REGRD,
+ input io_EX_MEM_MEMRD,
+ input [4:0] io_MEM_WB_REGRD,
+ input io_MEM_WB_MEMRD,
+ input io_execute_regwrite,
+ input io_mem_regwrite,
+ input io_wb_regwrite,
+ input [4:0] io_rs1_sel,
+ input [4:0] io_rs2_sel,
+ input io_ctrl_branch,
+ output [3:0] io_forward_rs1,
+ output [3:0] io_forward_rs2
+);
+ wire _T_1 = io_ID_EX_REGRD != 5'h0; // @[DecodeForwardUnit.scala 29:27]
+ wire _T_2 = ~io_ID_EX_MEMRD; // @[DecodeForwardUnit.scala 29:60]
+ wire _T_3 = _T_1 & _T_2; // @[DecodeForwardUnit.scala 29:42]
+ wire _T_4 = io_ID_EX_REGRD == io_rs1_sel; // @[DecodeForwardUnit.scala 29:87]
+ wire _T_5 = _T_3 & _T_4; // @[DecodeForwardUnit.scala 29:68]
+ wire _T_6 = io_ID_EX_REGRD == io_rs2_sel; // @[DecodeForwardUnit.scala 29:122]
+ wire _T_7 = _T_5 & _T_6; // @[DecodeForwardUnit.scala 29:103]
+ wire _T_17 = _T_3 & _T_6; // @[DecodeForwardUnit.scala 34:75]
+ wire _GEN_2 = _T_5 ? 1'h0 : _T_17; // @[DecodeForwardUnit.scala 32:111]
+ wire _GEN_3 = _T_7 | _T_5; // @[DecodeForwardUnit.scala 29:139]
+ wire _GEN_4 = _T_7 | _GEN_2; // @[DecodeForwardUnit.scala 29:139]
+ wire _T_18 = io_EX_MEM_REGRD != 5'h0; // @[DecodeForwardUnit.scala 39:28]
+ wire _T_19 = ~io_EX_MEM_MEMRD; // @[DecodeForwardUnit.scala 39:62]
+ wire _T_20 = _T_18 & _T_19; // @[DecodeForwardUnit.scala 39:43]
+ wire _T_23 = _T_1 & _T_4; // @[DecodeForwardUnit.scala 40:43]
+ wire _T_25 = _T_23 & _T_6; // @[DecodeForwardUnit.scala 40:78]
+ wire _T_26 = ~_T_25; // @[DecodeForwardUnit.scala 40:9]
+ wire _T_27 = _T_20 & _T_26; // @[DecodeForwardUnit.scala 39:70]
+ wire _T_28 = io_EX_MEM_REGRD == io_rs1_sel; // @[DecodeForwardUnit.scala 41:26]
+ wire _T_29 = _T_27 & _T_28; // @[DecodeForwardUnit.scala 40:114]
+ wire _T_30 = io_EX_MEM_REGRD == io_rs2_sel; // @[DecodeForwardUnit.scala 41:62]
+ wire _T_31 = _T_29 & _T_30; // @[DecodeForwardUnit.scala 41:42]
+ wire _T_37 = _T_1 & _T_6; // @[DecodeForwardUnit.scala 47:43]
+ wire _T_38 = ~_T_37; // @[DecodeForwardUnit.scala 47:9]
+ wire _T_39 = _T_20 & _T_38; // @[DecodeForwardUnit.scala 46:77]
+ wire _T_41 = _T_39 & _T_30; // @[DecodeForwardUnit.scala 47:79]
+ wire _T_48 = ~_T_23; // @[DecodeForwardUnit.scala 53:9]
+ wire _T_49 = _T_20 & _T_48; // @[DecodeForwardUnit.scala 52:77]
+ wire _T_51 = _T_49 & _T_28; // @[DecodeForwardUnit.scala 53:79]
+ wire _T_54 = _T_18 & io_EX_MEM_MEMRD; // @[DecodeForwardUnit.scala 58:50]
+ wire _T_61 = _T_54 & _T_26; // @[DecodeForwardUnit.scala 58:77]
+ wire _T_63 = _T_61 & _T_28; // @[DecodeForwardUnit.scala 59:114]
+ wire _T_65 = _T_63 & _T_30; // @[DecodeForwardUnit.scala 60:42]
+ wire _T_73 = _T_54 & _T_38; // @[DecodeForwardUnit.scala 65:77]
+ wire _T_75 = _T_73 & _T_30; // @[DecodeForwardUnit.scala 66:79]
+ wire _T_78 = io_ctrl_branch & _T_18; // @[DecodeForwardUnit.scala 71:42]
+ wire _T_80 = _T_78 & io_EX_MEM_MEMRD; // @[DecodeForwardUnit.scala 71:76]
+ wire _T_85 = _T_80 & _T_48; // @[DecodeForwardUnit.scala 71:103]
+ wire _T_87 = _T_85 & _T_28; // @[DecodeForwardUnit.scala 72:79]
+ wire [2:0] _GEN_5 = _T_87 ? 3'h4 : {{2'd0}, _GEN_3}; // @[DecodeForwardUnit.scala 73:43]
+ wire [2:0] _GEN_6 = _T_75 ? 3'h4 : {{2'd0}, _GEN_4}; // @[DecodeForwardUnit.scala 67:43]
+ wire [2:0] _GEN_7 = _T_75 ? {{2'd0}, _GEN_3} : _GEN_5; // @[DecodeForwardUnit.scala 67:43]
+ wire [2:0] _GEN_8 = _T_65 ? 3'h4 : _GEN_7; // @[DecodeForwardUnit.scala 60:79]
+ wire [2:0] _GEN_9 = _T_65 ? 3'h4 : _GEN_6; // @[DecodeForwardUnit.scala 60:79]
+ wire [2:0] _GEN_10 = _T_51 ? 3'h2 : _GEN_8; // @[DecodeForwardUnit.scala 54:43]
+ wire [2:0] _GEN_11 = _T_51 ? {{2'd0}, _GEN_4} : _GEN_9; // @[DecodeForwardUnit.scala 54:43]
+ wire [2:0] _GEN_12 = _T_41 ? 3'h2 : _GEN_11; // @[DecodeForwardUnit.scala 48:43]
+ wire [2:0] _GEN_13 = _T_41 ? {{2'd0}, _GEN_3} : _GEN_10; // @[DecodeForwardUnit.scala 48:43]
+ wire [2:0] _GEN_14 = _T_31 ? 3'h2 : _GEN_13; // @[DecodeForwardUnit.scala 41:79]
+ wire [2:0] _GEN_15 = _T_31 ? 3'h2 : _GEN_12; // @[DecodeForwardUnit.scala 41:79]
+ wire _T_88 = io_MEM_WB_REGRD != 5'h0; // @[DecodeForwardUnit.scala 80:28]
+ wire _T_89 = ~io_MEM_WB_MEMRD; // @[DecodeForwardUnit.scala 80:62]
+ wire _T_90 = _T_88 & _T_89; // @[DecodeForwardUnit.scala 80:43]
+ wire _T_97 = _T_90 & _T_26; // @[DecodeForwardUnit.scala 80:70]
+ wire _T_100 = _T_18 & _T_28; // @[DecodeForwardUnit.scala 84:44]
+ wire _T_102 = _T_100 & _T_30; // @[DecodeForwardUnit.scala 84:80]
+ wire _T_103 = ~_T_102; // @[DecodeForwardUnit.scala 84:9]
+ wire _T_104 = _T_97 & _T_103; // @[DecodeForwardUnit.scala 82:114]
+ wire _T_105 = io_MEM_WB_REGRD == io_rs1_sel; // @[DecodeForwardUnit.scala 85:26]
+ wire _T_106 = _T_104 & _T_105; // @[DecodeForwardUnit.scala 84:117]
+ wire _T_107 = io_MEM_WB_REGRD == io_rs2_sel; // @[DecodeForwardUnit.scala 85:62]
+ wire _T_108 = _T_106 & _T_107; // @[DecodeForwardUnit.scala 85:42]
+ wire _T_116 = _T_90 & _T_38; // @[DecodeForwardUnit.scala 91:77]
+ wire _T_119 = _T_18 & _T_30; // @[DecodeForwardUnit.scala 95:46]
+ wire _T_120 = ~_T_119; // @[DecodeForwardUnit.scala 95:11]
+ wire _T_121 = _T_116 & _T_120; // @[DecodeForwardUnit.scala 93:81]
+ wire _T_123 = _T_121 & _T_107; // @[DecodeForwardUnit.scala 95:83]
+ wire _T_131 = _T_90 & _T_48; // @[DecodeForwardUnit.scala 101:77]
+ wire _T_135 = ~_T_100; // @[DecodeForwardUnit.scala 105:11]
+ wire _T_136 = _T_131 & _T_135; // @[DecodeForwardUnit.scala 103:81]
+ wire _T_138 = _T_136 & _T_105; // @[DecodeForwardUnit.scala 105:83]
+ wire _T_141 = _T_88 & io_MEM_WB_MEMRD; // @[DecodeForwardUnit.scala 110:52]
+ wire _T_148 = _T_141 & _T_26; // @[DecodeForwardUnit.scala 110:79]
+ wire _T_155 = _T_148 & _T_103; // @[DecodeForwardUnit.scala 112:114]
+ wire _T_157 = _T_155 & _T_105; // @[DecodeForwardUnit.scala 114:117]
+ wire _T_159 = _T_157 & _T_107; // @[DecodeForwardUnit.scala 115:42]
+ wire _T_167 = _T_141 & _T_38; // @[DecodeForwardUnit.scala 121:77]
+ wire _T_172 = _T_167 & _T_120; // @[DecodeForwardUnit.scala 123:81]
+ wire _T_174 = _T_172 & _T_107; // @[DecodeForwardUnit.scala 125:83]
+ wire _T_182 = _T_141 & _T_48; // @[DecodeForwardUnit.scala 131:77]
+ wire _T_187 = _T_182 & _T_135; // @[DecodeForwardUnit.scala 133:81]
+ wire _T_189 = _T_187 & _T_105; // @[DecodeForwardUnit.scala 135:82]
+ wire [2:0] _GEN_16 = _T_189 ? 3'h5 : _GEN_14; // @[DecodeForwardUnit.scala 136:45]
+ wire [2:0] _GEN_17 = _T_174 ? 3'h5 : _GEN_15; // @[DecodeForwardUnit.scala 126:45]
+ wire [2:0] _GEN_18 = _T_174 ? _GEN_14 : _GEN_16; // @[DecodeForwardUnit.scala 126:45]
+ wire [2:0] _GEN_19 = _T_159 ? 3'h5 : _GEN_18; // @[DecodeForwardUnit.scala 115:79]
+ wire [2:0] _GEN_20 = _T_159 ? 3'h5 : _GEN_17; // @[DecodeForwardUnit.scala 115:79]
+ wire [2:0] _GEN_21 = _T_138 ? 3'h3 : _GEN_19; // @[DecodeForwardUnit.scala 106:45]
+ wire [2:0] _GEN_22 = _T_138 ? _GEN_15 : _GEN_20; // @[DecodeForwardUnit.scala 106:45]
+ wire [2:0] _GEN_23 = _T_123 ? 3'h3 : _GEN_22; // @[DecodeForwardUnit.scala 96:45]
+ wire [2:0] _GEN_24 = _T_123 ? _GEN_14 : _GEN_21; // @[DecodeForwardUnit.scala 96:45]
+ wire [2:0] _GEN_25 = _T_108 ? 3'h3 : _GEN_24; // @[DecodeForwardUnit.scala 85:79]
+ wire [2:0] _GEN_26 = _T_108 ? 3'h3 : _GEN_23; // @[DecodeForwardUnit.scala 85:79]
+ wire _T_190 = ~io_ctrl_branch; // @[DecodeForwardUnit.scala 144:32]
+ wire _T_193 = io_execute_regwrite & _T_1; // @[DecodeForwardUnit.scala 146:42]
+ wire _T_195 = _T_193 & _T_2; // @[DecodeForwardUnit.scala 146:75]
+ wire _T_197 = _T_195 & _T_4; // @[DecodeForwardUnit.scala 146:101]
+ wire [2:0] _GEN_27 = _T_197 ? 3'h6 : 3'h0; // @[DecodeForwardUnit.scala 146:136]
+ wire _T_200 = io_mem_regwrite & _T_18; // @[DecodeForwardUnit.scala 151:38]
+ wire _T_202 = _T_200 & _T_19; // @[DecodeForwardUnit.scala 151:72]
+ wire _T_207 = _T_202 & _T_48; // @[DecodeForwardUnit.scala 151:99]
+ wire _T_209 = _T_207 & _T_28; // @[DecodeForwardUnit.scala 152:81]
+ wire _T_214 = _T_200 & io_EX_MEM_MEMRD; // @[DecodeForwardUnit.scala 158:79]
+ wire _T_219 = _T_214 & _T_48; // @[DecodeForwardUnit.scala 158:106]
+ wire _T_221 = _T_219 & _T_28; // @[DecodeForwardUnit.scala 159:83]
+ wire [3:0] _GEN_28 = _T_221 ? 4'h9 : {{1'd0}, _GEN_27}; // @[DecodeForwardUnit.scala 160:47]
+ wire [3:0] _GEN_29 = _T_209 ? 4'h7 : _GEN_28; // @[DecodeForwardUnit.scala 153:45]
+ wire _T_224 = io_wb_regwrite & _T_88; // @[DecodeForwardUnit.scala 168:37]
+ wire _T_226 = _T_224 & _T_89; // @[DecodeForwardUnit.scala 168:71]
+ wire _T_231 = _T_226 & _T_48; // @[DecodeForwardUnit.scala 168:98]
+ wire _T_236 = _T_231 & _T_135; // @[DecodeForwardUnit.scala 170:81]
+ wire _T_238 = _T_236 & _T_105; // @[DecodeForwardUnit.scala 172:83]
+ wire _T_243 = _T_224 & io_MEM_WB_MEMRD; // @[DecodeForwardUnit.scala 178:79]
+ wire _T_248 = _T_243 & _T_48; // @[DecodeForwardUnit.scala 178:106]
+ wire _T_253 = _T_248 & _T_135; // @[DecodeForwardUnit.scala 180:81]
+ wire _T_255 = _T_253 & _T_105; // @[DecodeForwardUnit.scala 182:83]
+ wire [3:0] _GEN_30 = _T_255 ? 4'ha : _GEN_29; // @[DecodeForwardUnit.scala 183:45]
+ wire [3:0] _GEN_31 = _T_238 ? 4'h8 : _GEN_30; // @[DecodeForwardUnit.scala 173:45]
+ wire [3:0] _GEN_32 = _T_190 ? _GEN_31 : 4'h0; // @[DecodeForwardUnit.scala 144:41]
+ wire [2:0] _GEN_34 = io_ctrl_branch ? _GEN_26 : 3'h0; // @[DecodeForwardUnit.scala 27:34]
+ assign io_forward_rs1 = io_ctrl_branch ? {{1'd0}, _GEN_25} : _GEN_32; // @[DecodeForwardUnit.scala 23:20 DecodeForwardUnit.scala 30:24 DecodeForwardUnit.scala 33:24 DecodeForwardUnit.scala 43:24 DecodeForwardUnit.scala 56:24 DecodeForwardUnit.scala 62:24 DecodeForwardUnit.scala 75:24 DecodeForwardUnit.scala 87:24 DecodeForwardUnit.scala 108:26 DecodeForwardUnit.scala 117:24 DecodeForwardUnit.scala 138:26 DecodeForwardUnit.scala 147:26 DecodeForwardUnit.scala 155:26 DecodeForwardUnit.scala 162:28 DecodeForwardUnit.scala 175:26 DecodeForwardUnit.scala 185:26]
+ assign io_forward_rs2 = {{1'd0}, _GEN_34}; // @[DecodeForwardUnit.scala 24:20 DecodeForwardUnit.scala 31:24 DecodeForwardUnit.scala 35:24 DecodeForwardUnit.scala 44:24 DecodeForwardUnit.scala 50:24 DecodeForwardUnit.scala 63:24 DecodeForwardUnit.scala 69:24 DecodeForwardUnit.scala 88:24 DecodeForwardUnit.scala 98:26 DecodeForwardUnit.scala 118:24 DecodeForwardUnit.scala 128:26]
+endmodule
+module BranchLogic(
+ input [31:0] io_in_rs1,
+ input [31:0] io_in_rs2,
+ input [2:0] io_in_func3,
+ output io_output
+);
+ wire _T = io_in_func3 == 3'h0; // @[BranchLogic.scala 13:20]
+ wire _T_1 = $signed(io_in_rs1) == $signed(io_in_rs2); // @[BranchLogic.scala 15:20]
+ wire _T_2 = io_in_func3 == 3'h1; // @[BranchLogic.scala 20:27]
+ wire _T_3 = $signed(io_in_rs1) != $signed(io_in_rs2); // @[BranchLogic.scala 22:20]
+ wire _T_4 = io_in_func3 == 3'h4; // @[BranchLogic.scala 27:27]
+ wire _T_5 = $signed(io_in_rs1) < $signed(io_in_rs2); // @[BranchLogic.scala 29:20]
+ wire _T_6 = io_in_func3 == 3'h5; // @[BranchLogic.scala 34:27]
+ wire _T_7 = $signed(io_in_rs1) >= $signed(io_in_rs2); // @[BranchLogic.scala 36:20]
+ wire _T_8 = io_in_func3 == 3'h6; // @[BranchLogic.scala 41:27]
+ wire _T_11 = io_in_rs1 < io_in_rs2; // @[BranchLogic.scala 43:27]
+ wire _T_12 = io_in_func3 == 3'h7; // @[BranchLogic.scala 48:27]
+ wire _T_15 = io_in_rs1 >= io_in_rs2; // @[BranchLogic.scala 50:27]
+ wire _GEN_6 = _T_12 & _T_15; // @[BranchLogic.scala 48:41]
+ wire _GEN_7 = _T_8 ? _T_11 : _GEN_6; // @[BranchLogic.scala 41:41]
+ wire _GEN_8 = _T_6 ? _T_7 : _GEN_7; // @[BranchLogic.scala 34:41]
+ wire _GEN_9 = _T_4 ? _T_5 : _GEN_8; // @[BranchLogic.scala 27:41]
+ wire _GEN_10 = _T_2 ? _T_3 : _GEN_9; // @[BranchLogic.scala 20:41]
+ assign io_output = _T ? _T_1 : _GEN_10; // @[BranchLogic.scala 16:17 BranchLogic.scala 18:17 BranchLogic.scala 23:17 BranchLogic.scala 25:17 BranchLogic.scala 30:17 BranchLogic.scala 32:17 BranchLogic.scala 37:17 BranchLogic.scala 39:17 BranchLogic.scala 44:17 BranchLogic.scala 46:17 BranchLogic.scala 51:17 BranchLogic.scala 53:17 BranchLogic.scala 56:15]
+endmodule
+module RegisterFile(
+ input clock,
+ input reset,
+ input io_regWrite,
+ input [4:0] io_rd_sel,
+ input [4:0] io_rs1_sel,
+ input [4:0] io_rs2_sel,
+ input [31:0] io_writeData,
+ output [31:0] io_rs1,
+ output [31:0] io_rs2
+);
+`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] registers_0; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_1; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_2; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_3; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_4; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_5; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_6; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_7; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_8; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_9; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_10; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_11; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_12; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_13; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_14; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_15; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_16; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_17; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_18; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_19; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_20; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_21; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_22; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_23; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_24; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_25; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_26; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_27; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_28; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_29; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_30; // @[RegisterFile.scala 20:28]
+ reg [31:0] registers_31; // @[RegisterFile.scala 20:28]
+ wire [31:0] _GEN_1 = 5'h1 == io_rs1_sel ? $signed(registers_1) : $signed(registers_0); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_2 = 5'h2 == io_rs1_sel ? $signed(registers_2) : $signed(_GEN_1); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_3 = 5'h3 == io_rs1_sel ? $signed(registers_3) : $signed(_GEN_2); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_4 = 5'h4 == io_rs1_sel ? $signed(registers_4) : $signed(_GEN_3); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_5 = 5'h5 == io_rs1_sel ? $signed(registers_5) : $signed(_GEN_4); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_6 = 5'h6 == io_rs1_sel ? $signed(registers_6) : $signed(_GEN_5); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_7 = 5'h7 == io_rs1_sel ? $signed(registers_7) : $signed(_GEN_6); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_8 = 5'h8 == io_rs1_sel ? $signed(registers_8) : $signed(_GEN_7); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_9 = 5'h9 == io_rs1_sel ? $signed(registers_9) : $signed(_GEN_8); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_10 = 5'ha == io_rs1_sel ? $signed(registers_10) : $signed(_GEN_9); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_11 = 5'hb == io_rs1_sel ? $signed(registers_11) : $signed(_GEN_10); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_12 = 5'hc == io_rs1_sel ? $signed(registers_12) : $signed(_GEN_11); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_13 = 5'hd == io_rs1_sel ? $signed(registers_13) : $signed(_GEN_12); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_14 = 5'he == io_rs1_sel ? $signed(registers_14) : $signed(_GEN_13); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_15 = 5'hf == io_rs1_sel ? $signed(registers_15) : $signed(_GEN_14); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_16 = 5'h10 == io_rs1_sel ? $signed(registers_16) : $signed(_GEN_15); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_17 = 5'h11 == io_rs1_sel ? $signed(registers_17) : $signed(_GEN_16); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_18 = 5'h12 == io_rs1_sel ? $signed(registers_18) : $signed(_GEN_17); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_19 = 5'h13 == io_rs1_sel ? $signed(registers_19) : $signed(_GEN_18); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_20 = 5'h14 == io_rs1_sel ? $signed(registers_20) : $signed(_GEN_19); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_21 = 5'h15 == io_rs1_sel ? $signed(registers_21) : $signed(_GEN_20); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_22 = 5'h16 == io_rs1_sel ? $signed(registers_22) : $signed(_GEN_21); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_23 = 5'h17 == io_rs1_sel ? $signed(registers_23) : $signed(_GEN_22); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_24 = 5'h18 == io_rs1_sel ? $signed(registers_24) : $signed(_GEN_23); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_25 = 5'h19 == io_rs1_sel ? $signed(registers_25) : $signed(_GEN_24); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_26 = 5'h1a == io_rs1_sel ? $signed(registers_26) : $signed(_GEN_25); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_27 = 5'h1b == io_rs1_sel ? $signed(registers_27) : $signed(_GEN_26); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_28 = 5'h1c == io_rs1_sel ? $signed(registers_28) : $signed(_GEN_27); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_29 = 5'h1d == io_rs1_sel ? $signed(registers_29) : $signed(_GEN_28); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_30 = 5'h1e == io_rs1_sel ? $signed(registers_30) : $signed(_GEN_29); // @[RegisterFile.scala 25:12]
+ wire [31:0] _GEN_33 = 5'h1 == io_rs2_sel ? $signed(registers_1) : $signed(registers_0); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_34 = 5'h2 == io_rs2_sel ? $signed(registers_2) : $signed(_GEN_33); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_35 = 5'h3 == io_rs2_sel ? $signed(registers_3) : $signed(_GEN_34); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_36 = 5'h4 == io_rs2_sel ? $signed(registers_4) : $signed(_GEN_35); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_37 = 5'h5 == io_rs2_sel ? $signed(registers_5) : $signed(_GEN_36); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_38 = 5'h6 == io_rs2_sel ? $signed(registers_6) : $signed(_GEN_37); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_39 = 5'h7 == io_rs2_sel ? $signed(registers_7) : $signed(_GEN_38); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_40 = 5'h8 == io_rs2_sel ? $signed(registers_8) : $signed(_GEN_39); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_41 = 5'h9 == io_rs2_sel ? $signed(registers_9) : $signed(_GEN_40); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_42 = 5'ha == io_rs2_sel ? $signed(registers_10) : $signed(_GEN_41); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_43 = 5'hb == io_rs2_sel ? $signed(registers_11) : $signed(_GEN_42); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_44 = 5'hc == io_rs2_sel ? $signed(registers_12) : $signed(_GEN_43); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_45 = 5'hd == io_rs2_sel ? $signed(registers_13) : $signed(_GEN_44); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_46 = 5'he == io_rs2_sel ? $signed(registers_14) : $signed(_GEN_45); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_47 = 5'hf == io_rs2_sel ? $signed(registers_15) : $signed(_GEN_46); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_48 = 5'h10 == io_rs2_sel ? $signed(registers_16) : $signed(_GEN_47); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_49 = 5'h11 == io_rs2_sel ? $signed(registers_17) : $signed(_GEN_48); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_50 = 5'h12 == io_rs2_sel ? $signed(registers_18) : $signed(_GEN_49); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_51 = 5'h13 == io_rs2_sel ? $signed(registers_19) : $signed(_GEN_50); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_52 = 5'h14 == io_rs2_sel ? $signed(registers_20) : $signed(_GEN_51); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_53 = 5'h15 == io_rs2_sel ? $signed(registers_21) : $signed(_GEN_52); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_54 = 5'h16 == io_rs2_sel ? $signed(registers_22) : $signed(_GEN_53); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_55 = 5'h17 == io_rs2_sel ? $signed(registers_23) : $signed(_GEN_54); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_56 = 5'h18 == io_rs2_sel ? $signed(registers_24) : $signed(_GEN_55); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_57 = 5'h19 == io_rs2_sel ? $signed(registers_25) : $signed(_GEN_56); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_58 = 5'h1a == io_rs2_sel ? $signed(registers_26) : $signed(_GEN_57); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_59 = 5'h1b == io_rs2_sel ? $signed(registers_27) : $signed(_GEN_58); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_60 = 5'h1c == io_rs2_sel ? $signed(registers_28) : $signed(_GEN_59); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_61 = 5'h1d == io_rs2_sel ? $signed(registers_29) : $signed(_GEN_60); // @[RegisterFile.scala 26:12]
+ wire [31:0] _GEN_62 = 5'h1e == io_rs2_sel ? $signed(registers_30) : $signed(_GEN_61); // @[RegisterFile.scala 26:12]
+ wire _T_2 = io_rd_sel == 5'h0; // @[RegisterFile.scala 28:24]
+ assign io_rs1 = 5'h1f == io_rs1_sel ? $signed(registers_31) : $signed(_GEN_30); // @[RegisterFile.scala 25:12]
+ assign io_rs2 = 5'h1f == io_rs2_sel ? $signed(registers_31) : $signed(_GEN_62); // @[RegisterFile.scala 26:12]
+`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}};
+ registers_0 = _RAND_0[31:0];
+ _RAND_1 = {1{`RANDOM}};
+ registers_1 = _RAND_1[31:0];
+ _RAND_2 = {1{`RANDOM}};
+ registers_2 = _RAND_2[31:0];
+ _RAND_3 = {1{`RANDOM}};
+ registers_3 = _RAND_3[31:0];
+ _RAND_4 = {1{`RANDOM}};
+ registers_4 = _RAND_4[31:0];
+ _RAND_5 = {1{`RANDOM}};
+ registers_5 = _RAND_5[31:0];
+ _RAND_6 = {1{`RANDOM}};
+ registers_6 = _RAND_6[31:0];
+ _RAND_7 = {1{`RANDOM}};
+ registers_7 = _RAND_7[31:0];
+ _RAND_8 = {1{`RANDOM}};
+ registers_8 = _RAND_8[31:0];
+ _RAND_9 = {1{`RANDOM}};
+ registers_9 = _RAND_9[31:0];
+ _RAND_10 = {1{`RANDOM}};
+ registers_10 = _RAND_10[31:0];
+ _RAND_11 = {1{`RANDOM}};
+ registers_11 = _RAND_11[31:0];
+ _RAND_12 = {1{`RANDOM}};
+ registers_12 = _RAND_12[31:0];
+ _RAND_13 = {1{`RANDOM}};
+ registers_13 = _RAND_13[31:0];
+ _RAND_14 = {1{`RANDOM}};
+ registers_14 = _RAND_14[31:0];
+ _RAND_15 = {1{`RANDOM}};
+ registers_15 = _RAND_15[31:0];
+ _RAND_16 = {1{`RANDOM}};
+ registers_16 = _RAND_16[31:0];
+ _RAND_17 = {1{`RANDOM}};
+ registers_17 = _RAND_17[31:0];
+ _RAND_18 = {1{`RANDOM}};
+ registers_18 = _RAND_18[31:0];
+ _RAND_19 = {1{`RANDOM}};
+ registers_19 = _RAND_19[31:0];
+ _RAND_20 = {1{`RANDOM}};
+ registers_20 = _RAND_20[31:0];
+ _RAND_21 = {1{`RANDOM}};
+ registers_21 = _RAND_21[31:0];
+ _RAND_22 = {1{`RANDOM}};
+ registers_22 = _RAND_22[31:0];
+ _RAND_23 = {1{`RANDOM}};
+ registers_23 = _RAND_23[31:0];
+ _RAND_24 = {1{`RANDOM}};
+ registers_24 = _RAND_24[31:0];
+ _RAND_25 = {1{`RANDOM}};
+ registers_25 = _RAND_25[31:0];
+ _RAND_26 = {1{`RANDOM}};
+ registers_26 = _RAND_26[31:0];
+ _RAND_27 = {1{`RANDOM}};
+ registers_27 = _RAND_27[31:0];
+ _RAND_28 = {1{`RANDOM}};
+ registers_28 = _RAND_28[31:0];
+ _RAND_29 = {1{`RANDOM}};
+ registers_29 = _RAND_29[31:0];
+ _RAND_30 = {1{`RANDOM}};
+ registers_30 = _RAND_30[31:0];
+ _RAND_31 = {1{`RANDOM}};
+ registers_31 = _RAND_31[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ registers_0 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ registers_0 <= 32'sh0;
+ end else if (5'h0 == io_rd_sel) begin
+ registers_0 <= io_writeData;
+ end else begin
+ registers_0 <= 32'sh0;
+ end
+ end else begin
+ registers_0 <= 32'sh0;
+ end
+ if (reset) begin
+ registers_1 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h1 == io_rd_sel) begin
+ registers_1 <= 32'sh0;
+ end
+ end else if (5'h1 == io_rd_sel) begin
+ registers_1 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_2 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h2 == io_rd_sel) begin
+ registers_2 <= 32'sh0;
+ end
+ end else if (5'h2 == io_rd_sel) begin
+ registers_2 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_3 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h3 == io_rd_sel) begin
+ registers_3 <= 32'sh0;
+ end
+ end else if (5'h3 == io_rd_sel) begin
+ registers_3 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_4 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h4 == io_rd_sel) begin
+ registers_4 <= 32'sh0;
+ end
+ end else if (5'h4 == io_rd_sel) begin
+ registers_4 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_5 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h5 == io_rd_sel) begin
+ registers_5 <= 32'sh0;
+ end
+ end else if (5'h5 == io_rd_sel) begin
+ registers_5 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_6 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h6 == io_rd_sel) begin
+ registers_6 <= 32'sh0;
+ end
+ end else if (5'h6 == io_rd_sel) begin
+ registers_6 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_7 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h7 == io_rd_sel) begin
+ registers_7 <= 32'sh0;
+ end
+ end else if (5'h7 == io_rd_sel) begin
+ registers_7 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_8 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h8 == io_rd_sel) begin
+ registers_8 <= 32'sh0;
+ end
+ end else if (5'h8 == io_rd_sel) begin
+ registers_8 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_9 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h9 == io_rd_sel) begin
+ registers_9 <= 32'sh0;
+ end
+ end else if (5'h9 == io_rd_sel) begin
+ registers_9 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_10 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'ha == io_rd_sel) begin
+ registers_10 <= 32'sh0;
+ end
+ end else if (5'ha == io_rd_sel) begin
+ registers_10 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_11 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'hb == io_rd_sel) begin
+ registers_11 <= 32'sh0;
+ end
+ end else if (5'hb == io_rd_sel) begin
+ registers_11 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_12 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'hc == io_rd_sel) begin
+ registers_12 <= 32'sh0;
+ end
+ end else if (5'hc == io_rd_sel) begin
+ registers_12 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_13 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'hd == io_rd_sel) begin
+ registers_13 <= 32'sh0;
+ end
+ end else if (5'hd == io_rd_sel) begin
+ registers_13 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_14 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'he == io_rd_sel) begin
+ registers_14 <= 32'sh0;
+ end
+ end else if (5'he == io_rd_sel) begin
+ registers_14 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_15 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'hf == io_rd_sel) begin
+ registers_15 <= 32'sh0;
+ end
+ end else if (5'hf == io_rd_sel) begin
+ registers_15 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_16 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h10 == io_rd_sel) begin
+ registers_16 <= 32'sh0;
+ end
+ end else if (5'h10 == io_rd_sel) begin
+ registers_16 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_17 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h11 == io_rd_sel) begin
+ registers_17 <= 32'sh0;
+ end
+ end else if (5'h11 == io_rd_sel) begin
+ registers_17 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_18 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h12 == io_rd_sel) begin
+ registers_18 <= 32'sh0;
+ end
+ end else if (5'h12 == io_rd_sel) begin
+ registers_18 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_19 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h13 == io_rd_sel) begin
+ registers_19 <= 32'sh0;
+ end
+ end else if (5'h13 == io_rd_sel) begin
+ registers_19 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_20 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h14 == io_rd_sel) begin
+ registers_20 <= 32'sh0;
+ end
+ end else if (5'h14 == io_rd_sel) begin
+ registers_20 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_21 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h15 == io_rd_sel) begin
+ registers_21 <= 32'sh0;
+ end
+ end else if (5'h15 == io_rd_sel) begin
+ registers_21 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_22 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h16 == io_rd_sel) begin
+ registers_22 <= 32'sh0;
+ end
+ end else if (5'h16 == io_rd_sel) begin
+ registers_22 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_23 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h17 == io_rd_sel) begin
+ registers_23 <= 32'sh0;
+ end
+ end else if (5'h17 == io_rd_sel) begin
+ registers_23 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_24 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h18 == io_rd_sel) begin
+ registers_24 <= 32'sh0;
+ end
+ end else if (5'h18 == io_rd_sel) begin
+ registers_24 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_25 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h19 == io_rd_sel) begin
+ registers_25 <= 32'sh0;
+ end
+ end else if (5'h19 == io_rd_sel) begin
+ registers_25 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_26 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h1a == io_rd_sel) begin
+ registers_26 <= 32'sh0;
+ end
+ end else if (5'h1a == io_rd_sel) begin
+ registers_26 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_27 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h1b == io_rd_sel) begin
+ registers_27 <= 32'sh0;
+ end
+ end else if (5'h1b == io_rd_sel) begin
+ registers_27 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_28 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h1c == io_rd_sel) begin
+ registers_28 <= 32'sh0;
+ end
+ end else if (5'h1c == io_rd_sel) begin
+ registers_28 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_29 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h1d == io_rd_sel) begin
+ registers_29 <= 32'sh0;
+ end
+ end else if (5'h1d == io_rd_sel) begin
+ registers_29 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_30 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h1e == io_rd_sel) begin
+ registers_30 <= 32'sh0;
+ end
+ end else if (5'h1e == io_rd_sel) begin
+ registers_30 <= io_writeData;
+ end
+ end
+ if (reset) begin
+ registers_31 <= 32'sh0;
+ end else if (io_regWrite) begin
+ if (_T_2) begin
+ if (5'h1f == io_rd_sel) begin
+ registers_31 <= 32'sh0;
+ end
+ end else if (5'h1f == io_rd_sel) begin
+ registers_31 <= io_writeData;
+ end
+ end
+ end
+endmodule
+module ImmediateGeneration(
+ input [31:0] io_instruction,
+ input [31:0] io_pc,
+ output [31:0] io_s_imm,
+ output [31:0] io_sb_imm,
+ output [31:0] io_u_imm,
+ output [31:0] io_uj_imm,
+ output [31:0] io_i_imm
+);
+ wire [4:0] s_lower_half = io_instruction[11:7]; // @[ImmediateGeneration.scala 19:38]
+ wire [6:0] s_upper_half = io_instruction[31:25]; // @[ImmediateGeneration.scala 20:38]
+ wire [11:0] s_imm_12 = {s_upper_half,s_lower_half}; // @[Cat.scala 29:58]
+ wire [19:0] _T_2 = s_imm_12[11] ? 20'hfffff : 20'h0; // @[Bitwise.scala 72:12]
+ wire [3:0] sb_lower_half = io_instruction[11:8]; // @[ImmediateGeneration.scala 28:39]
+ wire [5:0] sb_upper_half = io_instruction[30:25]; // @[ImmediateGeneration.scala 29:39]
+ wire sb_11thbit = io_instruction[7]; // @[ImmediateGeneration.scala 30:36]
+ wire sb_12thbit = io_instruction[31]; // @[ImmediateGeneration.scala 31:36]
+ wire [12:0] sb_imm_13 = {sb_12thbit,sb_11thbit,sb_upper_half,sb_lower_half,1'h0}; // @[Cat.scala 29:58]
+ wire [18:0] _T_10 = sb_imm_13[12] ? 19'h7ffff : 19'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] sb_imm_32 = {_T_10,sb_12thbit,sb_11thbit,sb_upper_half,sb_lower_half,1'h0}; // @[ImmediateGeneration.scala 33:61]
+ wire [19:0] u_imm_20 = io_instruction[31:12]; // @[ImmediateGeneration.scala 39:34]
+ wire [11:0] _T_17 = u_imm_20[19] ? 12'hfff : 12'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] u_imm_32 = {_T_17,u_imm_20}; // @[Cat.scala 29:58]
+ wire [43:0] _GEN_0 = {u_imm_32, 12'h0}; // @[ImmediateGeneration.scala 42:37]
+ wire [46:0] _T_18 = {{3'd0}, _GEN_0}; // @[ImmediateGeneration.scala 43:34]
+ wire [9:0] uj_lower_half = io_instruction[30:21]; // @[ImmediateGeneration.scala 48:39]
+ wire uj_11thbit = io_instruction[20]; // @[ImmediateGeneration.scala 49:36]
+ wire [7:0] uj_upper_half = io_instruction[19:12]; // @[ImmediateGeneration.scala 50:39]
+ wire [20:0] uj_imm_21 = {sb_12thbit,uj_upper_half,uj_11thbit,uj_lower_half,1'h0}; // @[Cat.scala 29:58]
+ wire [10:0] _T_25 = uj_imm_21[20] ? 11'h7ff : 11'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] uj_imm_32 = {_T_25,sb_12thbit,uj_upper_half,uj_11thbit,uj_lower_half,1'h0}; // @[ImmediateGeneration.scala 53:61]
+ wire [11:0] i_imm_12 = io_instruction[31:20]; // @[ImmediateGeneration.scala 59:34]
+ wire [19:0] _T_32 = i_imm_12[11] ? 20'hfffff : 20'h0; // @[Bitwise.scala 72:12]
+ assign io_s_imm = {_T_2,s_upper_half,s_lower_half}; // @[ImmediateGeneration.scala 23:14]
+ assign io_sb_imm = $signed(sb_imm_32) + $signed(io_pc); // @[ImmediateGeneration.scala 34:15]
+ assign io_u_imm = _T_18[31:0]; // @[ImmediateGeneration.scala 43:14]
+ assign io_uj_imm = $signed(uj_imm_32) + $signed(io_pc); // @[ImmediateGeneration.scala 54:15]
+ assign io_i_imm = {_T_32,i_imm_12}; // @[ImmediateGeneration.scala 61:14]
+endmodule
+module StructuralDetector(
+ input [4:0] io_rs1_sel,
+ input [4:0] io_rs2_sel,
+ input io_MEM_WB_regWr,
+ input [4:0] io_MEM_WB_REGRD,
+ input [6:0] io_inst_op_in,
+ output io_fwd_rs1,
+ output io_fwd_rs2
+);
+ wire _T_1 = io_MEM_WB_REGRD != 5'h0; // @[StructuralDetector.scala 27:51]
+ wire _T_2 = io_MEM_WB_regWr & _T_1; // @[StructuralDetector.scala 27:32]
+ wire _T_3 = io_MEM_WB_REGRD == io_rs1_sel; // @[StructuralDetector.scala 27:86]
+ wire _T_4 = _T_2 & _T_3; // @[StructuralDetector.scala 27:66]
+ wire _T_5 = io_inst_op_in != 7'h37; // @[StructuralDetector.scala 27:118]
+ wire _T_10 = io_MEM_WB_REGRD == io_rs2_sel; // @[StructuralDetector.scala 33:86]
+ wire _T_11 = _T_2 & _T_10; // @[StructuralDetector.scala 33:67]
+ assign io_fwd_rs1 = _T_4 & _T_5; // @[StructuralDetector.scala 28:16 StructuralDetector.scala 30:16]
+ assign io_fwd_rs2 = _T_11 & _T_5; // @[StructuralDetector.scala 34:16 StructuralDetector.scala 36:16]
+endmodule
+module Jalr(
+ input [31:0] io_input_a,
+ input [31:0] io_input_b,
+ output [31:0] io_output
+);
+ wire [31:0] sum = $signed(io_input_a) + $signed(io_input_b); // @[Jalr.scala 12:26]
+ wire [32:0] _GEN_0 = {{1{sum[31]}},sum}; // @[Jalr.scala 13:22]
+ wire [32:0] _T_3 = $signed(_GEN_0) & 33'shfffffffe; // @[Jalr.scala 13:22]
+ assign io_output = _T_3[31:0]; // @[Jalr.scala 13:15]
+endmodule
+module CsrPrimitive(
+ input clock,
+ input reset,
+ input [5:0] io_i_wrdata,
+ input io_i_wr_en,
+ output [5:0] io_o_rd_data
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ reg [5:0] rdata_q; // @[CsrPrimitive.scala 13:24]
+ assign io_o_rd_data = rdata_q; // @[CsrPrimitive.scala 18:16]
+`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}};
+ rdata_q = _RAND_0[5:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rdata_q <= 6'hd;
+ end else if (io_i_wr_en) begin
+ rdata_q <= io_i_wrdata;
+ end
+ end
+endmodule
+module CsrPrimitive_1(
+ input clock,
+ input reset,
+ input [31:0] io_i_wrdata,
+ input io_i_wr_en,
+ output [31:0] io_o_rd_data
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ reg [31:0] rdata_q; // @[CsrPrimitive.scala 13:24]
+ assign io_o_rd_data = rdata_q; // @[CsrPrimitive.scala 18:16]
+`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}};
+ rdata_q = _RAND_0[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rdata_q <= 32'h0;
+ end else if (io_i_wr_en) begin
+ rdata_q <= io_i_wrdata;
+ end
+ end
+endmodule
+module CsrPrimitive_2(
+ input clock,
+ input reset,
+ input [2:0] io_i_wrdata,
+ input io_i_wr_en,
+ output [2:0] io_o_rd_data
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ reg [2:0] rdata_q; // @[CsrPrimitive.scala 13:24]
+ assign io_o_rd_data = rdata_q; // @[CsrPrimitive.scala 18:16]
+`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}};
+ rdata_q = _RAND_0[2:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rdata_q <= 3'h4;
+ end else if (io_i_wr_en) begin
+ rdata_q <= io_i_wrdata;
+ end
+ end
+endmodule
+module CsrPrimitive_4(
+ input clock,
+ input reset,
+ input [5:0] io_i_wrdata,
+ input io_i_wr_en,
+ output [5:0] io_o_rd_data
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ reg [5:0] rdata_q; // @[CsrPrimitive.scala 13:24]
+ assign io_o_rd_data = rdata_q; // @[CsrPrimitive.scala 18:16]
+`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}};
+ rdata_q = _RAND_0[5:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rdata_q <= 6'h0;
+ end else if (io_i_wr_en) begin
+ rdata_q <= io_i_wrdata;
+ end
+ end
+endmodule
+module CsrPrimitive_6(
+ input clock,
+ input reset,
+ input [31:0] io_i_wrdata,
+ input io_i_wr_en,
+ output [31:0] io_o_rd_data
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ reg [31:0] rdata_q; // @[CsrPrimitive.scala 13:24]
+ assign io_o_rd_data = rdata_q; // @[CsrPrimitive.scala 18:16]
+`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}};
+ rdata_q = _RAND_0[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rdata_q <= 32'h1;
+ end else if (io_i_wr_en) begin
+ rdata_q <= io_i_wrdata;
+ end
+ end
+endmodule
+module CsrPrimitive_7(
+ input clock,
+ input reset,
+ input [27:0] io_i_wrdata,
+ input io_i_wr_en,
+ output [27:0] io_o_rd_data
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ reg [27:0] rdata_q; // @[CsrPrimitive.scala 13:24]
+ assign io_o_rd_data = rdata_q; // @[CsrPrimitive.scala 18:16]
+`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}};
+ rdata_q = _RAND_0[27:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rdata_q <= 28'h0;
+ end else if (io_i_wr_en) begin
+ rdata_q <= io_i_wrdata;
+ end
+ end
+endmodule
+module BrqCounter(
+ input clock,
+ input reset,
+ input io_i_counter_inc,
+ input io_i_counterh_we,
+ input io_i_counter_we,
+ input [31:0] io_i_counter_val,
+ output [63:0] io_o_counter_val
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [63:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ wire we = io_i_counter_we | io_i_counterh_we; // @[BrqCounter.scala 27:35]
+ reg [63:0] counter_q; // @[BrqCounter.scala 57:26]
+ wire [31:0] counter_msb = io_i_counterh_we ? io_i_counter_val : counter_q[63:32]; // @[BrqCounter.scala 34:3]
+ wire [31:0] counter_lsb = io_i_counterh_we ? counter_q[31:0] : io_i_counter_val; // @[BrqCounter.scala 34:3]
+ wire [63:0] counter_load = {counter_msb,counter_lsb}; // @[Cat.scala 29:58]
+ wire [63:0] counter_upd = counter_q + 64'h1; // @[BrqCounter.scala 41:47]
+ assign io_o_counter_val = counter_q; // @[BrqCounter.scala 76:20]
+`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 = {2{`RANDOM}};
+ counter_q = _RAND_0[63:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ counter_q <= 64'h0;
+ end else if (we) begin
+ counter_q <= counter_load;
+ end else if (io_i_counter_inc) begin
+ counter_q <= counter_upd;
+ end
+ end
+endmodule
+module BrqCounter_2(
+ input clock,
+ input reset,
+ input io_i_counter_inc,
+ input io_i_counterh_we,
+ input io_i_counter_we,
+ input [31:0] io_i_counter_val,
+ output [63:0] io_o_counter_val
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [63:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ wire we = io_i_counter_we | io_i_counterh_we; // @[BrqCounter.scala 27:35]
+ reg [39:0] counter_q; // @[BrqCounter.scala 57:26]
+ wire [79:0] _T_1 = {40'h0,counter_q}; // @[Cat.scala 29:58]
+ wire [63:0] counter = _T_1[63:0]; // @[BrqCounter.scala 16:21 BrqCounter.scala 28:16]
+ wire [31:0] counter_msb = io_i_counterh_we ? io_i_counter_val : counter[63:32]; // @[BrqCounter.scala 34:3]
+ wire [31:0] counter_lsb = io_i_counterh_we ? counter[31:0] : io_i_counter_val; // @[BrqCounter.scala 34:3]
+ wire [63:0] counter_load = {counter_msb,counter_lsb}; // @[Cat.scala 29:58]
+ wire [39:0] counter_upd = counter[39:0] + 40'h1; // @[BrqCounter.scala 41:47]
+ assign io_o_counter_val = _T_1[63:0]; // @[BrqCounter.scala 76:20]
+`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 = {2{`RANDOM}};
+ counter_q = _RAND_0[39:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ counter_q <= 40'h0;
+ end else if (we) begin
+ counter_q <= counter_load[39:0];
+ end else if (io_i_counter_inc) begin
+ counter_q <= counter_upd;
+ end else begin
+ counter_q <= counter[39:0];
+ end
+ end
+endmodule
+module CsrRegisterFile(
+ input clock,
+ input reset,
+ output [31:0] io_o_csr_mtvec,
+ input io_i_csr_mtvec_init,
+ input io_i_csr_access,
+ input [11:0] io_i_csr_addr,
+ input [31:0] io_i_csr_wdata,
+ input [1:0] io_i_csr_op,
+ input io_i_csr_op_en,
+ output [31:0] io_o_csr_rdata,
+ input io_i_irq_external,
+ output io_o_irq_pending,
+ output [2:0] io_o_irqs,
+ output io_o_csr_mstatus_mie,
+ output [31:0] io_o_csr_mepc,
+ input [31:0] io_i_pc_if,
+ input io_i_csr_save_if,
+ input io_i_csr_restore_mret,
+ input io_i_csr_save_cause,
+ input [5:0] io_i_csr_mcause,
+ output io_o_illegal_csr_insn
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+ reg [31:0] _RAND_1;
+ reg [63:0] _RAND_2;
+ reg [63:0] _RAND_3;
+ reg [63:0] _RAND_4;
+ reg [63:0] _RAND_5;
+ reg [63:0] _RAND_6;
+ reg [63:0] _RAND_7;
+ reg [63:0] _RAND_8;
+ reg [63:0] _RAND_9;
+ reg [63:0] _RAND_10;
+ reg [63:0] _RAND_11;
+ reg [63:0] _RAND_12;
+ reg [63:0] _RAND_13;
+ reg [63:0] _RAND_14;
+ reg [63:0] _RAND_15;
+ reg [63:0] _RAND_16;
+ reg [63:0] _RAND_17;
+ reg [63:0] _RAND_18;
+ reg [63:0] _RAND_19;
+ reg [63:0] _RAND_20;
+ reg [63:0] _RAND_21;
+ reg [63:0] _RAND_22;
+ reg [63:0] _RAND_23;
+ reg [63:0] _RAND_24;
+ reg [63:0] _RAND_25;
+ reg [63:0] _RAND_26;
+ reg [63:0] _RAND_27;
+ reg [63:0] _RAND_28;
+ reg [63:0] _RAND_29;
+ reg [63:0] _RAND_30;
+ reg [63:0] _RAND_31;
+ reg [63:0] _RAND_32;
+ reg [63:0] _RAND_33;
+ reg [31:0] _RAND_34;
+ reg [31:0] _RAND_35;
+ reg [31:0] _RAND_36;
+ reg [31:0] _RAND_37;
+ reg [31:0] _RAND_38;
+ reg [31:0] _RAND_39;
+ reg [31:0] _RAND_40;
+ reg [31:0] _RAND_41;
+ reg [31:0] _RAND_42;
+ reg [31:0] _RAND_43;
+ reg [31:0] _RAND_44;
+ reg [31:0] _RAND_45;
+ reg [31:0] _RAND_46;
+ reg [31:0] _RAND_47;
+ reg [31:0] _RAND_48;
+ reg [31:0] _RAND_49;
+ reg [31:0] _RAND_50;
+ reg [31:0] _RAND_51;
+ reg [31:0] _RAND_52;
+ reg [31:0] _RAND_53;
+ reg [31:0] _RAND_54;
+ reg [31:0] _RAND_55;
+ reg [31:0] _RAND_56;
+ reg [31:0] _RAND_57;
+ reg [31:0] _RAND_58;
+ reg [31:0] _RAND_59;
+ reg [31:0] _RAND_60;
+ reg [31:0] _RAND_61;
+ reg [31:0] _RAND_62;
+ reg [31:0] _RAND_63;
+ reg [31:0] _RAND_64;
+ reg [31:0] _RAND_65;
+`endif // RANDOMIZE_REG_INIT
+ // wire PRIM_MSTATUS_clock; // @[CsrRegisterFile.scala 647:28]
+ // wire PRIM_MSTATUSreset; // @[CsrRegisterFile.scala 647:28]
+ wire [5:0] PRIM_MSTATUS_io_i_wrdata; // @[CsrRegisterFile.scala 647:28]
+ wire PRIM_MSTATUS_io_i_wr_en; // @[CsrRegisterFile.scala 647:28]
+ wire [5:0] PRIM_MSTATUS_io_o_rd_data; // @[CsrRegisterFile.scala 647:28]
+ // wire PRIM_MEPC_clock; // @[CsrRegisterFile.scala 653:25]
+ // wire PRIM_MEPCreset; // @[CsrRegisterFile.scala 653:25]
+ wire [31:0] PRIM_MEPC_io_i_wrdata; // @[CsrRegisterFile.scala 653:25]
+ wire PRIM_MEPC_io_i_wr_en; // @[CsrRegisterFile.scala 653:25]
+ wire [31:0] PRIM_MEPC_io_o_rd_data; // @[CsrRegisterFile.scala 653:25]
+ // wire PRIM_MIE_clock; // @[CsrRegisterFile.scala 664:24]
+ // wire PRIM_MIEreset; // @[CsrRegisterFile.scala 664:24]
+ wire [2:0] PRIM_MIE_io_i_wrdata; // @[CsrRegisterFile.scala 664:24]
+ wire PRIM_MIE_io_i_wr_en; // @[CsrRegisterFile.scala 664:24]
+ wire [2:0] PRIM_MIE_io_o_rd_data; // @[CsrRegisterFile.scala 664:24]
+ // wire PRIM_MSCRATCH_clock; // @[CsrRegisterFile.scala 671:29]
+ // wire PRIM_MSCRATCHreset; // @[CsrRegisterFile.scala 671:29]
+ wire [31:0] PRIM_MSCRATCH_io_i_wrdata; // @[CsrRegisterFile.scala 671:29]
+ wire PRIM_MSCRATCH_io_i_wr_en; // @[CsrRegisterFile.scala 671:29]
+ wire [31:0] PRIM_MSCRATCH_io_o_rd_data; // @[CsrRegisterFile.scala 671:29]
+ // wire PRIM_MCAUSE_clock; // @[CsrRegisterFile.scala 678:27]
+ // wire PRIM_MCAUSEreset; // @[CsrRegisterFile.scala 678:27]
+ wire [5:0] PRIM_MCAUSE_io_i_wrdata; // @[CsrRegisterFile.scala 678:27]
+ wire PRIM_MCAUSE_io_i_wr_en; // @[CsrRegisterFile.scala 678:27]
+ wire [5:0] PRIM_MCAUSE_io_o_rd_data; // @[CsrRegisterFile.scala 678:27]
+ // wire PRIM_MTVAL_clock; // @[CsrRegisterFile.scala 684:26]
+ // wire PRIM_MTVALreset; // @[CsrRegisterFile.scala 684:26]
+ wire [31:0] PRIM_MTVAL_io_i_wrdata; // @[CsrRegisterFile.scala 684:26]
+ wire PRIM_MTVAL_io_i_wr_en; // @[CsrRegisterFile.scala 684:26]
+ wire [31:0] PRIM_MTVAL_io_o_rd_data; // @[CsrRegisterFile.scala 684:26]
+ // wire PRIM_MTVEC_clock; // @[CsrRegisterFile.scala 691:26]
+ // wire PRIM_MTVECreset; // @[CsrRegisterFile.scala 691:26]
+ wire [31:0] PRIM_MTVEC_io_i_wrdata; // @[CsrRegisterFile.scala 691:26]
+ wire PRIM_MTVEC_io_i_wr_en; // @[CsrRegisterFile.scala 691:26]
+ wire [31:0] PRIM_MTVEC_io_o_rd_data; // @[CsrRegisterFile.scala 691:26]
+ // wire PRIM_DCSR_clock; // @[CsrRegisterFile.scala 701:25]
+ // wire PRIM_DCSRreset; // @[CsrRegisterFile.scala 701:25]
+ wire [27:0] PRIM_DCSR_io_i_wrdata; // @[CsrRegisterFile.scala 701:25]
+ wire PRIM_DCSR_io_i_wr_en; // @[CsrRegisterFile.scala 701:25]
+ wire [27:0] PRIM_DCSR_io_o_rd_data; // @[CsrRegisterFile.scala 701:25]
+ // wire PRIM_DEPC_clock; // @[CsrRegisterFile.scala 708:25]
+ //wire PRIM_DEPCreset; // @[CsrRegisterFile.scala 708:25]
+ wire [31:0] PRIM_DEPC_io_i_wrdata; // @[CsrRegisterFile.scala 708:25]
+ wire PRIM_DEPC_io_i_wr_en; // @[CsrRegisterFile.scala 708:25]
+ wire [31:0] PRIM_DEPC_io_o_rd_data; // @[CsrRegisterFile.scala 708:25]
+ // wire PRIM_DSCRATCH0_clock; // @[CsrRegisterFile.scala 714:30]
+ //wire PRIM_DSCRATCH0reset; // @[CsrRegisterFile.scala 714:30]
+ wire [31:0] PRIM_DSCRATCH0_io_i_wrdata; // @[CsrRegisterFile.scala 714:30]
+ wire PRIM_DSCRATCH0_io_i_wr_en; // @[CsrRegisterFile.scala 714:30]
+ wire [31:0] PRIM_DSCRATCH0_io_o_rd_data; // @[CsrRegisterFile.scala 714:30]
+ //wire PRIM_DSCRATCH1_clock; // @[CsrRegisterFile.scala 721:30]
+ // wire PRIM_DSCRATCH1reset; // @[CsrRegisterFile.scala 721:30]
+ wire [31:0] PRIM_DSCRATCH1_io_i_wrdata; // @[CsrRegisterFile.scala 721:30]
+ wire PRIM_DSCRATCH1_io_i_wr_en; // @[CsrRegisterFile.scala 721:30]
+ wire [31:0] PRIM_DSCRATCH1_io_o_rd_data; // @[CsrRegisterFile.scala 721:30]
+ //wire COUNT_MCYCLE_clock; // @[CsrRegisterFile.scala 777:28]
+ // wire COUNT_MCYCLEreset; // @[CsrRegisterFile.scala 777:28]
+ wire COUNT_MCYCLE_io_i_counter_inc; // @[CsrRegisterFile.scala 777:28]
+ wire COUNT_MCYCLE_io_i_counterh_we; // @[CsrRegisterFile.scala 777:28]
+ wire COUNT_MCYCLE_io_i_counter_we; // @[CsrRegisterFile.scala 777:28]
+ wire [31:0] COUNT_MCYCLE_io_i_counter_val; // @[CsrRegisterFile.scala 777:28]
+ wire [63:0] COUNT_MCYCLE_io_o_counter_val; // @[CsrRegisterFile.scala 777:28]
+ //wire COUNT_MINSTRET_clock; // @[CsrRegisterFile.scala 785:30]
+ // wire COUNT_MINSTRETreset; // @[CsrRegisterFile.scala 785:30]
+ wire COUNT_MINSTRET_io_i_counter_inc; // @[CsrRegisterFile.scala 785:30]
+ wire COUNT_MINSTRET_io_i_counterh_we; // @[CsrRegisterFile.scala 785:30]
+ wire COUNT_MINSTRET_io_i_counter_we; // @[CsrRegisterFile.scala 785:30]
+ wire [31:0] COUNT_MINSTRET_io_i_counter_val; // @[CsrRegisterFile.scala 785:30]
+ wire [63:0] COUNT_MINSTRET_io_o_counter_val; // @[CsrRegisterFile.scala 785:30]
+ //wire BrqCounter_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounterreset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ //wire BrqCounter_1_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_1reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_1_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_1_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_1_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_1_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_1_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ //wire BrqCounter_2_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_2reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_2_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_2_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_2_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_2_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_2_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ //wire BrqCounter_3_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_3reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_3_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_3_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_3_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_3_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_3_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ //wire BrqCounter_4_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_4reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_4_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_4_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_4_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_4_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_4_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_5_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_5reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_5_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_5_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_5_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_5_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_5_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_6_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_6reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_6_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_6_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_6_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_6_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_6_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_7_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_7reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_7_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_7_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_7_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_7_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_7_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ //wire BrqCounter_8_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_8reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_8_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_8_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_8_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_8_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_8_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ //wire BrqCounter_9_clock; // @[CsrRegisterFile.scala 797:26]
+ // wire BrqCounter_9reset; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_9_io_i_counter_inc; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_9_io_i_counterh_we; // @[CsrRegisterFile.scala 797:26]
+ wire BrqCounter_9_io_i_counter_we; // @[CsrRegisterFile.scala 797:26]
+ wire [31:0] BrqCounter_9_io_i_counter_val; // @[CsrRegisterFile.scala 797:26]
+ wire [63:0] BrqCounter_9_io_o_counter_val; // @[CsrRegisterFile.scala 797:26]
+ reg [1:0] priv_lvl_q; // @[CsrRegisterFile.scala 100:27]
+ reg [12:0] mcountinhibit_q; // @[CsrRegisterFile.scala 133:49]
+ reg [63:0] mhpmcounter_0; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_1; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_2; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_3; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_4; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_5; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_6; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_7; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_8; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_9; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_10; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_11; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_12; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_13; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_14; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_15; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_16; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_17; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_18; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_19; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_20; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_21; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_22; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_23; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_24; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_25; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_26; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_27; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_28; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_29; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_30; // @[CsrRegisterFile.scala 137:49]
+ reg [63:0] mhpmcounter_31; // @[CsrRegisterFile.scala 137:49]
+ reg [31:0] mhpmevent_0; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_1; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_2; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_3; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_4; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_5; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_6; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_7; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_8; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_9; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_10; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_11; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_12; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_13; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_14; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_15; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_16; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_17; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_18; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_19; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_20; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_21; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_22; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_23; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_24; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_25; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_26; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_27; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_28; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_29; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_30; // @[CsrRegisterFile.scala 142:49]
+ reg [31:0] mhpmevent_31; // @[CsrRegisterFile.scala 142:49]
+ wire illegal_csr_priv = io_i_csr_addr[9:8] > priv_lvl_q; // @[CsrRegisterFile.scala 201:43]
+ wire _T_39 = io_i_csr_addr[11:10] == 2'h3; // @[CsrRegisterFile.scala 203:47]
+ wire _T_514 = io_i_csr_op == 2'h1; // @[CsrRegisterFile.scala 618:47]
+ wire _T_515 = io_i_csr_op == 2'h2; // @[CsrRegisterFile.scala 618:89]
+ wire _T_516 = _T_514 | _T_515; // @[CsrRegisterFile.scala 618:74]
+ wire _T_517 = io_i_csr_op == 2'h3; // @[CsrRegisterFile.scala 618:129]
+ wire _T_518 = _T_516 | _T_517; // @[CsrRegisterFile.scala 618:114]
+ wire csr_wreq = io_i_csr_op_en & _T_518; // @[CsrRegisterFile.scala 618:31]
+ wire illegal_csr_write = _T_39 & csr_wreq; // @[CsrRegisterFile.scala 203:60]
+ wire _T_44 = io_i_csr_addr == 12'hf14; // @[CsrRegisterFile.scala 218:22]
+ wire _T_45 = io_i_csr_addr == 12'h300; // @[CsrRegisterFile.scala 223:29]
+ wire _T_56 = io_i_csr_addr == 12'h301; // @[CsrRegisterFile.scala 231:29]
+ wire _T_57 = io_i_csr_addr == 12'h304; // @[CsrRegisterFile.scala 236:29]
+ wire _T_64 = io_i_csr_addr == 12'h340; // @[CsrRegisterFile.scala 244:29]
+ wire _T_65 = io_i_csr_addr == 12'h305; // @[CsrRegisterFile.scala 250:29]
+ wire _T_66 = io_i_csr_addr == 12'h341; // @[CsrRegisterFile.scala 259:29]
+ wire _T_67 = io_i_csr_addr == 12'h342; // @[CsrRegisterFile.scala 265:29]
+ wire _T_72 = io_i_csr_addr == 12'h343; // @[CsrRegisterFile.scala 272:29]
+ wire _T_73 = io_i_csr_addr == 12'h344; // @[CsrRegisterFile.scala 277:29]
+ wire _T_80 = io_i_csr_addr == 12'h7b0; // @[CsrRegisterFile.scala 285:29]
+ wire _T_95 = io_i_csr_addr == 12'h7b1; // @[CsrRegisterFile.scala 290:29]
+ wire _T_97 = io_i_csr_addr == 12'h7b2; // @[CsrRegisterFile.scala 295:29]
+ wire _T_98 = io_i_csr_addr == 12'h7b3; // @[CsrRegisterFile.scala 299:29]
+ wire _T_100 = io_i_csr_addr == 12'h320; // @[CsrRegisterFile.scala 305:29]
+ wire _T_101 = io_i_csr_addr == 12'h323; // @[CsrRegisterFile.scala 310:30]
+ wire _T_102 = io_i_csr_addr == 12'h324; // @[CsrRegisterFile.scala 310:77]
+ wire _T_103 = _T_101 | _T_102; // @[CsrRegisterFile.scala 310:60]
+ wire _T_104 = io_i_csr_addr == 12'h325; // @[CsrRegisterFile.scala 310:124]
+ wire _T_105 = _T_103 | _T_104; // @[CsrRegisterFile.scala 310:107]
+ wire _T_106 = io_i_csr_addr == 12'h326; // @[CsrRegisterFile.scala 310:171]
+ wire _T_107 = _T_105 | _T_106; // @[CsrRegisterFile.scala 310:154]
+ wire _T_108 = io_i_csr_addr == 12'h327; // @[CsrRegisterFile.scala 311:22]
+ wire _T_109 = _T_107 | _T_108; // @[CsrRegisterFile.scala 310:201]
+ wire _T_110 = io_i_csr_addr == 12'h328; // @[CsrRegisterFile.scala 311:69]
+ wire _T_111 = _T_109 | _T_110; // @[CsrRegisterFile.scala 311:52]
+ wire _T_112 = io_i_csr_addr == 12'h329; // @[CsrRegisterFile.scala 311:116]
+ wire _T_113 = _T_111 | _T_112; // @[CsrRegisterFile.scala 311:99]
+ wire _T_114 = io_i_csr_addr == 12'h32a; // @[CsrRegisterFile.scala 311:163]
+ wire _T_115 = _T_113 | _T_114; // @[CsrRegisterFile.scala 311:146]
+ wire _T_116 = io_i_csr_addr == 12'h32b; // @[CsrRegisterFile.scala 312:22]
+ wire _T_117 = _T_115 | _T_116; // @[CsrRegisterFile.scala 311:193]
+ wire _T_118 = io_i_csr_addr == 12'h32c; // @[CsrRegisterFile.scala 312:69]
+ wire _T_119 = _T_117 | _T_118; // @[CsrRegisterFile.scala 312:52]
+ wire _T_120 = io_i_csr_addr == 12'h32d; // @[CsrRegisterFile.scala 312:116]
+ wire _T_121 = _T_119 | _T_120; // @[CsrRegisterFile.scala 312:99]
+ wire _T_122 = io_i_csr_addr == 12'h32e; // @[CsrRegisterFile.scala 312:163]
+ wire _T_123 = _T_121 | _T_122; // @[CsrRegisterFile.scala 312:146]
+ wire _T_124 = io_i_csr_addr == 12'h32f; // @[CsrRegisterFile.scala 313:22]
+ wire _T_125 = _T_123 | _T_124; // @[CsrRegisterFile.scala 312:193]
+ wire _T_126 = io_i_csr_addr == 12'h330; // @[CsrRegisterFile.scala 313:69]
+ wire _T_127 = _T_125 | _T_126; // @[CsrRegisterFile.scala 313:52]
+ wire _T_128 = io_i_csr_addr == 12'h331; // @[CsrRegisterFile.scala 313:116]
+ wire _T_129 = _T_127 | _T_128; // @[CsrRegisterFile.scala 313:99]
+ wire _T_130 = io_i_csr_addr == 12'h332; // @[CsrRegisterFile.scala 313:163]
+ wire _T_131 = _T_129 | _T_130; // @[CsrRegisterFile.scala 313:146]
+ wire _T_132 = io_i_csr_addr == 12'h333; // @[CsrRegisterFile.scala 314:22]
+ wire _T_133 = _T_131 | _T_132; // @[CsrRegisterFile.scala 313:193]
+ wire _T_134 = io_i_csr_addr == 12'h334; // @[CsrRegisterFile.scala 314:69]
+ wire _T_135 = _T_133 | _T_134; // @[CsrRegisterFile.scala 314:52]
+ wire _T_136 = io_i_csr_addr == 12'h335; // @[CsrRegisterFile.scala 314:116]
+ wire _T_137 = _T_135 | _T_136; // @[CsrRegisterFile.scala 314:99]
+ wire _T_138 = io_i_csr_addr == 12'h336; // @[CsrRegisterFile.scala 314:163]
+ wire _T_139 = _T_137 | _T_138; // @[CsrRegisterFile.scala 314:146]
+ wire _T_140 = io_i_csr_addr == 12'h337; // @[CsrRegisterFile.scala 315:22]
+ wire _T_141 = _T_139 | _T_140; // @[CsrRegisterFile.scala 314:193]
+ wire _T_142 = io_i_csr_addr == 12'h338; // @[CsrRegisterFile.scala 315:69]
+ wire _T_143 = _T_141 | _T_142; // @[CsrRegisterFile.scala 315:52]
+ wire _T_144 = io_i_csr_addr == 12'h339; // @[CsrRegisterFile.scala 315:116]
+ wire _T_145 = _T_143 | _T_144; // @[CsrRegisterFile.scala 315:99]
+ wire _T_146 = io_i_csr_addr == 12'h33a; // @[CsrRegisterFile.scala 315:163]
+ wire _T_147 = _T_145 | _T_146; // @[CsrRegisterFile.scala 315:146]
+ wire _T_148 = io_i_csr_addr == 12'h33b; // @[CsrRegisterFile.scala 316:22]
+ wire _T_149 = _T_147 | _T_148; // @[CsrRegisterFile.scala 315:193]
+ wire _T_150 = io_i_csr_addr == 12'h33c; // @[CsrRegisterFile.scala 316:69]
+ wire _T_151 = _T_149 | _T_150; // @[CsrRegisterFile.scala 316:52]
+ wire _T_152 = io_i_csr_addr == 12'h33d; // @[CsrRegisterFile.scala 316:116]
+ wire _T_153 = _T_151 | _T_152; // @[CsrRegisterFile.scala 316:99]
+ wire _T_154 = io_i_csr_addr == 12'h33e; // @[CsrRegisterFile.scala 316:163]
+ wire _T_155 = _T_153 | _T_154; // @[CsrRegisterFile.scala 316:146]
+ wire _T_156 = io_i_csr_addr == 12'h33f; // @[CsrRegisterFile.scala 317:22]
+ wire _T_157 = _T_155 | _T_156; // @[CsrRegisterFile.scala 316:193]
+ wire _T_158 = io_i_csr_addr == 12'hb00; // @[CsrRegisterFile.scala 321:30]
+ wire _T_159 = io_i_csr_addr == 12'hb02; // @[CsrRegisterFile.scala 321:79]
+ wire _T_160 = _T_158 | _T_159; // @[CsrRegisterFile.scala 321:62]
+ wire _T_161 = io_i_csr_addr == 12'hb03; // @[CsrRegisterFile.scala 321:128]
+ wire _T_162 = _T_160 | _T_161; // @[CsrRegisterFile.scala 321:111]
+ wire _T_163 = io_i_csr_addr == 12'hb04; // @[CsrRegisterFile.scala 321:177]
+ wire _T_164 = _T_162 | _T_163; // @[CsrRegisterFile.scala 321:160]
+ wire _T_165 = io_i_csr_addr == 12'hb05; // @[CsrRegisterFile.scala 322:22]
+ wire _T_166 = _T_164 | _T_165; // @[CsrRegisterFile.scala 321:209]
+ wire _T_167 = io_i_csr_addr == 12'hb06; // @[CsrRegisterFile.scala 322:71]
+ wire _T_168 = _T_166 | _T_167; // @[CsrRegisterFile.scala 322:54]
+ wire _T_169 = io_i_csr_addr == 12'hb07; // @[CsrRegisterFile.scala 322:120]
+ wire _T_170 = _T_168 | _T_169; // @[CsrRegisterFile.scala 322:103]
+ wire _T_171 = io_i_csr_addr == 12'hb08; // @[CsrRegisterFile.scala 322:169]
+ wire _T_172 = _T_170 | _T_171; // @[CsrRegisterFile.scala 322:152]
+ wire _T_173 = io_i_csr_addr == 12'hb09; // @[CsrRegisterFile.scala 323:22]
+ wire _T_174 = _T_172 | _T_173; // @[CsrRegisterFile.scala 322:201]
+ wire _T_175 = io_i_csr_addr == 12'hb0a; // @[CsrRegisterFile.scala 323:71]
+ wire _T_176 = _T_174 | _T_175; // @[CsrRegisterFile.scala 323:54]
+ wire _T_177 = io_i_csr_addr == 12'hb0b; // @[CsrRegisterFile.scala 323:120]
+ wire _T_178 = _T_176 | _T_177; // @[CsrRegisterFile.scala 323:103]
+ wire _T_179 = io_i_csr_addr == 12'hb0c; // @[CsrRegisterFile.scala 323:169]
+ wire _T_180 = _T_178 | _T_179; // @[CsrRegisterFile.scala 323:152]
+ wire _T_181 = io_i_csr_addr == 12'hb0d; // @[CsrRegisterFile.scala 324:22]
+ wire _T_182 = _T_180 | _T_181; // @[CsrRegisterFile.scala 323:201]
+ wire _T_183 = io_i_csr_addr == 12'hb0e; // @[CsrRegisterFile.scala 324:71]
+ wire _T_184 = _T_182 | _T_183; // @[CsrRegisterFile.scala 324:54]
+ wire _T_185 = io_i_csr_addr == 12'hb0f; // @[CsrRegisterFile.scala 324:120]
+ wire _T_186 = _T_184 | _T_185; // @[CsrRegisterFile.scala 324:103]
+ wire _T_187 = io_i_csr_addr == 12'hb10; // @[CsrRegisterFile.scala 324:169]
+ wire _T_188 = _T_186 | _T_187; // @[CsrRegisterFile.scala 324:152]
+ wire _T_189 = io_i_csr_addr == 12'hb11; // @[CsrRegisterFile.scala 325:22]
+ wire _T_190 = _T_188 | _T_189; // @[CsrRegisterFile.scala 324:201]
+ wire _T_191 = io_i_csr_addr == 12'hb12; // @[CsrRegisterFile.scala 325:71]
+ wire _T_192 = _T_190 | _T_191; // @[CsrRegisterFile.scala 325:54]
+ wire _T_193 = io_i_csr_addr == 12'hb13; // @[CsrRegisterFile.scala 325:120]
+ wire _T_194 = _T_192 | _T_193; // @[CsrRegisterFile.scala 325:103]
+ wire _T_195 = io_i_csr_addr == 12'hb14; // @[CsrRegisterFile.scala 325:169]
+ wire _T_196 = _T_194 | _T_195; // @[CsrRegisterFile.scala 325:152]
+ wire _T_197 = io_i_csr_addr == 12'hb15; // @[CsrRegisterFile.scala 326:22]
+ wire _T_198 = _T_196 | _T_197; // @[CsrRegisterFile.scala 325:201]
+ wire _T_199 = io_i_csr_addr == 12'hb16; // @[CsrRegisterFile.scala 326:71]
+ wire _T_200 = _T_198 | _T_199; // @[CsrRegisterFile.scala 326:54]
+ wire _T_201 = io_i_csr_addr == 12'hb17; // @[CsrRegisterFile.scala 326:120]
+ wire _T_202 = _T_200 | _T_201; // @[CsrRegisterFile.scala 326:103]
+ wire _T_203 = io_i_csr_addr == 12'hb18; // @[CsrRegisterFile.scala 326:169]
+ wire _T_204 = _T_202 | _T_203; // @[CsrRegisterFile.scala 326:152]
+ wire _T_205 = io_i_csr_addr == 12'hb19; // @[CsrRegisterFile.scala 327:22]
+ wire _T_206 = _T_204 | _T_205; // @[CsrRegisterFile.scala 326:201]
+ wire _T_207 = io_i_csr_addr == 12'hb1a; // @[CsrRegisterFile.scala 327:71]
+ wire _T_208 = _T_206 | _T_207; // @[CsrRegisterFile.scala 327:54]
+ wire _T_209 = io_i_csr_addr == 12'hb1b; // @[CsrRegisterFile.scala 327:120]
+ wire _T_210 = _T_208 | _T_209; // @[CsrRegisterFile.scala 327:103]
+ wire _T_211 = io_i_csr_addr == 12'hb1c; // @[CsrRegisterFile.scala 327:169]
+ wire _T_212 = _T_210 | _T_211; // @[CsrRegisterFile.scala 327:152]
+ wire _T_213 = io_i_csr_addr == 12'hb1d; // @[CsrRegisterFile.scala 328:22]
+ wire _T_214 = _T_212 | _T_213; // @[CsrRegisterFile.scala 327:201]
+ wire _T_215 = io_i_csr_addr == 12'hb1e; // @[CsrRegisterFile.scala 328:71]
+ wire _T_216 = _T_214 | _T_215; // @[CsrRegisterFile.scala 328:54]
+ wire _T_217 = io_i_csr_addr == 12'hb1f; // @[CsrRegisterFile.scala 328:120]
+ wire _T_218 = _T_216 | _T_217; // @[CsrRegisterFile.scala 328:103]
+ wire _T_221 = io_i_csr_addr == 12'hb80; // @[CsrRegisterFile.scala 334:30]
+ wire _T_222 = io_i_csr_addr == 12'hb82; // @[CsrRegisterFile.scala 334:80]
+ wire _T_223 = _T_221 | _T_222; // @[CsrRegisterFile.scala 334:63]
+ wire _T_224 = io_i_csr_addr == 12'hb83; // @[CsrRegisterFile.scala 334:130]
+ wire _T_225 = _T_223 | _T_224; // @[CsrRegisterFile.scala 334:113]
+ wire _T_226 = io_i_csr_addr == 12'hb84; // @[CsrRegisterFile.scala 334:180]
+ wire _T_227 = _T_225 | _T_226; // @[CsrRegisterFile.scala 334:163]
+ wire _T_228 = io_i_csr_addr == 12'hb85; // @[CsrRegisterFile.scala 335:22]
+ wire _T_229 = _T_227 | _T_228; // @[CsrRegisterFile.scala 334:213]
+ wire _T_230 = io_i_csr_addr == 12'hb86; // @[CsrRegisterFile.scala 335:72]
+ wire _T_231 = _T_229 | _T_230; // @[CsrRegisterFile.scala 335:55]
+ wire _T_232 = io_i_csr_addr == 12'hb87; // @[CsrRegisterFile.scala 335:122]
+ wire _T_233 = _T_231 | _T_232; // @[CsrRegisterFile.scala 335:105]
+ wire _T_234 = io_i_csr_addr == 12'hb88; // @[CsrRegisterFile.scala 335:172]
+ wire _T_235 = _T_233 | _T_234; // @[CsrRegisterFile.scala 335:155]
+ wire _T_236 = io_i_csr_addr == 12'hb89; // @[CsrRegisterFile.scala 336:22]
+ wire _T_237 = _T_235 | _T_236; // @[CsrRegisterFile.scala 335:205]
+ wire _T_238 = io_i_csr_addr == 12'hb8a; // @[CsrRegisterFile.scala 336:72]
+ wire _T_239 = _T_237 | _T_238; // @[CsrRegisterFile.scala 336:55]
+ wire _T_240 = io_i_csr_addr == 12'hb8b; // @[CsrRegisterFile.scala 336:122]
+ wire _T_241 = _T_239 | _T_240; // @[CsrRegisterFile.scala 336:105]
+ wire _T_242 = io_i_csr_addr == 12'hb8c; // @[CsrRegisterFile.scala 336:172]
+ wire _T_243 = _T_241 | _T_242; // @[CsrRegisterFile.scala 336:155]
+ wire _T_244 = io_i_csr_addr == 12'hb8d; // @[CsrRegisterFile.scala 337:22]
+ wire _T_245 = _T_243 | _T_244; // @[CsrRegisterFile.scala 336:205]
+ wire _T_246 = io_i_csr_addr == 12'hb8e; // @[CsrRegisterFile.scala 337:72]
+ wire _T_247 = _T_245 | _T_246; // @[CsrRegisterFile.scala 337:55]
+ wire _T_248 = io_i_csr_addr == 12'hb8f; // @[CsrRegisterFile.scala 337:122]
+ wire _T_249 = _T_247 | _T_248; // @[CsrRegisterFile.scala 337:105]
+ wire _T_250 = io_i_csr_addr == 12'hb90; // @[CsrRegisterFile.scala 337:172]
+ wire _T_251 = _T_249 | _T_250; // @[CsrRegisterFile.scala 337:155]
+ wire _T_252 = io_i_csr_addr == 12'hb91; // @[CsrRegisterFile.scala 338:22]
+ wire _T_253 = _T_251 | _T_252; // @[CsrRegisterFile.scala 337:205]
+ wire _T_254 = io_i_csr_addr == 12'hb92; // @[CsrRegisterFile.scala 338:72]
+ wire _T_255 = _T_253 | _T_254; // @[CsrRegisterFile.scala 338:55]
+ wire _T_256 = io_i_csr_addr == 12'hb93; // @[CsrRegisterFile.scala 338:122]
+ wire _T_257 = _T_255 | _T_256; // @[CsrRegisterFile.scala 338:105]
+ wire _T_258 = io_i_csr_addr == 12'hb94; // @[CsrRegisterFile.scala 338:172]
+ wire _T_259 = _T_257 | _T_258; // @[CsrRegisterFile.scala 338:155]
+ wire _T_260 = io_i_csr_addr == 12'hb95; // @[CsrRegisterFile.scala 339:22]
+ wire _T_261 = _T_259 | _T_260; // @[CsrRegisterFile.scala 338:205]
+ wire _T_262 = io_i_csr_addr == 12'hb96; // @[CsrRegisterFile.scala 339:72]
+ wire _T_263 = _T_261 | _T_262; // @[CsrRegisterFile.scala 339:55]
+ wire _T_264 = io_i_csr_addr == 12'hb97; // @[CsrRegisterFile.scala 339:122]
+ wire _T_265 = _T_263 | _T_264; // @[CsrRegisterFile.scala 339:105]
+ wire _T_266 = io_i_csr_addr == 12'hb98; // @[CsrRegisterFile.scala 339:172]
+ wire _T_267 = _T_265 | _T_266; // @[CsrRegisterFile.scala 339:155]
+ wire _T_268 = io_i_csr_addr == 12'hb99; // @[CsrRegisterFile.scala 340:22]
+ wire _T_269 = _T_267 | _T_268; // @[CsrRegisterFile.scala 339:205]
+ wire _T_270 = io_i_csr_addr == 12'hb9a; // @[CsrRegisterFile.scala 340:72]
+ wire _T_271 = _T_269 | _T_270; // @[CsrRegisterFile.scala 340:55]
+ wire _T_272 = io_i_csr_addr == 12'hb9b; // @[CsrRegisterFile.scala 340:122]
+ wire _T_273 = _T_271 | _T_272; // @[CsrRegisterFile.scala 340:105]
+ wire _T_274 = io_i_csr_addr == 12'hb9c; // @[CsrRegisterFile.scala 340:172]
+ wire _T_275 = _T_273 | _T_274; // @[CsrRegisterFile.scala 340:155]
+ wire _T_276 = io_i_csr_addr == 12'hb9d; // @[CsrRegisterFile.scala 341:22]
+ wire _T_277 = _T_275 | _T_276; // @[CsrRegisterFile.scala 340:205]
+ wire _T_278 = io_i_csr_addr == 12'hb9e; // @[CsrRegisterFile.scala 341:72]
+ wire _T_279 = _T_277 | _T_278; // @[CsrRegisterFile.scala 341:55]
+ wire _T_280 = io_i_csr_addr == 12'hb9f; // @[CsrRegisterFile.scala 341:122]
+ wire _T_281 = _T_279 | _T_280; // @[CsrRegisterFile.scala 341:105]
+ wire _T_284 = io_i_csr_addr == 12'h7a0; // @[CsrRegisterFile.scala 348:29]
+ wire _T_286 = io_i_csr_addr == 12'h7a1; // @[CsrRegisterFile.scala 353:29]
+ wire _T_288 = io_i_csr_addr == 12'h7a2; // @[CsrRegisterFile.scala 358:29]
+ wire _T_290 = io_i_csr_addr == 12'h7a3; // @[CsrRegisterFile.scala 363:29]
+ wire _T_292 = io_i_csr_addr == 12'h7a8; // @[CsrRegisterFile.scala 368:29]
+ wire _GEN_67 = _T_292 ? 1'h0 : 1'h1; // @[CsrRegisterFile.scala 369:5]
+ wire _GEN_69 = _T_290 | _GEN_67; // @[CsrRegisterFile.scala 364:5]
+ wire _GEN_71 = _T_288 | _GEN_69; // @[CsrRegisterFile.scala 359:5]
+ wire _GEN_73 = _T_286 | _GEN_71; // @[CsrRegisterFile.scala 354:5]
+ wire _GEN_75 = _T_284 | _GEN_73; // @[CsrRegisterFile.scala 349:5]
+ wire _GEN_77 = _T_281 ? 1'h0 : _GEN_75; // @[CsrRegisterFile.scala 342:5]
+ wire _GEN_79 = _T_218 ? 1'h0 : _GEN_77; // @[CsrRegisterFile.scala 329:5]
+ wire _GEN_81 = _T_157 ? 1'h0 : _GEN_79; // @[CsrRegisterFile.scala 318:5]
+ wire _GEN_83 = _T_100 ? 1'h0 : _GEN_81; // @[CsrRegisterFile.scala 306:5]
+ wire _GEN_85 = _T_98 | _GEN_83; // @[CsrRegisterFile.scala 300:5]
+ wire _GEN_87 = _T_97 ? 1'h0 : _GEN_85; // @[CsrRegisterFile.scala 296:5]
+ wire _GEN_89 = _T_95 | _GEN_87; // @[CsrRegisterFile.scala 291:5]
+ wire _GEN_91 = _T_80 | _GEN_89; // @[CsrRegisterFile.scala 286:5]
+ wire _GEN_93 = _T_73 ? 1'h0 : _GEN_91; // @[CsrRegisterFile.scala 278:5]
+ wire _GEN_95 = _T_72 ? 1'h0 : _GEN_93; // @[CsrRegisterFile.scala 273:5]
+ wire _GEN_97 = _T_67 ? 1'h0 : _GEN_95; // @[CsrRegisterFile.scala 266:5]
+ wire _GEN_99 = _T_66 ? 1'h0 : _GEN_97; // @[CsrRegisterFile.scala 260:5]
+ wire _GEN_101 = _T_65 ? 1'h0 : _GEN_99; // @[CsrRegisterFile.scala 251:5]
+ wire _GEN_103 = _T_64 ? 1'h0 : _GEN_101; // @[CsrRegisterFile.scala 245:5]
+ wire _GEN_105 = _T_57 ? 1'h0 : _GEN_103; // @[CsrRegisterFile.scala 237:5]
+ wire _GEN_107 = _T_56 ? 1'h0 : _GEN_105; // @[CsrRegisterFile.scala 232:5]
+ wire _GEN_109 = _T_45 ? 1'h0 : _GEN_107; // @[CsrRegisterFile.scala 224:5]
+ wire illegal_csr = _T_44 ? 1'h0 : _GEN_109; // @[CsrRegisterFile.scala 219:3]
+ wire _T_41 = illegal_csr | illegal_csr_priv; // @[CsrRegisterFile.scala 205:61]
+ wire _T_42 = _T_41 | illegal_csr_write; // @[CsrRegisterFile.scala 205:80]
+ wire [5:0] _T_537 = PRIM_MSTATUS_io_o_rd_data;
+ wire mstatus_q_mie = _T_537[0]; // @[CsrRegisterFile.scala 650:19]
+ wire mstatus_q_mpie = _T_537[1]; // @[CsrRegisterFile.scala 650:19]
+ wire [10:0] _T_49 = {3'h0,_T_537[1],3'h0,_T_537[0],3'h0}; // @[Cat.scala 29:58]
+ wire mstatus_q_mprv = _T_537[4]; // @[CsrRegisterFile.scala 650:19]
+ wire [1:0] mstatus_q_mpp = _T_537[3:2]; // @[CsrRegisterFile.scala 650:19]
+ wire mstatus_q_tw = _T_537[5]; // @[CsrRegisterFile.scala 650:19]
+ wire [31:0] _T_55 = {10'h0,_T_537[5],3'h0,_T_537[4],4'h0,_T_537[3:2],_T_49}; // @[Cat.scala 29:58]
+ wire [2:0] _T_549 = PRIM_MIE_io_o_rd_data;
+ wire mie_q_irq_software = _T_549[0]; // @[CsrRegisterFile.scala 667:10]
+ wire mie_q_irq_timer = _T_549[1]; // @[CsrRegisterFile.scala 667:10]
+ wire mie_q_irq_external = _T_549[2]; // @[CsrRegisterFile.scala 667:10]
+ wire [31:0] _T_63 = {20'h0,_T_549[2],3'h0,_T_549[1],3'h0,_T_549[0],3'h0}; // @[Cat.scala 29:58]
+ wire [5:0] mcause_q = PRIM_MCAUSE_io_o_rd_data; // @[CsrRegisterFile.scala 113:46 CsrRegisterFile.scala 681:28]
+ wire [31:0] _T_71 = {mcause_q[5],26'h0,mcause_q[4:0]}; // @[Cat.scala 29:58]
+ wire mip_irq_software = 1'h0; // @[CsrRegisterFile.scala 208:21]
+ wire mip_irq_timer = 1'h0; // @[CsrRegisterFile.scala 210:21]
+ wire mip_irq_external = io_i_irq_external; // @[CsrRegisterFile.scala 209:21]
+ wire [31:0] _T_79 = {20'h0,mip_irq_external,3'h0,mip_irq_software,3'h0,mip_irq_software,3'h0}; // @[Cat.scala 29:58]
+ wire [27:0] _T_567 = PRIM_DCSR_io_o_rd_data;
+ wire dcsr_q_nmip = _T_567[2]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_step = _T_567[1]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_prv = _T_567[0]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_zero0 = _T_567[4]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_mprven = _T_567[3]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_stoptime = _T_567[6]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_cause = _T_567[5]; // @[CsrRegisterFile.scala 704:26]
+ wire [6:0] _T_86 = {_T_567[6],_T_567[5],_T_567[4],_T_567[3],_T_567[2],_T_567[1],_T_567[0]}; // @[CsrRegisterFile.scala 287:31]
+ wire dcsr_q_ebreaks = _T_567[9]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_stepie = _T_567[8]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_stopcount = _T_567[7]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_ebreakm = _T_567[11]; // @[CsrRegisterFile.scala 704:26]
+ wire dcsr_q_zero1 = _T_567[10]; // @[CsrRegisterFile.scala 704:26]
+ wire [3:0] dcsr_q_xdebugver = _T_567[27:24]; // @[CsrRegisterFile.scala 704:26]
+ wire [11:0] dcsr_q_zero2 = _T_567[23:12]; // @[CsrRegisterFile.scala 704:26]
+ wire [27:0] _T_93 = {_T_567[27:24],_T_567[23:12],_T_567[11],_T_567[10],_T_567[9],_T_567[8],_T_567[7],_T_86}; // @[CsrRegisterFile.scala 287:31]
+ wire [4:0] mhpmcounter_idx = io_i_csr_addr[4:0]; // @[CsrRegisterFile.scala 143:46 CsrRegisterFile.scala 175:19]
+ wire [31:0] _GEN_1 = 5'h1 == mhpmcounter_idx ? mhpmevent_1 : mhpmevent_0; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_2 = 5'h2 == mhpmcounter_idx ? mhpmevent_2 : _GEN_1; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_3 = 5'h3 == mhpmcounter_idx ? mhpmevent_3 : _GEN_2; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_4 = 5'h4 == mhpmcounter_idx ? mhpmevent_4 : _GEN_3; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_5 = 5'h5 == mhpmcounter_idx ? mhpmevent_5 : _GEN_4; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_6 = 5'h6 == mhpmcounter_idx ? mhpmevent_6 : _GEN_5; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_7 = 5'h7 == mhpmcounter_idx ? mhpmevent_7 : _GEN_6; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_8 = 5'h8 == mhpmcounter_idx ? mhpmevent_8 : _GEN_7; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_9 = 5'h9 == mhpmcounter_idx ? mhpmevent_9 : _GEN_8; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_10 = 5'ha == mhpmcounter_idx ? mhpmevent_10 : _GEN_9; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_11 = 5'hb == mhpmcounter_idx ? mhpmevent_11 : _GEN_10; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_12 = 5'hc == mhpmcounter_idx ? mhpmevent_12 : _GEN_11; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_13 = 5'hd == mhpmcounter_idx ? mhpmevent_13 : _GEN_12; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_14 = 5'he == mhpmcounter_idx ? mhpmevent_14 : _GEN_13; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_15 = 5'hf == mhpmcounter_idx ? mhpmevent_15 : _GEN_14; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_16 = 5'h10 == mhpmcounter_idx ? mhpmevent_16 : _GEN_15; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_17 = 5'h11 == mhpmcounter_idx ? mhpmevent_17 : _GEN_16; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_18 = 5'h12 == mhpmcounter_idx ? mhpmevent_18 : _GEN_17; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_19 = 5'h13 == mhpmcounter_idx ? mhpmevent_19 : _GEN_18; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_20 = 5'h14 == mhpmcounter_idx ? mhpmevent_20 : _GEN_19; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_21 = 5'h15 == mhpmcounter_idx ? mhpmevent_21 : _GEN_20; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_22 = 5'h16 == mhpmcounter_idx ? mhpmevent_22 : _GEN_21; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_23 = 5'h17 == mhpmcounter_idx ? mhpmevent_23 : _GEN_22; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_24 = 5'h18 == mhpmcounter_idx ? mhpmevent_24 : _GEN_23; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_25 = 5'h19 == mhpmcounter_idx ? mhpmevent_25 : _GEN_24; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_26 = 5'h1a == mhpmcounter_idx ? mhpmevent_26 : _GEN_25; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_27 = 5'h1b == mhpmcounter_idx ? mhpmevent_27 : _GEN_26; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_28 = 5'h1c == mhpmcounter_idx ? mhpmevent_28 : _GEN_27; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_29 = 5'h1d == mhpmcounter_idx ? mhpmevent_29 : _GEN_28; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_30 = 5'h1e == mhpmcounter_idx ? mhpmevent_30 : _GEN_29; // @[CsrRegisterFile.scala 319:21]
+ wire [31:0] _GEN_31 = 5'h1f == mhpmcounter_idx ? mhpmevent_31 : _GEN_30; // @[CsrRegisterFile.scala 319:21]
+ wire [63:0] _GEN_33 = 5'h1 == mhpmcounter_idx ? mhpmcounter_1 : mhpmcounter_0; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_34 = 5'h2 == mhpmcounter_idx ? mhpmcounter_2 : _GEN_33; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_35 = 5'h3 == mhpmcounter_idx ? mhpmcounter_3 : _GEN_34; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_36 = 5'h4 == mhpmcounter_idx ? mhpmcounter_4 : _GEN_35; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_37 = 5'h5 == mhpmcounter_idx ? mhpmcounter_5 : _GEN_36; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_38 = 5'h6 == mhpmcounter_idx ? mhpmcounter_6 : _GEN_37; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_39 = 5'h7 == mhpmcounter_idx ? mhpmcounter_7 : _GEN_38; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_40 = 5'h8 == mhpmcounter_idx ? mhpmcounter_8 : _GEN_39; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_41 = 5'h9 == mhpmcounter_idx ? mhpmcounter_9 : _GEN_40; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_42 = 5'ha == mhpmcounter_idx ? mhpmcounter_10 : _GEN_41; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_43 = 5'hb == mhpmcounter_idx ? mhpmcounter_11 : _GEN_42; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_44 = 5'hc == mhpmcounter_idx ? mhpmcounter_12 : _GEN_43; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_45 = 5'hd == mhpmcounter_idx ? mhpmcounter_13 : _GEN_44; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_46 = 5'he == mhpmcounter_idx ? mhpmcounter_14 : _GEN_45; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_47 = 5'hf == mhpmcounter_idx ? mhpmcounter_15 : _GEN_46; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_48 = 5'h10 == mhpmcounter_idx ? mhpmcounter_16 : _GEN_47; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_49 = 5'h11 == mhpmcounter_idx ? mhpmcounter_17 : _GEN_48; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_50 = 5'h12 == mhpmcounter_idx ? mhpmcounter_18 : _GEN_49; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_51 = 5'h13 == mhpmcounter_idx ? mhpmcounter_19 : _GEN_50; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_52 = 5'h14 == mhpmcounter_idx ? mhpmcounter_20 : _GEN_51; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_53 = 5'h15 == mhpmcounter_idx ? mhpmcounter_21 : _GEN_52; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_54 = 5'h16 == mhpmcounter_idx ? mhpmcounter_22 : _GEN_53; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_55 = 5'h17 == mhpmcounter_idx ? mhpmcounter_23 : _GEN_54; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_56 = 5'h18 == mhpmcounter_idx ? mhpmcounter_24 : _GEN_55; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_57 = 5'h19 == mhpmcounter_idx ? mhpmcounter_25 : _GEN_56; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_58 = 5'h1a == mhpmcounter_idx ? mhpmcounter_26 : _GEN_57; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_59 = 5'h1b == mhpmcounter_idx ? mhpmcounter_27 : _GEN_58; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_60 = 5'h1c == mhpmcounter_idx ? mhpmcounter_28 : _GEN_59; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_61 = 5'h1d == mhpmcounter_idx ? mhpmcounter_29 : _GEN_60; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_62 = 5'h1e == mhpmcounter_idx ? mhpmcounter_30 : _GEN_61; // @[CsrRegisterFile.scala 331:11]
+ wire [63:0] _GEN_63 = 5'h1f == mhpmcounter_idx ? mhpmcounter_31 : _GEN_62; // @[CsrRegisterFile.scala 331:11]
+ wire [31:0] tmatch_value_rdata = 32'h0; // @[CsrRegisterFile.scala 149:36 CsrRegisterFile.scala 894:26]
+ wire [31:0] _GEN_76 = _T_281 ? _GEN_63[63:32] : 32'h0; // @[CsrRegisterFile.scala 342:5]
+ wire [31:0] _GEN_78 = _T_218 ? _GEN_63[31:0] : _GEN_76; // @[CsrRegisterFile.scala 329:5]
+ wire [31:0] _GEN_80 = _T_157 ? _GEN_31 : _GEN_78; // @[CsrRegisterFile.scala 318:5]
+ wire [31:0] _T_725 = {19'h1,mcountinhibit_q}; // @[Cat.scala 29:58]
+ wire [31:0] mcountinhibit = _T_725; // @[CsrRegisterFile.scala 131:46 CsrRegisterFile.scala 812:19]
+ wire [31:0] _GEN_82 = _T_100 ? mcountinhibit : _GEN_80; // @[CsrRegisterFile.scala 306:5]
+ wire [31:0] dscratch1_q = PRIM_DSCRATCH1_io_o_rd_data; // @[CsrRegisterFile.scala 125:46 CsrRegisterFile.scala 724:31]
+ wire [31:0] _GEN_84 = _T_98 ? dscratch1_q : _GEN_82; // @[CsrRegisterFile.scala 300:5]
+ wire [31:0] dscratch0_q = PRIM_DSCRATCH0_io_o_rd_data; // @[CsrRegisterFile.scala 124:46 CsrRegisterFile.scala 717:31]
+ wire [31:0] _GEN_86 = _T_97 ? dscratch0_q : _GEN_84; // @[CsrRegisterFile.scala 296:5]
+ wire [31:0] depc_q = PRIM_DEPC_io_o_rd_data; // @[CsrRegisterFile.scala 122:46 CsrRegisterFile.scala 711:26]
+ wire [31:0] _GEN_88 = _T_95 ? depc_q : _GEN_86; // @[CsrRegisterFile.scala 291:5]
+ wire [31:0] _GEN_90 = _T_80 ? {{4'd0}, _T_93} : _GEN_88; // @[CsrRegisterFile.scala 286:5]
+ wire [31:0] _GEN_92 = _T_73 ? _T_79 : _GEN_90; // @[CsrRegisterFile.scala 278:5]
+ wire [31:0] mtval_q = PRIM_MTVAL_io_o_rd_data; // @[CsrRegisterFile.scala 115:46 CsrRegisterFile.scala 687:27]
+ wire [31:0] _GEN_94 = _T_72 ? mtval_q : _GEN_92; // @[CsrRegisterFile.scala 273:5]
+ wire [31:0] _GEN_96 = _T_67 ? _T_71 : _GEN_94; // @[CsrRegisterFile.scala 266:5]
+ wire [31:0] mepc_q = PRIM_MEPC_io_o_rd_data; // @[CsrRegisterFile.scala 110:46 CsrRegisterFile.scala 656:26]
+ wire [31:0] _GEN_98 = _T_66 ? mepc_q : _GEN_96; // @[CsrRegisterFile.scala 260:5]
+ wire [31:0] mtvec_q = PRIM_MTVEC_io_o_rd_data; // @[CsrRegisterFile.scala 117:46 CsrRegisterFile.scala 694:27]
+ wire [31:0] _GEN_100 = _T_65 ? mtvec_q : _GEN_98; // @[CsrRegisterFile.scala 251:5]
+ wire [31:0] mscratch_q = PRIM_MSCRATCH_io_o_rd_data; // @[CsrRegisterFile.scala 108:46 CsrRegisterFile.scala 674:30]
+ wire [31:0] _GEN_102 = _T_64 ? mscratch_q : _GEN_100; // @[CsrRegisterFile.scala 245:5]
+ wire [31:0] _GEN_104 = _T_57 ? _T_63 : _GEN_102; // @[CsrRegisterFile.scala 237:5]
+ wire [31:0] _GEN_106 = _T_56 ? 32'h40001100 : _GEN_104; // @[CsrRegisterFile.scala 232:5]
+ wire [31:0] _GEN_108 = _T_45 ? _T_55 : _GEN_106; // @[CsrRegisterFile.scala 224:5]
+ wire _T_300 = ~io_o_illegal_csr_insn; // @[CsrRegisterFile.scala 393:28]
+ wire _T_301 = csr_wreq & _T_300; // @[CsrRegisterFile.scala 393:26]
+ wire csr_we_int = _T_301; // @[CsrRegisterFile.scala 154:46 CsrRegisterFile.scala 393:14]
+ wire _T_303 = csr_we_int & _T_45; // @[CsrRegisterFile.scala 397:19]
+ wire _T_309 = _T_537[3:2] != 2'h3; // @[CsrRegisterFile.scala 404:32]
+ wire _T_311 = _T_537[3:2] != 2'h0; // @[CsrRegisterFile.scala 404:91]
+ wire _T_312 = _T_309 & _T_311; // @[CsrRegisterFile.scala 404:66]
+ wire [31:0] _T_509 = io_i_csr_wdata | io_o_csr_rdata; // @[CsrRegisterFile.scala 603:39]
+ wire [31:0] _T_511 = ~io_i_csr_wdata; // @[CsrRegisterFile.scala 607:24]
+ wire [31:0] _T_512 = _T_511 & io_o_csr_rdata; // @[CsrRegisterFile.scala 607:40]
+ wire [31:0] _GEN_371 = _T_517 ? _T_512 : io_i_csr_wdata; // @[CsrRegisterFile.scala 606:5]
+ wire [31:0] _GEN_372 = _T_515 ? _T_509 : _GEN_371; // @[CsrRegisterFile.scala 602:5]
+ wire [31:0] csr_wdata_int = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 598:3]
+ wire [1:0] _GEN_112 = _T_312 ? 2'h3 : csr_wdata_int[12:11]; // @[CsrRegisterFile.scala 405:5]
+ wire [1:0] _GEN_287 = _T_303 ? _GEN_112 : _T_537[3:2]; // @[CsrRegisterFile.scala 398:3]
+ wire [1:0] _GEN_356 = io_i_csr_save_cause ? priv_lvl_q : _GEN_287; // @[CsrRegisterFile.scala 509:3]
+ wire [1:0] _GEN_368 = io_i_csr_restore_mret ? 2'h3 : _GEN_356; // @[CsrRegisterFile.scala 561:5]
+ wire [1:0] mstatus_d_mpp = _GEN_368; // @[CsrRegisterFile.scala 180:18 CsrRegisterFile.scala 402:20 CsrRegisterFile.scala 406:21 CsrRegisterFile.scala 545:24 CsrRegisterFile.scala 566:22]
+ wire _T_296 = mstatus_d_mpp != 2'h3; // @[CsrRegisterFile.scala 392:40]
+ wire _T_298 = mstatus_d_mpp != 2'h0; // @[CsrRegisterFile.scala 392:99]
+ wire _T_299 = _T_296 & _T_298; // @[CsrRegisterFile.scala 392:74]
+ wire _T_315 = csr_we_int & _T_57; // @[CsrRegisterFile.scala 410:26]
+ wire _T_317 = csr_we_int & _T_64; // @[CsrRegisterFile.scala 414:26]
+ wire _T_319 = csr_we_int & _T_66; // @[CsrRegisterFile.scala 418:26]
+ wire _T_321 = csr_we_int & _T_67; // @[CsrRegisterFile.scala 422:26]
+ wire _T_323 = csr_we_int & _T_72; // @[CsrRegisterFile.scala 426:26]
+ wire _T_325 = csr_we_int & _T_65; // @[CsrRegisterFile.scala 430:26]
+ wire _T_327 = csr_we_int & _T_80; // @[CsrRegisterFile.scala 434:26]
+ wire [1:0] _GEN_329 = {{1'd0}, _T_567[0]}; // @[CsrRegisterFile.scala 526:5]
+ wire [1:0] _GEN_347 = io_i_csr_save_cause ? _GEN_329 : {{1'd0}, _T_567[0]}; // @[CsrRegisterFile.scala 509:3]
+ wire dcsr_d_prv = _GEN_347[0]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 442:20 CsrRegisterFile.scala 500:14 CsrRegisterFile.scala 529:21]
+ wire _T_352 = csr_we_int & _T_97; // @[CsrRegisterFile.scala 453:26]
+ wire _T_354 = csr_we_int & _T_98; // @[CsrRegisterFile.scala 457:26]
+ wire _T_356 = csr_we_int & _T_100; // @[CsrRegisterFile.scala 461:26]
+ wire _T_418 = csr_we_int & _T_218; // @[CsrRegisterFile.scala 465:26]
+ wire [31:0] _T_419 = 32'h1 << mhpmcounter_idx; // @[CsrRegisterFile.scala 474:32]
+ wire _T_481 = csr_we_int & _T_281; // @[CsrRegisterFile.scala 476:26]
+ wire [31:0] _GEN_114 = _T_481 ? _T_419 : 32'h0; // @[CsrRegisterFile.scala 484:5]
+ wire [31:0] _GEN_115 = _T_418 ? _T_419 : 32'h0; // @[CsrRegisterFile.scala 473:5]
+ wire [31:0] _GEN_116 = _T_418 ? 32'h0 : _GEN_114; // @[CsrRegisterFile.scala 473:5]
+ wire [31:0] _GEN_118 = _T_356 ? 32'h0 : _GEN_115; // @[CsrRegisterFile.scala 462:5]
+ wire [31:0] _GEN_119 = _T_356 ? 32'h0 : _GEN_116; // @[CsrRegisterFile.scala 462:5]
+ wire _GEN_121 = _T_354 ? 1'h0 : _T_356; // @[CsrRegisterFile.scala 458:5]
+ wire [31:0] _GEN_122 = _T_354 ? 32'h0 : _GEN_118; // @[CsrRegisterFile.scala 458:5]
+ wire [31:0] _GEN_123 = _T_354 ? 32'h0 : _GEN_119; // @[CsrRegisterFile.scala 458:5]
+ wire _GEN_125 = _T_352 ? 1'h0 : _T_354; // @[CsrRegisterFile.scala 454:5]
+ wire _GEN_126 = _T_352 ? 1'h0 : _GEN_121; // @[CsrRegisterFile.scala 454:5]
+ wire [31:0] _GEN_127 = _T_352 ? 32'h0 : _GEN_122; // @[CsrRegisterFile.scala 454:5]
+ wire [31:0] _GEN_128 = _T_352 ? 32'h0 : _GEN_123; // @[CsrRegisterFile.scala 454:5]
+ wire _GEN_144 = _T_327 ? 1'h0 : _T_352; // @[CsrRegisterFile.scala 435:5]
+ wire _GEN_145 = _T_327 ? 1'h0 : _GEN_125; // @[CsrRegisterFile.scala 435:5]
+ wire _GEN_146 = _T_327 ? 1'h0 : _GEN_126; // @[CsrRegisterFile.scala 435:5]
+ wire [31:0] _GEN_147 = _T_327 ? 32'h0 : _GEN_127; // @[CsrRegisterFile.scala 435:5]
+ wire [31:0] _GEN_148 = _T_327 ? 32'h0 : _GEN_128; // @[CsrRegisterFile.scala 435:5]
+ wire _GEN_164 = _T_325 ? 1'h0 : _GEN_144; // @[CsrRegisterFile.scala 431:5]
+ wire _GEN_165 = _T_325 ? 1'h0 : _GEN_145; // @[CsrRegisterFile.scala 431:5]
+ wire _GEN_166 = _T_325 ? 1'h0 : _GEN_146; // @[CsrRegisterFile.scala 431:5]
+ wire [31:0] _GEN_167 = _T_325 ? 32'h0 : _GEN_147; // @[CsrRegisterFile.scala 431:5]
+ wire [31:0] _GEN_168 = _T_325 ? 32'h0 : _GEN_148; // @[CsrRegisterFile.scala 431:5]
+ wire _GEN_185 = _T_323 ? 1'h0 : _GEN_164; // @[CsrRegisterFile.scala 427:5]
+ wire _GEN_186 = _T_323 ? 1'h0 : _GEN_165; // @[CsrRegisterFile.scala 427:5]
+ wire _GEN_187 = _T_323 ? 1'h0 : _GEN_166; // @[CsrRegisterFile.scala 427:5]
+ wire [31:0] _GEN_188 = _T_323 ? 32'h0 : _GEN_167; // @[CsrRegisterFile.scala 427:5]
+ wire [31:0] _GEN_189 = _T_323 ? 32'h0 : _GEN_168; // @[CsrRegisterFile.scala 427:5]
+ wire _GEN_191 = _T_321 ? 1'h0 : _T_323; // @[CsrRegisterFile.scala 423:5]
+ wire _GEN_207 = _T_321 ? 1'h0 : _GEN_185; // @[CsrRegisterFile.scala 423:5]
+ wire _GEN_208 = _T_321 ? 1'h0 : _GEN_186; // @[CsrRegisterFile.scala 423:5]
+ wire _GEN_209 = _T_321 ? 1'h0 : _GEN_187; // @[CsrRegisterFile.scala 423:5]
+ wire [31:0] _GEN_210 = _T_321 ? 32'h0 : _GEN_188; // @[CsrRegisterFile.scala 423:5]
+ wire [31:0] _GEN_211 = _T_321 ? 32'h0 : _GEN_189; // @[CsrRegisterFile.scala 423:5]
+ wire _GEN_213 = _T_319 ? 1'h0 : _T_321; // @[CsrRegisterFile.scala 419:5]
+ wire _GEN_214 = _T_319 ? 1'h0 : _GEN_191; // @[CsrRegisterFile.scala 419:5]
+ wire _GEN_230 = _T_319 ? 1'h0 : _GEN_207; // @[CsrRegisterFile.scala 419:5]
+ wire _GEN_231 = _T_319 ? 1'h0 : _GEN_208; // @[CsrRegisterFile.scala 419:5]
+ wire _GEN_232 = _T_319 ? 1'h0 : _GEN_209; // @[CsrRegisterFile.scala 419:5]
+ wire [31:0] _GEN_233 = _T_319 ? 32'h0 : _GEN_210; // @[CsrRegisterFile.scala 419:5]
+ wire [31:0] _GEN_234 = _T_319 ? 32'h0 : _GEN_211; // @[CsrRegisterFile.scala 419:5]
+ wire _GEN_236 = _T_317 ? 1'h0 : _T_319; // @[CsrRegisterFile.scala 415:5]
+ wire _GEN_237 = _T_317 ? 1'h0 : _GEN_213; // @[CsrRegisterFile.scala 415:5]
+ wire _GEN_238 = _T_317 ? 1'h0 : _GEN_214; // @[CsrRegisterFile.scala 415:5]
+ wire _GEN_254 = _T_317 ? 1'h0 : _GEN_230; // @[CsrRegisterFile.scala 415:5]
+ wire _GEN_255 = _T_317 ? 1'h0 : _GEN_231; // @[CsrRegisterFile.scala 415:5]
+ wire _GEN_256 = _T_317 ? 1'h0 : _GEN_232; // @[CsrRegisterFile.scala 415:5]
+ wire [31:0] _GEN_257 = _T_317 ? 32'h0 : _GEN_233; // @[CsrRegisterFile.scala 415:5]
+ wire [31:0] _GEN_258 = _T_317 ? 32'h0 : _GEN_234; // @[CsrRegisterFile.scala 415:5]
+ wire _GEN_260 = _T_315 ? 1'h0 : _T_317; // @[CsrRegisterFile.scala 411:5]
+ wire _GEN_261 = _T_315 ? 1'h0 : _GEN_236; // @[CsrRegisterFile.scala 411:5]
+ wire _GEN_262 = _T_315 ? 1'h0 : _GEN_237; // @[CsrRegisterFile.scala 411:5]
+ wire _GEN_263 = _T_315 ? 1'h0 : _GEN_238; // @[CsrRegisterFile.scala 411:5]
+ wire _GEN_279 = _T_315 ? 1'h0 : _GEN_254; // @[CsrRegisterFile.scala 411:5]
+ wire _GEN_280 = _T_315 ? 1'h0 : _GEN_255; // @[CsrRegisterFile.scala 411:5]
+ wire _GEN_281 = _T_315 ? 1'h0 : _GEN_256; // @[CsrRegisterFile.scala 411:5]
+ wire [31:0] _GEN_282 = _T_315 ? 32'h0 : _GEN_257; // @[CsrRegisterFile.scala 411:5]
+ wire [31:0] _GEN_283 = _T_315 ? 32'h0 : _GEN_258; // @[CsrRegisterFile.scala 411:5]
+ wire _GEN_285 = _T_303 ? csr_wdata_int[3] : _T_537[0]; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_286 = _T_303 ? csr_wdata_int[7] : _T_537[1]; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_288 = _T_303 ? csr_wdata_int[21] : _T_537[5]; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_289 = _T_303 ? 1'h0 : _T_315; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_290 = _T_303 ? 1'h0 : _GEN_260; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_291 = _T_303 ? 1'h0 : _GEN_261; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_292 = _T_303 ? 1'h0 : _GEN_262; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_293 = _T_303 ? 1'h0 : _GEN_263; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_309 = _T_303 ? 1'h0 : _GEN_279; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_310 = _T_303 ? 1'h0 : _GEN_280; // @[CsrRegisterFile.scala 398:3]
+ wire _GEN_311 = _T_303 ? 1'h0 : _GEN_281; // @[CsrRegisterFile.scala 398:3]
+ wire [31:0] _GEN_312 = _T_303 ? 32'h0 : _GEN_282; // @[CsrRegisterFile.scala 398:3]
+ wire [31:0] _GEN_313 = _T_303 ? 32'h0 : _GEN_283; // @[CsrRegisterFile.scala 398:3]
+ wire [31:0] _T_484 = {csr_wdata_int[31:1],1'h0}; // @[Cat.scala 29:58]
+ wire [5:0] _T_487 = {csr_wdata_int[31],csr_wdata_int[4:0]}; // @[Cat.scala 29:58]
+ wire [30:0] _T_493 = {csr_wdata_int[31:8],6'h0,1'h1}; // @[Cat.scala 29:58]
+ wire [30:0] _T_494 = io_i_csr_mtvec_init ? 31'h1 : _T_493; // @[CsrRegisterFile.scala 496:20]
+ wire [31:0] _GEN_316 = io_i_csr_save_if ? io_i_pc_if : 32'h0; // @[CsrRegisterFile.scala 511:5]
+ wire [31:0] exception_pc = io_i_csr_save_cause ? _GEN_316 : 32'h0; // @[CsrRegisterFile.scala 509:3]
+ wire [4:0] _GEN_330 = {{4'd0}, _T_567[5]}; // @[CsrRegisterFile.scala 526:5]
+ wire [31:0] _GEN_332 = _T_484; // @[CsrRegisterFile.scala 526:5]
+ wire [4:0] _GEN_348 = io_i_csr_save_cause ? _GEN_330 : {{4'd0}, _T_567[5]}; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_351 = io_i_csr_save_cause | _GEN_293; // @[CsrRegisterFile.scala 509:3]
+ wire [31:0] _GEN_352 = io_i_csr_save_cause ? 32'h0 : csr_wdata_int; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_353 = io_i_csr_save_cause | _T_303; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_354 = io_i_csr_save_cause ? 1'h0 : _GEN_285; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_355 = io_i_csr_save_cause ? _T_537[0] : _GEN_286; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_357 = io_i_csr_save_cause ? 1'h0 : _T_537[4]; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_358 = io_i_csr_save_cause ? 1'h0 : _GEN_288; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_359 = io_i_csr_save_cause | _GEN_291; // @[CsrRegisterFile.scala 509:3]
+ wire [31:0] _GEN_360 = io_i_csr_save_cause ? exception_pc : _T_484; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_361 = io_i_csr_save_cause | _GEN_292; // @[CsrRegisterFile.scala 509:3]
+ wire [5:0] _GEN_362 = io_i_csr_save_cause ? io_i_csr_mcause : _T_487; // @[CsrRegisterFile.scala 509:3]
+ wire _GEN_365 = io_i_csr_restore_mret | _GEN_353; // @[CsrRegisterFile.scala 561:5]
+ wire _GEN_366 = io_i_csr_restore_mret ? _T_537[1] : _GEN_354; // @[CsrRegisterFile.scala 561:5]
+ wire _GEN_367 = io_i_csr_restore_mret | _GEN_355; // @[CsrRegisterFile.scala 561:5]
+ wire _T_520 = mip_irq_external & _T_549[2]; // @[CsrRegisterFile.scala 636:42]
+ wire _T_523 = mip_irq_software & _T_549[1]; // @[CsrRegisterFile.scala 636:117]
+ wire _T_526 = mip_irq_software & _T_549[0]; // @[CsrRegisterFile.scala 636:192]
+ wire [1:0] _T_529 = {_T_520,_T_523}; // @[Cat.scala 29:58]
+ wire mstatus_d_mpie = _GEN_367; // @[CsrRegisterFile.scala 179:18 CsrRegisterFile.scala 401:20 CsrRegisterFile.scala 544:24 CsrRegisterFile.scala 565:22]
+ wire mstatus_d_mie = _GEN_366; // @[CsrRegisterFile.scala 178:18 CsrRegisterFile.scala 400:20 CsrRegisterFile.scala 542:24 CsrRegisterFile.scala 564:22]
+ wire [1:0] _T_532 = {mstatus_d_mpie,mstatus_d_mie}; // @[CsrRegisterFile.scala 648:41]
+ wire mstatus_d_tw = _GEN_358; // @[CsrRegisterFile.scala 182:18 CsrRegisterFile.scala 403:20 CsrRegisterFile.scala 547:24]
+ wire mstatus_d_mprv = _GEN_357; // @[CsrRegisterFile.scala 181:18 CsrRegisterFile.scala 546:24]
+ wire [3:0] _T_534 = {mstatus_d_tw,mstatus_d_mprv,mstatus_d_mpp}; // @[CsrRegisterFile.scala 648:41]
+ wire mie_d_irq_external = csr_wdata_int[11]; // @[CsrRegisterFile.scala 662:23]
+ wire mie_d_irq_timer = csr_wdata_int[7]; // @[CsrRegisterFile.scala 661:23]
+ wire [1:0] _T_546 = {mie_d_irq_external,mie_d_irq_timer}; // @[CsrRegisterFile.scala 665:33]
+ wire mie_d_irq_software = csr_wdata_int[3]; // @[CsrRegisterFile.scala 660:23]
+ wire dcsr_d_nmip = _T_567[2]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 448:24 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_step = _T_567[1]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_zero0 = _T_567[4]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_mprven = _T_567[3]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 449:24 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_stoptime = _T_567[6]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 451:24 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_cause = _GEN_348[0]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 445:20 CsrRegisterFile.scala 500:14 CsrRegisterFile.scala 530:21]
+ wire [6:0] _T_558 = {dcsr_d_stoptime,dcsr_d_cause,dcsr_d_zero0,dcsr_d_mprven,dcsr_d_nmip,dcsr_d_step,dcsr_d_prv}; // @[CsrRegisterFile.scala 702:35]
+ wire dcsr_d_ebreaks = _T_567[9]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_stepie = _T_567[8]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_stopcount = _T_567[7]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 450:24 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_ebreakm = _T_567[11]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 500:14]
+ wire dcsr_d_zero1 = _T_567[10]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 500:14]
+ wire [3:0] dcsr_d_xdebugver = _T_567[27:24]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 438:24 CsrRegisterFile.scala 500:14]
+ wire [11:0] dcsr_d_zero2 = _T_567[23:12]; // @[CsrRegisterFile.scala 436:14 CsrRegisterFile.scala 500:14]
+ wire [20:0] _T_564 = {dcsr_d_xdebugver,dcsr_d_zero2,dcsr_d_ebreakm,dcsr_d_zero1,dcsr_d_ebreaks,dcsr_d_stepie,dcsr_d_stopcount}; // @[CsrRegisterFile.scala 702:35]
+ wire [12:0] _T_585 = {csr_wdata_int[12:2],1'h1,csr_wdata_int[0]}; // @[Cat.scala 29:58]
+ wire mcountinhibit_we = _GEN_311; // @[CsrRegisterFile.scala 139:46 CsrRegisterFile.scala 192:20 CsrRegisterFile.scala 463:24]
+ wire [12:0] _GEN_374 = mcountinhibit_we ? _T_585 : mcountinhibit_q; // @[CsrRegisterFile.scala 734:3]
+ wire [31:0] mhpmcounter_incr = 32'h0; // @[CsrRegisterFile.scala 141:46 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 745:22 CsrRegisterFile.scala 749:21 CsrRegisterFile.scala 750:21 CsrRegisterFile.scala 751:21 CsrRegisterFile.scala 752:21 CsrRegisterFile.scala 753:21 CsrRegisterFile.scala 754:21 CsrRegisterFile.scala 755:21 CsrRegisterFile.scala 756:21 CsrRegisterFile.scala 757:21 CsrRegisterFile.scala 758:21]
+ wire _T_652 = ~mcountinhibit[0]; // @[CsrRegisterFile.scala 778:58]
+ wire [31:0] mhpmcounterh_we = _GEN_313; // @[CsrRegisterFile.scala 140:46 CsrRegisterFile.scala 194:20 CsrRegisterFile.scala 485:23]
+ wire [31:0] mhpmcounter_we = _GEN_312; // @[CsrRegisterFile.scala 138:46 CsrRegisterFile.scala 193:20 CsrRegisterFile.scala 474:22]
+ wire _T_658 = ~mcountinhibit[2]; // @[CsrRegisterFile.scala 786:60]
+ wire _T_664 = ~mcountinhibit[3]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_670 = ~mcountinhibit[4]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_676 = ~mcountinhibit[5]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_682 = ~mcountinhibit[6]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_688 = ~mcountinhibit[7]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_694 = ~mcountinhibit[8]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_700 = ~mcountinhibit[9]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_706 = ~mcountinhibit[10]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_712 = ~mcountinhibit[11]; // @[CsrRegisterFile.scala 799:60]
+ wire _T_718 = ~mcountinhibit[12]; // @[CsrRegisterFile.scala 799:60]
+ wire mstatus_en = _GEN_365; // @[CsrRegisterFile.scala 104:46 CsrRegisterFile.scala 177:14 CsrRegisterFile.scala 399:16 CsrRegisterFile.scala 541:24 CsrRegisterFile.scala 563:22]
+ wire mie_en = _GEN_289; // @[CsrRegisterFile.scala 107:46 CsrRegisterFile.scala 184:14 CsrRegisterFile.scala 412:14]
+ wire mscratch_en = _GEN_290; // @[CsrRegisterFile.scala 109:46 CsrRegisterFile.scala 183:14 CsrRegisterFile.scala 416:19]
+ wire [31:0] mepc_d = _GEN_360; // @[CsrRegisterFile.scala 111:46 CsrRegisterFile.scala 490:14 CsrRegisterFile.scala 549:24]
+ wire mepc_en = _GEN_359; // @[CsrRegisterFile.scala 112:46 CsrRegisterFile.scala 185:14 CsrRegisterFile.scala 420:15 CsrRegisterFile.scala 548:24]
+ wire [5:0] mcause_d = _GEN_362; // @[CsrRegisterFile.scala 113:46 CsrRegisterFile.scala 491:14 CsrRegisterFile.scala 551:24]
+ wire mcause_en = _GEN_361; // @[CsrRegisterFile.scala 114:46 CsrRegisterFile.scala 186:14 CsrRegisterFile.scala 424:17 CsrRegisterFile.scala 550:24]
+ wire [31:0] mtval_d = _GEN_352; // @[CsrRegisterFile.scala 115:46 CsrRegisterFile.scala 492:14 CsrRegisterFile.scala 540:24]
+ wire mtval_en = _GEN_351; // @[CsrRegisterFile.scala 116:46 CsrRegisterFile.scala 187:14 CsrRegisterFile.scala 428:16 CsrRegisterFile.scala 539:24]
+ wire [31:0] mtvec_d = {{1'd0}, _T_494}; // @[CsrRegisterFile.scala 117:46 CsrRegisterFile.scala 496:14]
+ wire mtvec_en = io_i_csr_mtvec_init; // @[CsrRegisterFile.scala 118:46 CsrRegisterFile.scala 432:16 CsrRegisterFile.scala 493:14]
+ wire dcsr_en = 1'h0; // @[CsrRegisterFile.scala 121:46 CsrRegisterFile.scala 191:14 CsrRegisterFile.scala 531:20]
+ wire [31:0] depc_d = _T_484; // @[CsrRegisterFile.scala 122:46 CsrRegisterFile.scala 501:14 CsrRegisterFile.scala 532:20]
+ wire depc_en = 1'h0; // @[CsrRegisterFile.scala 123:46 CsrRegisterFile.scala 188:14 CsrRegisterFile.scala 533:20]
+ wire dscratch0_en = _GEN_309; // @[CsrRegisterFile.scala 126:46 CsrRegisterFile.scala 189:16 CsrRegisterFile.scala 455:20]
+ wire dscratch1_en = _GEN_310; // @[CsrRegisterFile.scala 127:46 CsrRegisterFile.scala 190:16 CsrRegisterFile.scala 459:20]
+ wire [12:0] mcountinhibit_d = _GEN_374; // @[CsrRegisterFile.scala 132:46 CsrRegisterFile.scala 736:21 CsrRegisterFile.scala 740:23]
+ wire mstat_priv = _T_299; // @[CsrRegisterFile.scala 391:34 CsrRegisterFile.scala 392:14]
+ wire [18:0] _T_722 = mhpmcounter_we[31:13]; // @[CsrRegisterFile.scala 808:47 CsrRegisterFile.scala 814:28]
+ CsrPrimitive PRIM_MSTATUS ( // @[CsrRegisterFile.scala 647:28]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_MSTATUS_io_i_wrdata),
+ .io_i_wr_en(PRIM_MSTATUS_io_i_wr_en),
+ .io_o_rd_data(PRIM_MSTATUS_io_o_rd_data)
+ );
+ CsrPrimitive_1 PRIM_MEPC ( // @[CsrRegisterFile.scala 653:25]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_MEPC_io_i_wrdata),
+ .io_i_wr_en(PRIM_MEPC_io_i_wr_en),
+ .io_o_rd_data(PRIM_MEPC_io_o_rd_data)
+ );
+ CsrPrimitive_2 PRIM_MIE ( // @[CsrRegisterFile.scala 664:24]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_MIE_io_i_wrdata),
+ .io_i_wr_en(PRIM_MIE_io_i_wr_en),
+ .io_o_rd_data(PRIM_MIE_io_o_rd_data)
+ );
+ CsrPrimitive_1 PRIM_MSCRATCH ( // @[CsrRegisterFile.scala 671:29]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_MSCRATCH_io_i_wrdata),
+ .io_i_wr_en(PRIM_MSCRATCH_io_i_wr_en),
+ .io_o_rd_data(PRIM_MSCRATCH_io_o_rd_data)
+ );
+ CsrPrimitive_4 PRIM_MCAUSE ( // @[CsrRegisterFile.scala 678:27]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_MCAUSE_io_i_wrdata),
+ .io_i_wr_en(PRIM_MCAUSE_io_i_wr_en),
+ .io_o_rd_data(PRIM_MCAUSE_io_o_rd_data)
+ );
+ CsrPrimitive_1 PRIM_MTVAL ( // @[CsrRegisterFile.scala 684:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_MTVAL_io_i_wrdata),
+ .io_i_wr_en(PRIM_MTVAL_io_i_wr_en),
+ .io_o_rd_data(PRIM_MTVAL_io_o_rd_data)
+ );
+ CsrPrimitive_6 PRIM_MTVEC ( // @[CsrRegisterFile.scala 691:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_MTVEC_io_i_wrdata),
+ .io_i_wr_en(PRIM_MTVEC_io_i_wr_en),
+ .io_o_rd_data(PRIM_MTVEC_io_o_rd_data)
+ );
+ CsrPrimitive_7 PRIM_DCSR ( // @[CsrRegisterFile.scala 701:25]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_DCSR_io_i_wrdata),
+ .io_i_wr_en(PRIM_DCSR_io_i_wr_en),
+ .io_o_rd_data(PRIM_DCSR_io_o_rd_data)
+ );
+ CsrPrimitive_1 PRIM_DEPC ( // @[CsrRegisterFile.scala 708:25]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_DEPC_io_i_wrdata),
+ .io_i_wr_en(PRIM_DEPC_io_i_wr_en),
+ .io_o_rd_data(PRIM_DEPC_io_o_rd_data)
+ );
+ CsrPrimitive_1 PRIM_DSCRATCH0 ( // @[CsrRegisterFile.scala 714:30]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_DSCRATCH0_io_i_wrdata),
+ .io_i_wr_en(PRIM_DSCRATCH0_io_i_wr_en),
+ .io_o_rd_data(PRIM_DSCRATCH0_io_o_rd_data)
+ );
+ CsrPrimitive_1 PRIM_DSCRATCH1 ( // @[CsrRegisterFile.scala 721:30]
+ .clock(clock),
+ .reset(reset),
+ .io_i_wrdata(PRIM_DSCRATCH1_io_i_wrdata),
+ .io_i_wr_en(PRIM_DSCRATCH1_io_i_wr_en),
+ .io_o_rd_data(PRIM_DSCRATCH1_io_o_rd_data)
+ );
+ BrqCounter COUNT_MCYCLE ( // @[CsrRegisterFile.scala 777:28]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(COUNT_MCYCLE_io_i_counter_inc),
+ .io_i_counterh_we(COUNT_MCYCLE_io_i_counterh_we),
+ .io_i_counter_we(COUNT_MCYCLE_io_i_counter_we),
+ .io_i_counter_val(COUNT_MCYCLE_io_i_counter_val),
+ .io_o_counter_val(COUNT_MCYCLE_io_o_counter_val)
+ );
+ BrqCounter COUNT_MINSTRET ( // @[CsrRegisterFile.scala 785:30]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(COUNT_MINSTRET_io_i_counter_inc),
+ .io_i_counterh_we(COUNT_MINSTRET_io_i_counterh_we),
+ .io_i_counter_we(COUNT_MINSTRET_io_i_counter_we),
+ .io_i_counter_val(COUNT_MINSTRET_io_i_counter_val),
+ .io_o_counter_val(COUNT_MINSTRET_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_1 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_1_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_1_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_1_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_1_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_1_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_2 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_2_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_2_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_2_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_2_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_2_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_3 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_3_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_3_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_3_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_3_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_3_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_4 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_4_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_4_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_4_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_4_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_4_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_5 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_5_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_5_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_5_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_5_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_5_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_6 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_6_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_6_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_6_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_6_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_6_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_7 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_7_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_7_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_7_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_7_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_7_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_8 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_8_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_8_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_8_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_8_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_8_io_o_counter_val)
+ );
+ BrqCounter_2 BrqCounter_9 ( // @[CsrRegisterFile.scala 797:26]
+ .clock(clock),
+ .reset(reset),
+ .io_i_counter_inc(BrqCounter_9_io_i_counter_inc),
+ .io_i_counterh_we(BrqCounter_9_io_i_counterh_we),
+ .io_i_counter_we(BrqCounter_9_io_i_counter_we),
+ .io_i_counter_val(BrqCounter_9_io_i_counter_val),
+ .io_o_counter_val(BrqCounter_9_io_o_counter_val)
+ );
+ assign io_o_csr_mtvec = mtvec_q; // @[CsrRegisterFile.scala 628:18]
+ assign io_o_csr_rdata = _T_44 ? 32'h0 : _GEN_108; // @[CsrRegisterFile.scala 623:18]
+ assign io_o_irq_pending = |io_o_irqs; // @[CsrRegisterFile.scala 637:20]
+ assign io_o_irqs = {_T_529,_T_526}; // @[CsrRegisterFile.scala 636:13]
+ assign io_o_csr_mstatus_mie = _T_537[0]; // @[CsrRegisterFile.scala 629:24]
+ assign io_o_csr_mepc = mepc_q; // @[CsrRegisterFile.scala 626:18]
+ assign io_o_illegal_csr_insn = io_i_csr_access & _T_42; // @[CsrRegisterFile.scala 205:26]
+ // assign PRIM_MSTATUS_clock = clock;
+ // assign PRIM_MSTATUSreset = reset;
+ assign PRIM_MSTATUS_io_i_wrdata = {_T_534,_T_532}; // @[CsrRegisterFile.scala 648:28]
+ assign PRIM_MSTATUS_io_i_wr_en = mstatus_en; // @[CsrRegisterFile.scala 649:29]
+ // assign PRIM_MEPC_clock = clock;
+ // assign PRIM_MEPCreset = reset;
+ assign PRIM_MEPC_io_i_wrdata = mepc_d; // @[CsrRegisterFile.scala 654:25]
+ assign PRIM_MEPC_io_i_wr_en = mepc_en; // @[CsrRegisterFile.scala 655:26]
+ // assign PRIM_MIE_clock = clock;
+ // assign PRIM_MIEreset = reset;
+ assign PRIM_MIE_io_i_wrdata = {_T_546,mie_d_irq_software}; // @[CsrRegisterFile.scala 665:24]
+ assign PRIM_MIE_io_i_wr_en = mie_en; // @[CsrRegisterFile.scala 666:25]
+ // assign PRIM_MSCRATCH_clock = clock;
+ // assign PRIM_MSCRATCHreset = reset;
+ assign PRIM_MSCRATCH_io_i_wrdata = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 672:29]
+ assign PRIM_MSCRATCH_io_i_wr_en = mscratch_en; // @[CsrRegisterFile.scala 673:30]
+ // assign PRIM_MCAUSE_clock = clock;
+ // assign PRIM_MCAUSEreset = reset;
+ assign PRIM_MCAUSE_io_i_wrdata = mcause_d; // @[CsrRegisterFile.scala 679:27]
+ assign PRIM_MCAUSE_io_i_wr_en = mcause_en; // @[CsrRegisterFile.scala 680:28]
+ // assign PRIM_MTVAL_clock = clock;
+ // assign PRIM_MTVALreset = reset;
+ assign PRIM_MTVAL_io_i_wrdata = mtval_d; // @[CsrRegisterFile.scala 685:26]
+ assign PRIM_MTVAL_io_i_wr_en = mtval_en; // @[CsrRegisterFile.scala 686:27]
+ // assign PRIM_MTVEC_clock = clock;
+ // assign PRIM_MTVECreset = reset;
+ assign PRIM_MTVEC_io_i_wrdata = mtvec_d; // @[CsrRegisterFile.scala 692:26]
+ assign PRIM_MTVEC_io_i_wr_en = mtvec_en; // @[CsrRegisterFile.scala 693:27]
+ // assign PRIM_DCSR_clock = clock;
+ // assign PRIM_DCSRreset = reset;
+ assign PRIM_DCSR_io_i_wrdata = {_T_564,_T_558}; // @[CsrRegisterFile.scala 702:25]
+ assign PRIM_DCSR_io_i_wr_en = mip_irq_software; // @[CsrRegisterFile.scala 703:26]
+ // assign PRIM_DEPC_clock = clock;
+ // assign PRIM_DEPCreset = reset;
+ assign PRIM_DEPC_io_i_wrdata = _GEN_332; // @[CsrRegisterFile.scala 709:25]
+ assign PRIM_DEPC_io_i_wr_en = mip_irq_software; // @[CsrRegisterFile.scala 710:26]
+ // assign PRIM_DSCRATCH0_clock = clock;
+ // assign PRIM_DSCRATCH0reset = reset;
+ assign PRIM_DSCRATCH0_io_i_wrdata = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 715:30]
+ assign PRIM_DSCRATCH0_io_i_wr_en = dscratch0_en; // @[CsrRegisterFile.scala 716:31]
+ // assign PRIM_DSCRATCH1_clock = clock;
+ // assign PRIM_DSCRATCH1reset = reset;
+ assign PRIM_DSCRATCH1_io_i_wrdata = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 722:30]
+ assign PRIM_DSCRATCH1_io_i_wr_en = dscratch1_en; // @[CsrRegisterFile.scala 723:31]
+ // assign COUNT_MCYCLE_clock = clock;
+ // assign COUNT_MCYCLEreset = reset;
+ assign COUNT_MCYCLE_io_i_counter_inc = tmatch_value_rdata[0] & _T_652; // @[CsrRegisterFile.scala 778:33]
+ assign COUNT_MCYCLE_io_i_counterh_we = mhpmcounterh_we[0]; // @[CsrRegisterFile.scala 779:33]
+ assign COUNT_MCYCLE_io_i_counter_we = mhpmcounter_we[0]; // @[CsrRegisterFile.scala 780:33]
+ assign COUNT_MCYCLE_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 781:33]
+ // assign COUNT_MINSTRET_clock = clock;
+ // assign COUNT_MINSTRETreset = reset;
+ assign COUNT_MINSTRET_io_i_counter_inc = tmatch_value_rdata[2] & _T_658; // @[CsrRegisterFile.scala 786:35]
+ assign COUNT_MINSTRET_io_i_counterh_we = mhpmcounterh_we[2]; // @[CsrRegisterFile.scala 787:35]
+ assign COUNT_MINSTRET_io_i_counter_we = mhpmcounter_we[2]; // @[CsrRegisterFile.scala 788:35]
+ assign COUNT_MINSTRET_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 789:35]
+ // assign BrqCounter_clock = clock;
+ // assign BrqCounterreset = reset;
+ assign BrqCounter_io_i_counter_inc = tmatch_value_rdata[3] & _T_664; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_io_i_counterh_we = mhpmcounterh_we[3]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_io_i_counter_we = mhpmcounter_we[3]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_1_clock = clock;
+ // assign BrqCounter_1reset = reset;
+ assign BrqCounter_1_io_i_counter_inc = tmatch_value_rdata[4] & _T_670; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_1_io_i_counterh_we = mhpmcounterh_we[4]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_1_io_i_counter_we = mhpmcounter_we[4]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_1_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_2_clock = clock;
+ // assign BrqCounter_2reset = reset;
+ assign BrqCounter_2_io_i_counter_inc = tmatch_value_rdata[5] & _T_676; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_2_io_i_counterh_we = mhpmcounterh_we[5]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_2_io_i_counter_we = mhpmcounter_we[5]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_2_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_3_clock = clock;
+ // assign BrqCounter_3reset = reset;
+ assign BrqCounter_3_io_i_counter_inc = tmatch_value_rdata[6] & _T_682; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_3_io_i_counterh_we = mhpmcounterh_we[6]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_3_io_i_counter_we = mhpmcounter_we[6]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_3_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_4_clock = clock;
+ // assign BrqCounter_4reset = reset;
+ assign BrqCounter_4_io_i_counter_inc = tmatch_value_rdata[7] & _T_688; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_4_io_i_counterh_we = mhpmcounterh_we[7]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_4_io_i_counter_we = mhpmcounter_we[7]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_4_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_5_clock = clock;
+ // assign BrqCounter_5reset = reset;
+ assign BrqCounter_5_io_i_counter_inc = tmatch_value_rdata[8] & _T_694; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_5_io_i_counterh_we = mhpmcounterh_we[8]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_5_io_i_counter_we = mhpmcounter_we[8]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_5_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_6_clock = clock;
+ // assign BrqCounter_6reset = reset;
+ assign BrqCounter_6_io_i_counter_inc = tmatch_value_rdata[9] & _T_700; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_6_io_i_counterh_we = mhpmcounterh_we[9]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_6_io_i_counter_we = mhpmcounter_we[9]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_6_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_7_clock = clock;
+ // assign BrqCounter_7reset = reset;
+ assign BrqCounter_7_io_i_counter_inc = tmatch_value_rdata[10] & _T_706; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_7_io_i_counterh_we = mhpmcounterh_we[10]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_7_io_i_counter_we = mhpmcounter_we[10]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_7_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_8_clock = clock;
+ // assign BrqCounter_8reset = reset;
+ assign BrqCounter_8_io_i_counter_inc = tmatch_value_rdata[11] & _T_712; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_8_io_i_counterh_we = mhpmcounterh_we[11]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_8_io_i_counter_we = mhpmcounter_we[11]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_8_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+ // assign BrqCounter_9_clock = clock;
+ // assign BrqCounter_9reset = reset;
+ assign BrqCounter_9_io_i_counter_inc = tmatch_value_rdata[12] & _T_718; // @[CsrRegisterFile.scala 799:31]
+ assign BrqCounter_9_io_i_counterh_we = mhpmcounterh_we[12]; // @[CsrRegisterFile.scala 800:31]
+ assign BrqCounter_9_io_i_counter_we = mhpmcounter_we[12]; // @[CsrRegisterFile.scala 801:31]
+ assign BrqCounter_9_io_i_counter_val = _T_514 ? io_i_csr_wdata : _GEN_372; // @[CsrRegisterFile.scala 802:31]
+`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}};
+ priv_lvl_q = _RAND_0[1:0];
+ _RAND_1 = {1{`RANDOM}};
+ mcountinhibit_q = _RAND_1[12:0];
+ _RAND_2 = {2{`RANDOM}};
+ mhpmcounter_0 = _RAND_2[63:0];
+ _RAND_3 = {2{`RANDOM}};
+ mhpmcounter_1 = _RAND_3[63:0];
+ _RAND_4 = {2{`RANDOM}};
+ mhpmcounter_2 = _RAND_4[63:0];
+ _RAND_5 = {2{`RANDOM}};
+ mhpmcounter_3 = _RAND_5[63:0];
+ _RAND_6 = {2{`RANDOM}};
+ mhpmcounter_4 = _RAND_6[63:0];
+ _RAND_7 = {2{`RANDOM}};
+ mhpmcounter_5 = _RAND_7[63:0];
+ _RAND_8 = {2{`RANDOM}};
+ mhpmcounter_6 = _RAND_8[63:0];
+ _RAND_9 = {2{`RANDOM}};
+ mhpmcounter_7 = _RAND_9[63:0];
+ _RAND_10 = {2{`RANDOM}};
+ mhpmcounter_8 = _RAND_10[63:0];
+ _RAND_11 = {2{`RANDOM}};
+ mhpmcounter_9 = _RAND_11[63:0];
+ _RAND_12 = {2{`RANDOM}};
+ mhpmcounter_10 = _RAND_12[63:0];
+ _RAND_13 = {2{`RANDOM}};
+ mhpmcounter_11 = _RAND_13[63:0];
+ _RAND_14 = {2{`RANDOM}};
+ mhpmcounter_12 = _RAND_14[63:0];
+ _RAND_15 = {2{`RANDOM}};
+ mhpmcounter_13 = _RAND_15[63:0];
+ _RAND_16 = {2{`RANDOM}};
+ mhpmcounter_14 = _RAND_16[63:0];
+ _RAND_17 = {2{`RANDOM}};
+ mhpmcounter_15 = _RAND_17[63:0];
+ _RAND_18 = {2{`RANDOM}};
+ mhpmcounter_16 = _RAND_18[63:0];
+ _RAND_19 = {2{`RANDOM}};
+ mhpmcounter_17 = _RAND_19[63:0];
+ _RAND_20 = {2{`RANDOM}};
+ mhpmcounter_18 = _RAND_20[63:0];
+ _RAND_21 = {2{`RANDOM}};
+ mhpmcounter_19 = _RAND_21[63:0];
+ _RAND_22 = {2{`RANDOM}};
+ mhpmcounter_20 = _RAND_22[63:0];
+ _RAND_23 = {2{`RANDOM}};
+ mhpmcounter_21 = _RAND_23[63:0];
+ _RAND_24 = {2{`RANDOM}};
+ mhpmcounter_22 = _RAND_24[63:0];
+ _RAND_25 = {2{`RANDOM}};
+ mhpmcounter_23 = _RAND_25[63:0];
+ _RAND_26 = {2{`RANDOM}};
+ mhpmcounter_24 = _RAND_26[63:0];
+ _RAND_27 = {2{`RANDOM}};
+ mhpmcounter_25 = _RAND_27[63:0];
+ _RAND_28 = {2{`RANDOM}};
+ mhpmcounter_26 = _RAND_28[63:0];
+ _RAND_29 = {2{`RANDOM}};
+ mhpmcounter_27 = _RAND_29[63:0];
+ _RAND_30 = {2{`RANDOM}};
+ mhpmcounter_28 = _RAND_30[63:0];
+ _RAND_31 = {2{`RANDOM}};
+ mhpmcounter_29 = _RAND_31[63:0];
+ _RAND_32 = {2{`RANDOM}};
+ mhpmcounter_30 = _RAND_32[63:0];
+ _RAND_33 = {2{`RANDOM}};
+ mhpmcounter_31 = _RAND_33[63:0];
+ _RAND_34 = {1{`RANDOM}};
+ mhpmevent_0 = _RAND_34[31:0];
+ _RAND_35 = {1{`RANDOM}};
+ mhpmevent_1 = _RAND_35[31:0];
+ _RAND_36 = {1{`RANDOM}};
+ mhpmevent_2 = _RAND_36[31:0];
+ _RAND_37 = {1{`RANDOM}};
+ mhpmevent_3 = _RAND_37[31:0];
+ _RAND_38 = {1{`RANDOM}};
+ mhpmevent_4 = _RAND_38[31:0];
+ _RAND_39 = {1{`RANDOM}};
+ mhpmevent_5 = _RAND_39[31:0];
+ _RAND_40 = {1{`RANDOM}};
+ mhpmevent_6 = _RAND_40[31:0];
+ _RAND_41 = {1{`RANDOM}};
+ mhpmevent_7 = _RAND_41[31:0];
+ _RAND_42 = {1{`RANDOM}};
+ mhpmevent_8 = _RAND_42[31:0];
+ _RAND_43 = {1{`RANDOM}};
+ mhpmevent_9 = _RAND_43[31:0];
+ _RAND_44 = {1{`RANDOM}};
+ mhpmevent_10 = _RAND_44[31:0];
+ _RAND_45 = {1{`RANDOM}};
+ mhpmevent_11 = _RAND_45[31:0];
+ _RAND_46 = {1{`RANDOM}};
+ mhpmevent_12 = _RAND_46[31:0];
+ _RAND_47 = {1{`RANDOM}};
+ mhpmevent_13 = _RAND_47[31:0];
+ _RAND_48 = {1{`RANDOM}};
+ mhpmevent_14 = _RAND_48[31:0];
+ _RAND_49 = {1{`RANDOM}};
+ mhpmevent_15 = _RAND_49[31:0];
+ _RAND_50 = {1{`RANDOM}};
+ mhpmevent_16 = _RAND_50[31:0];
+ _RAND_51 = {1{`RANDOM}};
+ mhpmevent_17 = _RAND_51[31:0];
+ _RAND_52 = {1{`RANDOM}};
+ mhpmevent_18 = _RAND_52[31:0];
+ _RAND_53 = {1{`RANDOM}};
+ mhpmevent_19 = _RAND_53[31:0];
+ _RAND_54 = {1{`RANDOM}};
+ mhpmevent_20 = _RAND_54[31:0];
+ _RAND_55 = {1{`RANDOM}};
+ mhpmevent_21 = _RAND_55[31:0];
+ _RAND_56 = {1{`RANDOM}};
+ mhpmevent_22 = _RAND_56[31:0];
+ _RAND_57 = {1{`RANDOM}};
+ mhpmevent_23 = _RAND_57[31:0];
+ _RAND_58 = {1{`RANDOM}};
+ mhpmevent_24 = _RAND_58[31:0];
+ _RAND_59 = {1{`RANDOM}};
+ mhpmevent_25 = _RAND_59[31:0];
+ _RAND_60 = {1{`RANDOM}};
+ mhpmevent_26 = _RAND_60[31:0];
+ _RAND_61 = {1{`RANDOM}};
+ mhpmevent_27 = _RAND_61[31:0];
+ _RAND_62 = {1{`RANDOM}};
+ mhpmevent_28 = _RAND_62[31:0];
+ _RAND_63 = {1{`RANDOM}};
+ mhpmevent_29 = _RAND_63[31:0];
+ _RAND_64 = {1{`RANDOM}};
+ mhpmevent_30 = _RAND_64[31:0];
+ _RAND_65 = {1{`RANDOM}};
+ mhpmevent_31 = _RAND_65[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ priv_lvl_q <= 2'h3;
+ end else if (reset) begin
+ priv_lvl_q <= 2'h3;
+ end else if (io_i_csr_restore_mret) begin
+ priv_lvl_q <= _T_537[3:2];
+ end else if (io_i_csr_save_cause) begin
+ priv_lvl_q <= 2'h3;
+ end
+ if (reset) begin
+ mcountinhibit_q <= 13'h0;
+ end else begin
+ mcountinhibit_q <= mcountinhibit_d;
+ end
+ if (reset) begin
+ mhpmcounter_0 <= 64'h0;
+ end else begin
+ mhpmcounter_0 <= COUNT_MCYCLE_io_o_counter_val;
+ end
+ mhpmcounter_1 <= 64'h0;
+ if (reset) begin
+ mhpmcounter_2 <= 64'h0;
+ end else begin
+ mhpmcounter_2 <= COUNT_MINSTRET_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_3 <= 64'h0;
+ end else begin
+ mhpmcounter_3 <= BrqCounter_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_4 <= 64'h0;
+ end else begin
+ mhpmcounter_4 <= BrqCounter_1_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_5 <= 64'h0;
+ end else begin
+ mhpmcounter_5 <= BrqCounter_2_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_6 <= 64'h0;
+ end else begin
+ mhpmcounter_6 <= BrqCounter_3_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_7 <= 64'h0;
+ end else begin
+ mhpmcounter_7 <= BrqCounter_4_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_8 <= 64'h0;
+ end else begin
+ mhpmcounter_8 <= BrqCounter_5_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_9 <= 64'h0;
+ end else begin
+ mhpmcounter_9 <= BrqCounter_6_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_10 <= 64'h0;
+ end else begin
+ mhpmcounter_10 <= BrqCounter_7_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_11 <= 64'h0;
+ end else begin
+ mhpmcounter_11 <= BrqCounter_8_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_12 <= 64'h0;
+ end else begin
+ mhpmcounter_12 <= BrqCounter_9_io_o_counter_val;
+ end
+ if (reset) begin
+ mhpmcounter_13 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_14 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_15 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_16 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_17 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_18 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_19 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_20 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_21 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_22 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_23 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_24 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_25 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_26 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_27 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_28 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_29 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_30 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmcounter_31 <= 64'h0;
+ end
+ if (reset) begin
+ mhpmevent_0 <= 32'h0;
+ end else begin
+ mhpmevent_0 <= 32'h1;
+ end
+ mhpmevent_1 <= 32'h0;
+ if (reset) begin
+ mhpmevent_2 <= 32'h0;
+ end else begin
+ mhpmevent_2 <= 32'h4;
+ end
+ if (reset) begin
+ mhpmevent_3 <= 32'h0;
+ end else begin
+ mhpmevent_3 <= 32'h8;
+ end
+ if (reset) begin
+ mhpmevent_4 <= 32'h0;
+ end else begin
+ mhpmevent_4 <= 32'h10;
+ end
+ if (reset) begin
+ mhpmevent_5 <= 32'h0;
+ end else begin
+ mhpmevent_5 <= 32'h20;
+ end
+ if (reset) begin
+ mhpmevent_6 <= 32'h0;
+ end else begin
+ mhpmevent_6 <= 32'h40;
+ end
+ if (reset) begin
+ mhpmevent_7 <= 32'h0;
+ end else begin
+ mhpmevent_7 <= 32'h80;
+ end
+ if (reset) begin
+ mhpmevent_8 <= 32'h0;
+ end else begin
+ mhpmevent_8 <= 32'h100;
+ end
+ if (reset) begin
+ mhpmevent_9 <= 32'h0;
+ end else begin
+ mhpmevent_9 <= 32'h200;
+ end
+ if (reset) begin
+ mhpmevent_10 <= 32'h0;
+ end else begin
+ mhpmevent_10 <= 32'h400;
+ end
+ if (reset) begin
+ mhpmevent_11 <= 32'h0;
+ end else begin
+ mhpmevent_11 <= 32'h800;
+ end
+ if (reset) begin
+ mhpmevent_12 <= 32'h0;
+ end else begin
+ mhpmevent_12 <= 32'h1000;
+ end
+ mhpmevent_13 <= 32'h0;
+ mhpmevent_14 <= 32'h0;
+ mhpmevent_15 <= 32'h0;
+ mhpmevent_16 <= 32'h0;
+ mhpmevent_17 <= 32'h0;
+ mhpmevent_18 <= 32'h0;
+ mhpmevent_19 <= 32'h0;
+ mhpmevent_20 <= 32'h0;
+ mhpmevent_21 <= 32'h0;
+ mhpmevent_22 <= 32'h0;
+ mhpmevent_23 <= 32'h0;
+ mhpmevent_24 <= 32'h0;
+ mhpmevent_25 <= 32'h0;
+ mhpmevent_26 <= 32'h0;
+ mhpmevent_27 <= 32'h0;
+ mhpmevent_28 <= 32'h0;
+ mhpmevent_29 <= 32'h0;
+ mhpmevent_30 <= 32'h0;
+ mhpmevent_31 <= 32'h0;
+ end
+endmodule
+module CsrControlUnit(
+ input io_reg_wr_in_execute,
+ input [4:0] io_rd_sel_in_execute,
+ input io_csr_wr_in_execute,
+ input io_reg_wr_in_memory,
+ input [4:0] io_rd_sel_in_memory,
+ input io_csr_wr_in_memory,
+ input io_reg_wr_in_writeback,
+ input [4:0] io_rd_sel_in_writeback,
+ input io_csr_wr_in_writeback,
+ input [4:0] io_rs1_sel_in_decode,
+ input io_csr_inst_in_decode,
+ input io_csr_imm_inst_in_decode,
+ input io_load_inst_in_execute,
+ input io_load_inst_in_memory,
+ input io_dccm_rvalid_i,
+ output [2:0] io_forward_rs1,
+ output io_csr_op_en_o
+);
+ wire _T = io_reg_wr_in_execute & io_csr_inst_in_decode; // @[CsrControlUnit.scala 51:58]
+ wire _T_1 = ~io_csr_imm_inst_in_decode; // @[CsrControlUnit.scala 51:86]
+ wire _T_2 = _T & _T_1; // @[CsrControlUnit.scala 51:83]
+ wire _T_3 = io_rd_sel_in_execute != 5'h0; // @[CsrControlUnit.scala 51:137]
+ wire _T_4 = _T_2 & _T_3; // @[CsrControlUnit.scala 51:113]
+ wire _T_5 = ~io_csr_wr_in_execute; // @[CsrControlUnit.scala 51:148]
+ wire _T_6 = _T_4 & _T_5; // @[CsrControlUnit.scala 51:145]
+ wire _T_7 = io_rd_sel_in_execute == io_rs1_sel_in_decode; // @[CsrControlUnit.scala 51:195]
+ wire hazard_in_decode_execute = _T_6 & _T_7; // @[CsrControlUnit.scala 51:170]
+ wire _T_10 = io_reg_wr_in_memory & io_csr_inst_in_decode; // @[CsrControlUnit.scala 52:57]
+ wire _T_12 = _T_10 & _T_1; // @[CsrControlUnit.scala 52:82]
+ wire _T_13 = io_rd_sel_in_memory != 5'h0; // @[CsrControlUnit.scala 52:135]
+ wire _T_14 = _T_12 & _T_13; // @[CsrControlUnit.scala 52:112]
+ wire _T_15 = ~hazard_in_decode_execute; // @[CsrControlUnit.scala 52:147]
+ wire _T_16 = _T_14 & _T_15; // @[CsrControlUnit.scala 52:144]
+ wire _T_17 = ~io_csr_wr_in_memory; // @[CsrControlUnit.scala 52:176]
+ wire _T_18 = _T_16 & _T_17; // @[CsrControlUnit.scala 52:173]
+ wire _T_19 = io_rd_sel_in_memory == io_rs1_sel_in_decode; // @[CsrControlUnit.scala 52:221]
+ wire hazard_in_decode_memory = _T_18 & _T_19; // @[CsrControlUnit.scala 52:197]
+ wire _T_22 = io_reg_wr_in_writeback & io_csr_inst_in_decode; // @[CsrControlUnit.scala 53:60]
+ wire _T_24 = _T_22 & _T_1; // @[CsrControlUnit.scala 53:85]
+ wire _T_25 = io_rd_sel_in_writeback != 5'h0; // @[CsrControlUnit.scala 53:141]
+ wire _T_26 = _T_24 & _T_25; // @[CsrControlUnit.scala 53:115]
+ wire _T_28 = _T_26 & _T_15; // @[CsrControlUnit.scala 53:149]
+ wire _T_29 = ~hazard_in_decode_memory; // @[CsrControlUnit.scala 53:181]
+ wire _T_30 = _T_28 & _T_29; // @[CsrControlUnit.scala 53:178]
+ wire _T_31 = ~io_csr_wr_in_writeback; // @[CsrControlUnit.scala 53:209]
+ wire _T_32 = _T_30 & _T_31; // @[CsrControlUnit.scala 53:206]
+ wire _T_33 = io_rd_sel_in_writeback == io_rs1_sel_in_decode; // @[CsrControlUnit.scala 53:259]
+ wire hazard_in_decode_writeback = _T_32 & _T_33; // @[CsrControlUnit.scala 53:232]
+ wire _T_41 = _T_4 & io_csr_wr_in_execute; // @[CsrControlUnit.scala 55:147]
+ wire csr_hazard_in_decode_execute = _T_41 & _T_7; // @[CsrControlUnit.scala 55:171]
+ wire _T_50 = _T_14 & io_csr_wr_in_memory; // @[CsrControlUnit.scala 56:144]
+ wire _T_51 = ~csr_hazard_in_decode_execute; // @[CsrControlUnit.scala 56:170]
+ wire _T_52 = _T_50 & _T_51; // @[CsrControlUnit.scala 56:167]
+ wire csr_hazard_in_decode_memory = _T_52 & _T_19; // @[CsrControlUnit.scala 56:200]
+ wire _T_61 = _T_26 & io_csr_wr_in_writeback; // @[CsrControlUnit.scala 57:154]
+ wire _T_63 = _T_61 & _T_51; // @[CsrControlUnit.scala 57:180]
+ wire _T_64 = ~csr_hazard_in_decode_memory; // @[CsrControlUnit.scala 57:216]
+ wire _T_65 = _T_63 & _T_64; // @[CsrControlUnit.scala 57:213]
+ wire csr_hazard_in_decode_writeback = _T_65 & _T_33; // @[CsrControlUnit.scala 57:245]
+ wire [1:0] _GEN_1 = hazard_in_decode_memory ? 2'h2 : {{1'd0}, hazard_in_decode_execute}; // @[CsrControlUnit.scala 64:33]
+ wire [1:0] _GEN_2 = hazard_in_decode_writeback ? 2'h3 : _GEN_1; // @[CsrControlUnit.scala 69:36]
+ wire [2:0] _GEN_3 = csr_hazard_in_decode_execute ? 3'h4 : {{1'd0}, _GEN_2}; // @[CsrControlUnit.scala 73:38]
+ wire [2:0] _GEN_4 = csr_hazard_in_decode_memory ? 3'h5 : _GEN_3; // @[CsrControlUnit.scala 77:37]
+ wire _T_69 = io_load_inst_in_memory & io_dccm_rvalid_i; // @[CsrControlUnit.scala 86:33]
+ wire _T_70 = ~io_load_inst_in_execute; // @[CsrControlUnit.scala 88:17]
+ wire _T_71 = ~io_load_inst_in_memory; // @[CsrControlUnit.scala 88:45]
+ wire _T_72 = _T_70 & _T_71; // @[CsrControlUnit.scala 88:42]
+ wire _GEN_7 = _T_69 | _T_72; // @[CsrControlUnit.scala 86:54]
+ assign io_forward_rs1 = csr_hazard_in_decode_writeback ? 3'h6 : _GEN_4; // @[CsrControlUnit.scala 40:18 CsrControlUnit.scala 60:20 CsrControlUnit.scala 65:20 CsrControlUnit.scala 70:20 CsrControlUnit.scala 74:20 CsrControlUnit.scala 78:20 CsrControlUnit.scala 82:20]
+ assign io_csr_op_en_o = io_csr_inst_in_decode & _GEN_7; // @[CsrControlUnit.scala 41:18 CsrControlUnit.scala 87:22 CsrControlUnit.scala 89:22]
+endmodule
+module Decode(
+ input clock,
+ input reset,
+ input io_irq_external_i,
+ input [31:0] io_IF_ID_inst,
+ input [31:0] io_IF_ID_pc,
+ input [31:0] io_IF_ID_pc4,
+ input io_MEM_WB_ctrl_regWr,
+ input io_MEM_WB_ctrl_csrWen,
+ input [4:0] io_MEM_WB_rd_sel,
+ input io_ID_EX_ctrl_MemRd,
+ input io_ID_EX_ctrl_regWr,
+ input io_ID_EX_ctrl_csrWen,
+ input io_EX_MEM_ctrl_csrWen,
+ input [4:0] io_ID_EX_rd_sel,
+ input [4:0] io_EX_MEM_rd_sel,
+ input io_EX_MEM_ctrl_MemRd,
+ input io_EX_MEM_ctrl_regWr,
+ input io_MEM_WB_ctrl_MemRd,
+ input [31:0] io_alu_output,
+ input [31:0] io_EX_MEM_alu_output,
+ input [31:0] io_dmem_memOut,
+ input io_dccm_rvalid_i,
+ input [31:0] io_writeback_write_data,
+ input [31:0] io_MEM_WB_csr_rdata_i,
+ input [31:0] io_EX_MEM_csr_rdata_i,
+ input [31:0] io_ID_EX_csr_rdata_i,
+ input io_fetch_csr_mtvec_init,
+ input [31:0] io_fetch_csr_if_pc,
+ input io_fetch_csr_save_if,
+ input [5:0] io_fetch_exc_cause_i,
+ input io_fetch_csr_save_cause_i,
+ input io_execute_regwrite,
+ input io_mem_regwrite,
+ input io_wb_regwrite,
+ output [31:0] io_pc_out,
+ output [31:0] io_pc4_out,
+ output [31:0] io_inst_op_out,
+ output [2:0] io_func3_out,
+ output [6:0] io_func7_out,
+ output [4:0] io_rd_sel_out,
+ output [4:0] io_rs1_sel_out,
+ output [4:0] io_rs2_sel_out,
+ output [31:0] io_rs1_out,
+ output [31:0] io_rs2_out,
+ output [31:0] io_csr_rdata_o,
+ output [31:0] io_imm_out,
+ output [31:0] io_sb_imm,
+ output [31:0] io_uj_imm,
+ output [31:0] io_jalr_output,
+ output io_branchLogic_output,
+ output [31:0] io_hazardDetection_pc_out,
+ output [31:0] io_hazardDetection_inst_out,
+ output [31:0] io_hazardDetection_current_pc_out,
+ output io_hazardDetection_pc_forward,
+ output io_hazardDetection_inst_forward,
+ output io_ctrl_MemWr_out,
+ output io_ctrl_MemRd_out,
+ output io_ctrl_Branch_out,
+ output io_ctrl_RegWr_out,
+ output io_ctrl_CsrWen_out,
+ output io_ctrl_MemToReg_out,
+ output [3:0] io_ctrl_AluOp_out,
+ output [1:0] io_ctrl_OpA_sel_out,
+ output io_ctrl_OpB_sel_out,
+ output [1:0] io_ctrl_next_pc_sel_out,
+ output io_fetch_irq_pending_o,
+ output io_fetch_csr_mstatus_mie_o,
+ output [31:0] io_fetch_csr_mtvec_o,
+ output [31:0] io_fetch_csr_mepc_o,
+ output io_fetch_mret_inst_o
+);
+ wire [31:0] hazardDetection_io_IF_ID_INST; // @[Decode.scala 95:31]
+ wire hazardDetection_io_ID_EX_MEMREAD; // @[Decode.scala 95:31]
+ wire [4:0] hazardDetection_io_ID_EX_REGRD; // @[Decode.scala 95:31]
+ wire [31:0] hazardDetection_io_pc_in; // @[Decode.scala 95:31]
+ wire [31:0] hazardDetection_io_current_pc; // @[Decode.scala 95:31]
+ wire hazardDetection_io_IF_ID_MEMREAD; // @[Decode.scala 95:31]
+ wire hazardDetection_io_inst_forward; // @[Decode.scala 95:31]
+ wire hazardDetection_io_pc_forward; // @[Decode.scala 95:31]
+ wire hazardDetection_io_ctrl_forward; // @[Decode.scala 95:31]
+ wire [31:0] hazardDetection_io_inst_out; // @[Decode.scala 95:31]
+ wire [31:0] hazardDetection_io_pc_out; // @[Decode.scala 95:31]
+ wire [31:0] hazardDetection_io_current_pc_out; // @[Decode.scala 95:31]
+ wire [6:0] control_io_in_opcode; // @[Decode.scala 96:23]
+ wire [6:0] control_io_func7; // @[Decode.scala 96:23]
+ wire [2:0] control_io_func3; // @[Decode.scala 96:23]
+ wire control_io_out_memWrite; // @[Decode.scala 96:23]
+ wire control_io_out_branch; // @[Decode.scala 96:23]
+ wire control_io_out_memRead; // @[Decode.scala 96:23]
+ wire control_io_out_regWrite; // @[Decode.scala 96:23]
+ wire control_io_csr_we_o; // @[Decode.scala 96:23]
+ wire control_io_csr_imm_type; // @[Decode.scala 96:23]
+ wire [1:0] control_io_csr_op_o; // @[Decode.scala 96:23]
+ wire control_io_out_memToReg; // @[Decode.scala 96:23]
+ wire [3:0] control_io_out_aluOp; // @[Decode.scala 96:23]
+ wire [1:0] control_io_out_operand_a_sel; // @[Decode.scala 96:23]
+ wire control_io_out_operand_b_sel; // @[Decode.scala 96:23]
+ wire [1:0] control_io_out_extend_sel; // @[Decode.scala 96:23]
+ wire [1:0] control_io_out_next_pc_sel; // @[Decode.scala 96:23]
+ wire [4:0] decodeForwardUnit_io_ID_EX_REGRD; // @[Decode.scala 97:33]
+ wire decodeForwardUnit_io_ID_EX_MEMRD; // @[Decode.scala 97:33]
+ wire [4:0] decodeForwardUnit_io_EX_MEM_REGRD; // @[Decode.scala 97:33]
+ wire decodeForwardUnit_io_EX_MEM_MEMRD; // @[Decode.scala 97:33]
+ wire [4:0] decodeForwardUnit_io_MEM_WB_REGRD; // @[Decode.scala 97:33]
+ wire decodeForwardUnit_io_MEM_WB_MEMRD; // @[Decode.scala 97:33]
+ wire decodeForwardUnit_io_execute_regwrite; // @[Decode.scala 97:33]
+ wire decodeForwardUnit_io_mem_regwrite; // @[Decode.scala 97:33]
+ wire decodeForwardUnit_io_wb_regwrite; // @[Decode.scala 97:33]
+ wire [4:0] decodeForwardUnit_io_rs1_sel; // @[Decode.scala 97:33]
+ wire [4:0] decodeForwardUnit_io_rs2_sel; // @[Decode.scala 97:33]
+ wire decodeForwardUnit_io_ctrl_branch; // @[Decode.scala 97:33]
+ wire [3:0] decodeForwardUnit_io_forward_rs1; // @[Decode.scala 97:33]
+ wire [3:0] decodeForwardUnit_io_forward_rs2; // @[Decode.scala 97:33]
+ wire [31:0] branchLogic_io_in_rs1; // @[Decode.scala 98:27]
+ wire [31:0] branchLogic_io_in_rs2; // @[Decode.scala 98:27]
+ wire [2:0] branchLogic_io_in_func3; // @[Decode.scala 98:27]
+ wire branchLogic_io_output; // @[Decode.scala 98:27]
+ //wire reg_file_clock; // @[Decode.scala 99:24]
+ // wire reg_filereset; // @[Decode.scala 99:24]
+ wire reg_file_io_regWrite; // @[Decode.scala 99:24]
+ wire [4:0] reg_file_io_rd_sel; // @[Decode.scala 99:24]
+ wire [4:0] reg_file_io_rs1_sel; // @[Decode.scala 99:24]
+ wire [4:0] reg_file_io_rs2_sel; // @[Decode.scala 99:24]
+ wire [31:0] reg_file_io_writeData; // @[Decode.scala 99:24]
+ wire [31:0] reg_file_io_rs1; // @[Decode.scala 99:24]
+ wire [31:0] reg_file_io_rs2; // @[Decode.scala 99:24]
+ wire [31:0] imm_generation_io_instruction; // @[Decode.scala 100:30]
+ wire [31:0] imm_generation_io_pc; // @[Decode.scala 100:30]
+ wire [31:0] imm_generation_io_s_imm; // @[Decode.scala 100:30]
+ wire [31:0] imm_generation_io_sb_imm; // @[Decode.scala 100:30]
+ wire [31:0] imm_generation_io_u_imm; // @[Decode.scala 100:30]
+ wire [31:0] imm_generation_io_uj_imm; // @[Decode.scala 100:30]
+ wire [31:0] imm_generation_io_i_imm; // @[Decode.scala 100:30]
+ wire [4:0] structuralDetector_io_rs1_sel; // @[Decode.scala 101:34]
+ wire [4:0] structuralDetector_io_rs2_sel; // @[Decode.scala 101:34]
+ wire structuralDetector_io_MEM_WB_regWr; // @[Decode.scala 101:34]
+ wire [4:0] structuralDetector_io_MEM_WB_REGRD; // @[Decode.scala 101:34]
+ wire [6:0] structuralDetector_io_inst_op_in; // @[Decode.scala 101:34]
+ wire structuralDetector_io_fwd_rs1; // @[Decode.scala 101:34]
+ wire structuralDetector_io_fwd_rs2; // @[Decode.scala 101:34]
+ wire [31:0] jalr_io_input_a; // @[Decode.scala 102:20]
+ wire [31:0] jalr_io_input_b; // @[Decode.scala 102:20]
+ wire [31:0] jalr_io_output; // @[Decode.scala 102:20]
+ //wire csrRegFile_clock; // @[Decode.scala 103:26]
+ // wire csrRegFilereset; // @[Decode.scala 103:26]
+ wire [31:0] csrRegFile_io_o_csr_mtvec; // @[Decode.scala 103:26]
+ wire csrRegFile_io_i_csr_mtvec_init; // @[Decode.scala 103:26]
+ wire csrRegFile_io_i_csr_access; // @[Decode.scala 103:26]
+ wire [11:0] csrRegFile_io_i_csr_addr; // @[Decode.scala 103:26]
+ wire [31:0] csrRegFile_io_i_csr_wdata; // @[Decode.scala 103:26]
+ wire [1:0] csrRegFile_io_i_csr_op; // @[Decode.scala 103:26]
+ wire csrRegFile_io_i_csr_op_en; // @[Decode.scala 103:26]
+ wire [31:0] csrRegFile_io_o_csr_rdata; // @[Decode.scala 103:26]
+ wire csrRegFile_io_i_irq_external; // @[Decode.scala 103:26]
+ wire csrRegFile_io_o_irq_pending; // @[Decode.scala 103:26]
+ wire [2:0] csrRegFile_io_o_irqs; // @[Decode.scala 103:26]
+ wire csrRegFile_io_o_csr_mstatus_mie; // @[Decode.scala 103:26]
+ wire [31:0] csrRegFile_io_o_csr_mepc; // @[Decode.scala 103:26]
+ wire [31:0] csrRegFile_io_i_pc_if; // @[Decode.scala 103:26]
+ wire csrRegFile_io_i_csr_save_if; // @[Decode.scala 103:26]
+ wire csrRegFile_io_i_csr_restore_mret; // @[Decode.scala 103:26]
+ wire csrRegFile_io_i_csr_save_cause; // @[Decode.scala 103:26]
+ wire [5:0] csrRegFile_io_i_csr_mcause; // @[Decode.scala 103:26]
+ wire csrRegFile_io_o_illegal_csr_insn; // @[Decode.scala 103:26]
+ wire csrControlUnit_io_reg_wr_in_execute; // @[Decode.scala 104:30]
+ wire [4:0] csrControlUnit_io_rd_sel_in_execute; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_csr_wr_in_execute; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_reg_wr_in_memory; // @[Decode.scala 104:30]
+ wire [4:0] csrControlUnit_io_rd_sel_in_memory; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_csr_wr_in_memory; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_reg_wr_in_writeback; // @[Decode.scala 104:30]
+ wire [4:0] csrControlUnit_io_rd_sel_in_writeback; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_csr_wr_in_writeback; // @[Decode.scala 104:30]
+ wire [4:0] csrControlUnit_io_rs1_sel_in_decode; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_csr_inst_in_decode; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_csr_imm_inst_in_decode; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_load_inst_in_execute; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_load_inst_in_memory; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_dccm_rvalid_i; // @[Decode.scala 104:30]
+ wire [2:0] csrControlUnit_io_forward_rs1; // @[Decode.scala 104:30]
+ wire csrControlUnit_io_csr_op_en_o; // @[Decode.scala 104:30]
+ wire _T_1 = io_IF_ID_inst[6:0] == 7'h73; // @[Decode.scala 111:40]
+ wire _T_3 = io_IF_ID_inst[14:12] == 3'h0; // @[Decode.scala 111:77]
+ wire _T_4 = _T_1 & _T_3; // @[Decode.scala 111:52]
+ wire _T_6 = io_IF_ID_inst[31:20] == 12'h302; // @[Decode.scala 111:115]
+ wire _T_17 = decodeForwardUnit_io_forward_rs1 == 4'h0; // @[Decode.scala 216:41]
+ wire _T_18 = decodeForwardUnit_io_forward_rs1 == 4'h1; // @[Decode.scala 220:47]
+ wire _T_19 = decodeForwardUnit_io_forward_rs1 == 4'h2; // @[Decode.scala 224:47]
+ wire _T_20 = decodeForwardUnit_io_forward_rs1 == 4'h3; // @[Decode.scala 228:47]
+ wire _T_21 = decodeForwardUnit_io_forward_rs1 == 4'h4; // @[Decode.scala 232:47]
+ wire _T_22 = decodeForwardUnit_io_forward_rs1 == 4'h5; // @[Decode.scala 236:47]
+ wire _T_23 = decodeForwardUnit_io_forward_rs1 == 4'h6; // @[Decode.scala 246:48]
+ wire _T_24 = decodeForwardUnit_io_forward_rs1 == 4'h7; // @[Decode.scala 250:49]
+ wire _T_25 = decodeForwardUnit_io_forward_rs1 == 4'h8; // @[Decode.scala 254:47]
+ wire _T_26 = decodeForwardUnit_io_forward_rs1 == 4'h9; // @[Decode.scala 258:47]
+ wire _T_27 = decodeForwardUnit_io_forward_rs1 == 4'ha; // @[Decode.scala 262:47]
+ wire [31:0] _GEN_0 = _T_27 ? $signed(reg_file_io_writeData) : $signed(reg_file_io_rs1); // @[Decode.scala 262:62]
+ wire [31:0] _GEN_1 = reg_file_io_rs1; // @[Decode.scala 262:62]
+ wire [31:0] _GEN_2 = _T_26 ? $signed(io_dmem_memOut) : $signed(_GEN_0); // @[Decode.scala 258:62]
+ wire [31:0] _GEN_3 = _T_26 ? $signed(reg_file_io_rs1) : $signed(_GEN_1); // @[Decode.scala 258:62]
+ wire [31:0] _GEN_4 = _T_25 ? $signed(reg_file_io_writeData) : $signed(_GEN_2); // @[Decode.scala 254:62]
+ wire [31:0] _GEN_5 = _T_25 ? $signed(reg_file_io_rs1) : $signed(_GEN_3); // @[Decode.scala 254:62]
+ wire [31:0] _GEN_6 = _T_24 ? $signed(io_EX_MEM_alu_output) : $signed(_GEN_4); // @[Decode.scala 250:64]
+ wire [31:0] _GEN_7 = _T_24 ? $signed(reg_file_io_rs1) : $signed(_GEN_5); // @[Decode.scala 250:64]
+ wire [31:0] _GEN_8 = _T_23 ? $signed(io_alu_output) : $signed(_GEN_6); // @[Decode.scala 246:63]
+ wire [31:0] _GEN_9 = _T_23 ? $signed(reg_file_io_rs1) : $signed(_GEN_7); // @[Decode.scala 246:63]
+ wire [31:0] _GEN_10 = _T_22 ? $signed(reg_file_io_writeData) : $signed(_GEN_9); // @[Decode.scala 236:62]
+ wire [31:0] _GEN_11 = _T_22 ? $signed(reg_file_io_rs1) : $signed(_GEN_8); // @[Decode.scala 236:62]
+ wire [31:0] _GEN_12 = _T_21 ? $signed(io_dmem_memOut) : $signed(_GEN_10); // @[Decode.scala 232:62]
+ wire [31:0] _GEN_13 = _T_21 ? $signed(reg_file_io_rs1) : $signed(_GEN_11); // @[Decode.scala 232:62]
+ wire [31:0] _GEN_14 = _T_20 ? $signed(reg_file_io_writeData) : $signed(_GEN_12); // @[Decode.scala 228:62]
+ wire [31:0] _GEN_15 = _T_20 ? $signed(reg_file_io_rs1) : $signed(_GEN_13); // @[Decode.scala 228:62]
+ wire [31:0] _GEN_16 = _T_19 ? $signed(io_EX_MEM_alu_output) : $signed(_GEN_14); // @[Decode.scala 224:62]
+ wire [31:0] _GEN_17 = _T_19 ? $signed(reg_file_io_rs1) : $signed(_GEN_15); // @[Decode.scala 224:62]
+ wire [31:0] _GEN_18 = _T_18 ? $signed(io_alu_output) : $signed(_GEN_16); // @[Decode.scala 220:62]
+ wire [31:0] _GEN_19 = _T_18 ? $signed(reg_file_io_rs1) : $signed(_GEN_17); // @[Decode.scala 220:62]
+ wire _T_28 = decodeForwardUnit_io_forward_rs2 == 4'h0; // @[Decode.scala 274:41]
+ wire _T_29 = decodeForwardUnit_io_forward_rs2 == 4'h1; // @[Decode.scala 277:47]
+ wire _T_30 = decodeForwardUnit_io_forward_rs2 == 4'h2; // @[Decode.scala 280:47]
+ wire _T_31 = decodeForwardUnit_io_forward_rs2 == 4'h3; // @[Decode.scala 283:47]
+ wire _T_32 = decodeForwardUnit_io_forward_rs2 == 4'h4; // @[Decode.scala 286:47]
+ wire _T_33 = decodeForwardUnit_io_forward_rs2 == 4'h5; // @[Decode.scala 289:47]
+ wire [31:0] _GEN_22 = _T_33 ? $signed(reg_file_io_writeData) : $signed(reg_file_io_rs2); // @[Decode.scala 289:62]
+ wire [31:0] _GEN_23 = _T_32 ? $signed(io_dmem_memOut) : $signed(_GEN_22); // @[Decode.scala 286:62]
+ wire [31:0] _GEN_24 = _T_31 ? $signed(reg_file_io_writeData) : $signed(_GEN_23); // @[Decode.scala 283:62]
+ wire [31:0] _GEN_25 = _T_30 ? $signed(io_EX_MEM_alu_output) : $signed(_GEN_24); // @[Decode.scala 280:62]
+ wire [31:0] _GEN_26 = _T_29 ? $signed(io_alu_output) : $signed(_GEN_25); // @[Decode.scala 277:62]
+ wire _T_34 = hazardDetection_io_ctrl_forward; // @[Decode.scala 305:40]
+ wire _T_42 = structuralDetector_io_fwd_rs1; // @[Decode.scala 337:38]
+ wire _T_44 = io_IF_ID_inst[6:0] != 7'h37; // @[Decode.scala 341:43]
+ wire [31:0] _T_45 = _T_44 ? $signed(reg_file_io_writeData) : $signed(32'sh0); // @[Decode.scala 341:22]
+ wire [31:0] _T_48 = _T_44 ? $signed(reg_file_io_rs1) : $signed(32'sh0); // @[Decode.scala 343:22]
+ wire _T_49 = structuralDetector_io_fwd_rs2; // @[Decode.scala 347:38]
+ wire [31:0] _T_55 = _T_44 ? $signed(reg_file_io_rs2) : $signed(32'sh0); // @[Decode.scala 353:22]
+ wire _T_56 = control_io_out_extend_sel == 2'h0; // @[Decode.scala 356:34]
+ wire _T_57 = control_io_out_extend_sel == 2'h1; // @[Decode.scala 359:40]
+ wire _T_58 = control_io_out_extend_sel == 2'h2; // @[Decode.scala 362:40]
+ wire [31:0] _GEN_40 = _T_58 ? $signed(imm_generation_io_u_imm) : $signed(32'sh0); // @[Decode.scala 362:53]
+ wire [31:0] _GEN_41 = _T_57 ? $signed(imm_generation_io_s_imm) : $signed(_GEN_40); // @[Decode.scala 359:53]
+ wire _T_65 = control_io_csr_imm_type; // @[Decode.scala 412:32]
+ wire _T_67 = csrControlUnit_io_forward_rs1 == 3'h1; // @[Decode.scala 415:40]
+ wire _T_69 = csrControlUnit_io_forward_rs1 == 3'h2; // @[Decode.scala 417:46]
+ wire [31:0] _T_73 = io_EX_MEM_ctrl_MemRd ? io_dmem_memOut : io_EX_MEM_alu_output; // @[Decode.scala 420:23]
+ wire _T_74 = csrControlUnit_io_forward_rs1 == 3'h3; // @[Decode.scala 421:46]
+ wire _T_76 = csrControlUnit_io_forward_rs1 == 3'h4; // @[Decode.scala 423:46]
+ wire _T_77 = csrControlUnit_io_forward_rs1 == 3'h5; // @[Decode.scala 426:46]
+ wire _T_78 = csrControlUnit_io_forward_rs1 == 3'h6; // @[Decode.scala 429:46]
+ wire [31:0] _GEN_43 = _T_78 ? io_MEM_WB_csr_rdata_i : reg_file_io_rs1; // @[Decode.scala 429:55]
+ wire [31:0] _GEN_44 = _T_77 ? io_EX_MEM_csr_rdata_i : _GEN_43; // @[Decode.scala 426:55]
+ wire [31:0] _GEN_45 = _T_76 ? io_ID_EX_csr_rdata_i : _GEN_44; // @[Decode.scala 423:55]
+ wire [31:0] _GEN_46 = _T_74 ? io_writeback_write_data : _GEN_45; // @[Decode.scala 421:55]
+ wire [31:0] _GEN_47 = _T_69 ? _T_73 : _GEN_46; // @[Decode.scala 417:55]
+ wire [31:0] _GEN_48 = _T_67 ? io_alu_output : _GEN_47; // @[Decode.scala 415:49]
+ HazardDetection hazardDetection ( // @[Decode.scala 95:31]
+ .io_IF_ID_INST(hazardDetection_io_IF_ID_INST),
+ .io_ID_EX_MEMREAD(hazardDetection_io_ID_EX_MEMREAD),
+ .io_ID_EX_REGRD(hazardDetection_io_ID_EX_REGRD),
+ .io_pc_in(hazardDetection_io_pc_in),
+ .io_current_pc(hazardDetection_io_current_pc),
+ .io_IF_ID_MEMREAD(hazardDetection_io_IF_ID_MEMREAD),
+ .io_inst_forward(hazardDetection_io_inst_forward),
+ .io_pc_forward(hazardDetection_io_pc_forward),
+ .io_ctrl_forward(hazardDetection_io_ctrl_forward),
+ .io_inst_out(hazardDetection_io_inst_out),
+ .io_pc_out(hazardDetection_io_pc_out),
+ .io_current_pc_out(hazardDetection_io_current_pc_out)
+ );
+ Control control ( // @[Decode.scala 96:23]
+ .io_in_opcode(control_io_in_opcode),
+ .io_func7(control_io_func7),
+ .io_func3(control_io_func3),
+ .io_out_memWrite(control_io_out_memWrite),
+ .io_out_branch(control_io_out_branch),
+ .io_out_memRead(control_io_out_memRead),
+ .io_out_regWrite(control_io_out_regWrite),
+ .io_csr_we_o(control_io_csr_we_o),
+ .io_csr_imm_type(control_io_csr_imm_type),
+ .io_csr_op_o(control_io_csr_op_o),
+ .io_out_memToReg(control_io_out_memToReg),
+ .io_out_aluOp(control_io_out_aluOp),
+ .io_out_operand_a_sel(control_io_out_operand_a_sel),
+ .io_out_operand_b_sel(control_io_out_operand_b_sel),
+ .io_out_extend_sel(control_io_out_extend_sel),
+ .io_out_next_pc_sel(control_io_out_next_pc_sel)
+ );
+ DecodeForwardUnit decodeForwardUnit ( // @[Decode.scala 97:33]
+ .io_ID_EX_REGRD(decodeForwardUnit_io_ID_EX_REGRD),
+ .io_ID_EX_MEMRD(decodeForwardUnit_io_ID_EX_MEMRD),
+ .io_EX_MEM_REGRD(decodeForwardUnit_io_EX_MEM_REGRD),
+ .io_EX_MEM_MEMRD(decodeForwardUnit_io_EX_MEM_MEMRD),
+ .io_MEM_WB_REGRD(decodeForwardUnit_io_MEM_WB_REGRD),
+ .io_MEM_WB_MEMRD(decodeForwardUnit_io_MEM_WB_MEMRD),
+ .io_execute_regwrite(decodeForwardUnit_io_execute_regwrite),
+ .io_mem_regwrite(decodeForwardUnit_io_mem_regwrite),
+ .io_wb_regwrite(decodeForwardUnit_io_wb_regwrite),
+ .io_rs1_sel(decodeForwardUnit_io_rs1_sel),
+ .io_rs2_sel(decodeForwardUnit_io_rs2_sel),
+ .io_ctrl_branch(decodeForwardUnit_io_ctrl_branch),
+ .io_forward_rs1(decodeForwardUnit_io_forward_rs1),
+ .io_forward_rs2(decodeForwardUnit_io_forward_rs2)
+ );
+ BranchLogic branchLogic ( // @[Decode.scala 98:27]
+ .io_in_rs1(branchLogic_io_in_rs1),
+ .io_in_rs2(branchLogic_io_in_rs2),
+ .io_in_func3(branchLogic_io_in_func3),
+ .io_output(branchLogic_io_output)
+ );
+ RegisterFile reg_file ( // @[Decode.scala 99:24]
+ .clock(clock),
+ .reset(reset),
+ .io_regWrite(reg_file_io_regWrite),
+ .io_rd_sel(reg_file_io_rd_sel),
+ .io_rs1_sel(reg_file_io_rs1_sel),
+ .io_rs2_sel(reg_file_io_rs2_sel),
+ .io_writeData(reg_file_io_writeData),
+ .io_rs1(reg_file_io_rs1),
+ .io_rs2(reg_file_io_rs2)
+ );
+ ImmediateGeneration imm_generation ( // @[Decode.scala 100:30]
+ .io_instruction(imm_generation_io_instruction),
+ .io_pc(imm_generation_io_pc),
+ .io_s_imm(imm_generation_io_s_imm),
+ .io_sb_imm(imm_generation_io_sb_imm),
+ .io_u_imm(imm_generation_io_u_imm),
+ .io_uj_imm(imm_generation_io_uj_imm),
+ .io_i_imm(imm_generation_io_i_imm)
+ );
+ StructuralDetector structuralDetector ( // @[Decode.scala 101:34]
+ .io_rs1_sel(structuralDetector_io_rs1_sel),
+ .io_rs2_sel(structuralDetector_io_rs2_sel),
+ .io_MEM_WB_regWr(structuralDetector_io_MEM_WB_regWr),
+ .io_MEM_WB_REGRD(structuralDetector_io_MEM_WB_REGRD),
+ .io_inst_op_in(structuralDetector_io_inst_op_in),
+ .io_fwd_rs1(structuralDetector_io_fwd_rs1),
+ .io_fwd_rs2(structuralDetector_io_fwd_rs2)
+ );
+ Jalr jalr ( // @[Decode.scala 102:20]
+ .io_input_a(jalr_io_input_a),
+ .io_input_b(jalr_io_input_b),
+ .io_output(jalr_io_output)
+ );
+ CsrRegisterFile csrRegFile ( // @[Decode.scala 103:26]
+ .clock(clock),
+ .reset(reset),
+ .io_o_csr_mtvec(csrRegFile_io_o_csr_mtvec),
+ .io_i_csr_mtvec_init(csrRegFile_io_i_csr_mtvec_init),
+ .io_i_csr_access(csrRegFile_io_i_csr_access),
+ .io_i_csr_addr(csrRegFile_io_i_csr_addr),
+ .io_i_csr_wdata(csrRegFile_io_i_csr_wdata),
+ .io_i_csr_op(csrRegFile_io_i_csr_op),
+ .io_i_csr_op_en(csrRegFile_io_i_csr_op_en),
+ .io_o_csr_rdata(csrRegFile_io_o_csr_rdata),
+ .io_i_irq_external(csrRegFile_io_i_irq_external),
+ .io_o_irq_pending(csrRegFile_io_o_irq_pending),
+ .io_o_irqs(csrRegFile_io_o_irqs),
+ .io_o_csr_mstatus_mie(csrRegFile_io_o_csr_mstatus_mie),
+ .io_o_csr_mepc(csrRegFile_io_o_csr_mepc),
+ .io_i_pc_if(csrRegFile_io_i_pc_if),
+ .io_i_csr_save_if(csrRegFile_io_i_csr_save_if),
+ .io_i_csr_restore_mret(csrRegFile_io_i_csr_restore_mret),
+ .io_i_csr_save_cause(csrRegFile_io_i_csr_save_cause),
+ .io_i_csr_mcause(csrRegFile_io_i_csr_mcause),
+ .io_o_illegal_csr_insn(csrRegFile_io_o_illegal_csr_insn)
+ );
+ CsrControlUnit csrControlUnit ( // @[Decode.scala 104:30]
+ .io_reg_wr_in_execute(csrControlUnit_io_reg_wr_in_execute),
+ .io_rd_sel_in_execute(csrControlUnit_io_rd_sel_in_execute),
+ .io_csr_wr_in_execute(csrControlUnit_io_csr_wr_in_execute),
+ .io_reg_wr_in_memory(csrControlUnit_io_reg_wr_in_memory),
+ .io_rd_sel_in_memory(csrControlUnit_io_rd_sel_in_memory),
+ .io_csr_wr_in_memory(csrControlUnit_io_csr_wr_in_memory),
+ .io_reg_wr_in_writeback(csrControlUnit_io_reg_wr_in_writeback),
+ .io_rd_sel_in_writeback(csrControlUnit_io_rd_sel_in_writeback),
+ .io_csr_wr_in_writeback(csrControlUnit_io_csr_wr_in_writeback),
+ .io_rs1_sel_in_decode(csrControlUnit_io_rs1_sel_in_decode),
+ .io_csr_inst_in_decode(csrControlUnit_io_csr_inst_in_decode),
+ .io_csr_imm_inst_in_decode(csrControlUnit_io_csr_imm_inst_in_decode),
+ .io_load_inst_in_execute(csrControlUnit_io_load_inst_in_execute),
+ .io_load_inst_in_memory(csrControlUnit_io_load_inst_in_memory),
+ .io_dccm_rvalid_i(csrControlUnit_io_dccm_rvalid_i),
+ .io_forward_rs1(csrControlUnit_io_forward_rs1),
+ .io_csr_op_en_o(csrControlUnit_io_csr_op_en_o)
+ );
+ assign io_pc_out = io_IF_ID_pc; // @[Decode.scala 369:13]
+ assign io_pc4_out = io_IF_ID_pc4; // @[Decode.scala 370:14]
+ assign io_inst_op_out = {{25'd0}, io_IF_ID_inst[6:0]}; // @[Decode.scala 371:18]
+ assign io_func3_out = io_IF_ID_inst[14:12]; // @[Decode.scala 372:16]
+ assign io_func7_out = io_IF_ID_inst[31:25]; // @[Decode.scala 373:16]
+ assign io_rd_sel_out = io_IF_ID_inst[11:7]; // @[Decode.scala 374:17]
+ assign io_rs1_sel_out = io_IF_ID_inst[19:15]; // @[Decode.scala 375:18]
+ assign io_rs2_sel_out = io_IF_ID_inst[24:20]; // @[Decode.scala 376:18]
+ assign io_rs1_out = _T_42 ? $signed(_T_45) : $signed(_T_48); // @[Decode.scala 341:16 Decode.scala 343:16]
+ assign io_rs2_out = _T_49 ? $signed(_T_45) : $signed(_T_55); // @[Decode.scala 351:16 Decode.scala 353:16]
+ assign io_csr_rdata_o = csrRegFile_io_o_csr_rdata; // @[Decode.scala 437:18]
+ assign io_imm_out = _T_56 ? $signed(imm_generation_io_i_imm) : $signed(_GEN_41); // @[Decode.scala 410:14]
+ assign io_sb_imm = imm_generation_io_sb_imm; // @[Decode.scala 325:13]
+ assign io_uj_imm = imm_generation_io_uj_imm; // @[Decode.scala 326:13]
+ assign io_jalr_output = jalr_io_output; // @[Decode.scala 327:18]
+ assign io_branchLogic_output = branchLogic_io_output; // @[Decode.scala 300:25]
+ assign io_hazardDetection_pc_out = hazardDetection_io_pc_out; // @[Decode.scala 182:29]
+ assign io_hazardDetection_inst_out = hazardDetection_io_inst_out; // @[Decode.scala 185:31]
+ assign io_hazardDetection_current_pc_out = hazardDetection_io_current_pc_out; // @[Decode.scala 183:37]
+ assign io_hazardDetection_pc_forward = hazardDetection_io_pc_forward; // @[Decode.scala 184:33]
+ assign io_hazardDetection_inst_forward = hazardDetection_io_inst_forward; // @[Decode.scala 186:35]
+ assign io_ctrl_MemWr_out = _T_34 ? 1'h0 : control_io_out_memWrite; // @[Decode.scala 381:23 Decode.scala 395:23]
+ assign io_ctrl_MemRd_out = _T_34 ? 1'h0 : control_io_out_memRead; // @[Decode.scala 382:23 Decode.scala 396:23]
+ assign io_ctrl_Branch_out = _T_34 ? 1'h0 : control_io_out_branch; // @[Decode.scala 383:24 Decode.scala 397:24]
+ assign io_ctrl_RegWr_out = _T_34 ? 1'h0 : control_io_out_regWrite; // @[Decode.scala 384:23 Decode.scala 398:23]
+ assign io_ctrl_CsrWen_out = _T_34 ? 1'h0 : control_io_csr_we_o; // @[Decode.scala 385:24 Decode.scala 399:24]
+ assign io_ctrl_MemToReg_out = _T_34 ? 1'h0 : control_io_out_memToReg; // @[Decode.scala 386:26 Decode.scala 400:26]
+ assign io_ctrl_AluOp_out = _T_34 ? 4'h0 : control_io_out_aluOp; // @[Decode.scala 387:23 Decode.scala 401:23]
+ assign io_ctrl_OpA_sel_out = _T_34 ? 2'h0 : control_io_out_operand_a_sel; // @[Decode.scala 388:25 Decode.scala 402:25]
+ assign io_ctrl_OpB_sel_out = _T_34 ? 1'h0 : control_io_out_operand_b_sel; // @[Decode.scala 389:25 Decode.scala 403:25]
+ assign io_ctrl_next_pc_sel_out = _T_34 ? 2'h0 : control_io_out_next_pc_sel; // @[Decode.scala 390:29 Decode.scala 404:29]
+ assign io_fetch_irq_pending_o = csrRegFile_io_o_irq_pending; // @[Decode.scala 149:26]
+ assign io_fetch_csr_mstatus_mie_o = csrRegFile_io_o_csr_mstatus_mie; // @[Decode.scala 150:30]
+ assign io_fetch_csr_mtvec_o = csrRegFile_io_o_csr_mtvec; // @[Decode.scala 151:24]
+ assign io_fetch_csr_mepc_o = csrRegFile_io_o_csr_mepc; // @[Decode.scala 152:23]
+ assign io_fetch_mret_inst_o = _T_4 & _T_6; // @[Decode.scala 153:24]
+ assign hazardDetection_io_IF_ID_INST = io_IF_ID_inst; // @[Decode.scala 174:33]
+ assign hazardDetection_io_ID_EX_MEMREAD = io_ID_EX_ctrl_MemRd; // @[Decode.scala 175:36]
+ assign hazardDetection_io_ID_EX_REGRD = io_ID_EX_rd_sel; // @[Decode.scala 176:34]
+ assign hazardDetection_io_pc_in = io_IF_ID_pc4; // @[Decode.scala 177:28]
+ assign hazardDetection_io_current_pc = io_IF_ID_pc; // @[Decode.scala 178:33]
+ assign hazardDetection_io_IF_ID_MEMREAD = control_io_out_memRead; // @[Decode.scala 179:36]
+ assign control_io_in_opcode = io_IF_ID_inst[6:0]; // @[Decode.scala 189:24]
+ assign control_io_func7 = io_IF_ID_inst[31:25]; // @[Decode.scala 191:20]
+ assign control_io_func3 = io_IF_ID_inst[14:12]; // @[Decode.scala 192:20]
+ assign decodeForwardUnit_io_ID_EX_REGRD = io_ID_EX_rd_sel; // @[Decode.scala 195:36]
+ assign decodeForwardUnit_io_ID_EX_MEMRD = io_ID_EX_ctrl_MemRd; // @[Decode.scala 196:36]
+ assign decodeForwardUnit_io_EX_MEM_REGRD = io_EX_MEM_rd_sel; // @[Decode.scala 197:37]
+ assign decodeForwardUnit_io_EX_MEM_MEMRD = io_EX_MEM_ctrl_MemRd; // @[Decode.scala 199:37]
+ assign decodeForwardUnit_io_MEM_WB_REGRD = io_MEM_WB_rd_sel; // @[Decode.scala 198:37]
+ assign decodeForwardUnit_io_MEM_WB_MEMRD = io_MEM_WB_ctrl_MemRd; // @[Decode.scala 200:37]
+ assign decodeForwardUnit_io_execute_regwrite = io_execute_regwrite; // @[Decode.scala 205:41]
+ assign decodeForwardUnit_io_mem_regwrite = io_mem_regwrite; // @[Decode.scala 206:37]
+ assign decodeForwardUnit_io_wb_regwrite = io_wb_regwrite; // @[Decode.scala 207:36]
+ assign decodeForwardUnit_io_rs1_sel = io_IF_ID_inst[19:15]; // @[Decode.scala 201:32]
+ assign decodeForwardUnit_io_rs2_sel = io_IF_ID_inst[24:20]; // @[Decode.scala 202:32]
+ assign decodeForwardUnit_io_ctrl_branch = control_io_out_branch; // @[Decode.scala 203:36]
+ assign branchLogic_io_in_rs1 = _T_17 ? $signed(reg_file_io_rs1) : $signed(_GEN_18); // @[Decode.scala 218:27 Decode.scala 222:27 Decode.scala 226:27 Decode.scala 230:27 Decode.scala 234:27 Decode.scala 238:27 Decode.scala 249:29 Decode.scala 253:27 Decode.scala 257:27 Decode.scala 261:27 Decode.scala 265:27 Decode.scala 268:29]
+ assign branchLogic_io_in_rs2 = _T_28 ? $signed(reg_file_io_rs2) : $signed(_GEN_26); // @[Decode.scala 276:27 Decode.scala 279:27 Decode.scala 282:27 Decode.scala 285:27 Decode.scala 288:27 Decode.scala 291:27 Decode.scala 294:29]
+ assign branchLogic_io_in_func3 = io_IF_ID_inst[14:12]; // @[Decode.scala 209:27]
+ // assign reg_file_clock = clock;
+ // assign reg_filereset = reset;
+ assign reg_file_io_regWrite = io_MEM_WB_ctrl_regWr; // @[Decode.scala 315:24]
+ assign reg_file_io_rd_sel = io_MEM_WB_rd_sel; // @[Decode.scala 316:22]
+ assign reg_file_io_rs1_sel = io_IF_ID_inst[19:15]; // @[Decode.scala 313:23]
+ assign reg_file_io_rs2_sel = io_IF_ID_inst[24:20]; // @[Decode.scala 314:23]
+ assign reg_file_io_writeData = io_MEM_WB_ctrl_csrWen ? $signed(io_MEM_WB_csr_rdata_i) : $signed(io_writeback_write_data); // @[Decode.scala 317:25]
+ assign imm_generation_io_instruction = io_IF_ID_inst; // @[Decode.scala 321:33]
+ assign imm_generation_io_pc = io_IF_ID_pc; // @[Decode.scala 322:24]
+ assign structuralDetector_io_rs1_sel = io_IF_ID_inst[19:15]; // @[Decode.scala 330:33]
+ assign structuralDetector_io_rs2_sel = io_IF_ID_inst[24:20]; // @[Decode.scala 331:33]
+ assign structuralDetector_io_MEM_WB_regWr = io_MEM_WB_ctrl_regWr; // @[Decode.scala 333:38]
+ assign structuralDetector_io_MEM_WB_REGRD = io_MEM_WB_rd_sel; // @[Decode.scala 332:38]
+ assign structuralDetector_io_inst_op_in = io_IF_ID_inst[6:0]; // @[Decode.scala 334:36]
+ assign jalr_io_input_a = _T_17 ? $signed(reg_file_io_rs1) : $signed(_GEN_19); // @[Decode.scala 219:21 Decode.scala 223:21 Decode.scala 227:21 Decode.scala 231:21 Decode.scala 235:21 Decode.scala 239:21 Decode.scala 248:23 Decode.scala 252:21 Decode.scala 256:21 Decode.scala 260:21 Decode.scala 264:21 Decode.scala 269:23]
+ assign jalr_io_input_b = imm_generation_io_i_imm; // @[Decode.scala 297:19]
+ // assign csrRegFile_clock = clock;
+ // assign csrRegFilereset = reset;
+ assign csrRegFile_io_i_csr_mtvec_init = io_fetch_csr_mtvec_init; // @[Decode.scala 116:34]
+ assign csrRegFile_io_i_csr_access = control_io_csr_we_o; // @[Decode.scala 117:30]
+ assign csrRegFile_io_i_csr_addr = io_IF_ID_inst[31:20]; // @[Decode.scala 121:28]
+ assign csrRegFile_io_i_csr_wdata = _T_65 ? {{27'd0}, io_IF_ID_inst[19:15]} : _GEN_48; // @[Decode.scala 118:29]
+ assign csrRegFile_io_i_csr_op = control_io_csr_op_o; // @[Decode.scala 119:26]
+ assign csrRegFile_io_i_csr_op_en = csrControlUnit_io_csr_op_en_o; // @[Decode.scala 120:29]
+ assign csrRegFile_io_i_irq_external = io_irq_external_i; // @[Decode.scala 124:32]
+ assign csrRegFile_io_i_pc_if = io_fetch_csr_if_pc; // @[Decode.scala 126:25]
+ assign csrRegFile_io_i_csr_save_if = io_fetch_csr_save_if; // @[Decode.scala 129:31]
+ assign csrRegFile_io_i_csr_restore_mret = _T_4 & _T_6; // @[Decode.scala 132:36]
+ assign csrRegFile_io_i_csr_save_cause = io_fetch_csr_save_cause_i; // @[Decode.scala 135:34]
+ assign csrRegFile_io_i_csr_mcause = io_fetch_exc_cause_i; // @[Decode.scala 134:30]
+ assign csrControlUnit_io_reg_wr_in_execute = io_ID_EX_ctrl_regWr; // @[Decode.scala 156:39]
+ assign csrControlUnit_io_rd_sel_in_execute = io_ID_EX_rd_sel; // @[Decode.scala 157:39]
+ assign csrControlUnit_io_csr_wr_in_execute = io_ID_EX_ctrl_csrWen; // @[Decode.scala 167:39]
+ assign csrControlUnit_io_reg_wr_in_memory = io_EX_MEM_ctrl_regWr; // @[Decode.scala 158:38]
+ assign csrControlUnit_io_rd_sel_in_memory = io_EX_MEM_rd_sel; // @[Decode.scala 159:38]
+ assign csrControlUnit_io_csr_wr_in_memory = io_EX_MEM_ctrl_csrWen; // @[Decode.scala 168:38]
+ assign csrControlUnit_io_reg_wr_in_writeback = io_MEM_WB_ctrl_regWr; // @[Decode.scala 160:41]
+ assign csrControlUnit_io_rd_sel_in_writeback = io_MEM_WB_rd_sel; // @[Decode.scala 161:41]
+ assign csrControlUnit_io_csr_wr_in_writeback = io_MEM_WB_ctrl_csrWen; // @[Decode.scala 169:41]
+ assign csrControlUnit_io_rs1_sel_in_decode = io_IF_ID_inst[19:15]; // @[Decode.scala 162:39]
+ assign csrControlUnit_io_csr_inst_in_decode = control_io_csr_we_o; // @[Decode.scala 163:40]
+ assign csrControlUnit_io_csr_imm_inst_in_decode = control_io_csr_imm_type; // @[Decode.scala 170:44]
+ assign csrControlUnit_io_load_inst_in_execute = io_ID_EX_ctrl_MemRd; // @[Decode.scala 164:42]
+ assign csrControlUnit_io_load_inst_in_memory = io_EX_MEM_ctrl_MemRd; // @[Decode.scala 165:41]
+ assign csrControlUnit_io_dccm_rvalid_i = io_dccm_rvalid_i; // @[Decode.scala 166:35]
+endmodule
+module ForwardUnit(
+ input [4:0] io_EX_MEM_REGRD,
+ input [4:0] io_MEM_WB_REGRD,
+ input [4:0] io_ID_EX_REGRS1,
+ input [4:0] io_ID_EX_REGRS2,
+ input [6:0] io_ID_EX_inst_op,
+ input io_EX_MEM_REGWR,
+ input io_MEM_WB_REGWR,
+ output [1:0] io_forward_a,
+ output [1:0] io_forward_b
+);
+ wire _T_1 = io_EX_MEM_REGRD != 5'h0; // @[ForwardUnit.scala 23:56]
+ wire _T_2 = io_EX_MEM_REGWR & _T_1; // @[ForwardUnit.scala 23:37]
+ wire _T_3 = io_EX_MEM_REGRD == io_ID_EX_REGRS1; // @[ForwardUnit.scala 23:91]
+ wire _T_4 = _T_2 & _T_3; // @[ForwardUnit.scala 23:71]
+ wire _T_5 = io_EX_MEM_REGRD == io_ID_EX_REGRS2; // @[ForwardUnit.scala 23:132]
+ wire _T_6 = _T_4 & _T_5; // @[ForwardUnit.scala 23:112]
+ wire _T_7 = io_ID_EX_inst_op != 7'h37; // @[ForwardUnit.scala 23:173]
+ wire _T_8 = _T_6 & _T_7; // @[ForwardUnit.scala 23:153]
+ wire _T_13 = _T_2 & _T_5; // @[ForwardUnit.scala 31:78]
+ wire _T_15 = _T_13 & _T_7; // @[ForwardUnit.scala 31:119]
+ wire _T_22 = _T_4 & _T_7; // @[ForwardUnit.scala 34:119]
+ wire _GEN_2 = _T_15 ? 1'h0 : _T_22; // @[ForwardUnit.scala 31:157]
+ wire _GEN_3 = _T_8 | _GEN_2; // @[ForwardUnit.scala 23:191]
+ wire _GEN_4 = _T_8 | _T_15; // @[ForwardUnit.scala 23:191]
+ wire _T_24 = io_MEM_WB_REGRD != 5'h0; // @[ForwardUnit.scala 42:56]
+ wire _T_25 = io_MEM_WB_REGWR & _T_24; // @[ForwardUnit.scala 42:37]
+ wire _T_33 = ~_T_6; // @[ForwardUnit.scala 42:74]
+ wire _T_34 = _T_25 & _T_33; // @[ForwardUnit.scala 42:71]
+ wire _T_35 = io_MEM_WB_REGRD == io_ID_EX_REGRS1; // @[ForwardUnit.scala 42:244]
+ wire _T_36 = _T_34 & _T_35; // @[ForwardUnit.scala 42:224]
+ wire _T_37 = io_MEM_WB_REGRD == io_ID_EX_REGRS2; // @[ForwardUnit.scala 42:285]
+ wire _T_38 = _T_36 & _T_37; // @[ForwardUnit.scala 42:265]
+ wire _T_40 = _T_38 & _T_7; // @[ForwardUnit.scala 42:306]
+ wire _T_49 = ~_T_13; // @[ForwardUnit.scala 45:81]
+ wire _T_50 = _T_25 & _T_49; // @[ForwardUnit.scala 45:78]
+ wire _T_52 = _T_50 & _T_37; // @[ForwardUnit.scala 45:190]
+ wire _T_54 = _T_52 & _T_7; // @[ForwardUnit.scala 45:231]
+ wire _T_63 = ~_T_4; // @[ForwardUnit.scala 48:81]
+ wire _T_64 = _T_25 & _T_63; // @[ForwardUnit.scala 48:78]
+ wire _T_66 = _T_64 & _T_35; // @[ForwardUnit.scala 48:191]
+ wire _T_68 = _T_66 & _T_7; // @[ForwardUnit.scala 48:232]
+ wire [1:0] _GEN_5 = _T_68 ? 2'h2 : {{1'd0}, _GEN_3}; // @[ForwardUnit.scala 48:270]
+ wire [1:0] _GEN_6 = _T_54 ? 2'h2 : {{1'd0}, _GEN_4}; // @[ForwardUnit.scala 45:269]
+ wire [1:0] _GEN_7 = _T_54 ? {{1'd0}, _GEN_3} : _GEN_5; // @[ForwardUnit.scala 45:269]
+ assign io_forward_a = _T_40 ? 2'h2 : _GEN_7; // @[ForwardUnit.scala 17:18 ForwardUnit.scala 29:22 ForwardUnit.scala 35:22 ForwardUnit.scala 43:22 ForwardUnit.scala 49:22]
+ assign io_forward_b = _T_40 ? 2'h2 : _GEN_6; // @[ForwardUnit.scala 18:18 ForwardUnit.scala 30:22 ForwardUnit.scala 32:22 ForwardUnit.scala 44:22 ForwardUnit.scala 46:22]
+endmodule
+module Alu(
+ input [31:0] io_oper_a,
+ input [31:0] io_oper_b,
+ input [4:0] io_aluCtrl,
+ output [31:0] io_output
+);
+ wire _T = io_aluCtrl == 5'h0; // @[Alu.scala 17:21]
+ wire [31:0] _T_3 = $signed(io_oper_a) + $signed(io_oper_b); // @[Alu.scala 19:32]
+ wire _T_4 = io_aluCtrl == 5'h1; // @[Alu.scala 20:28]
+ wire [62:0] _GEN_31 = {{31{io_oper_a[31]}},io_oper_a}; // @[Alu.scala 23:32]
+ wire [62:0] _T_6 = $signed(_GEN_31) << io_oper_b[4:0]; // @[Alu.scala 23:32]
+ wire _T_7 = io_aluCtrl == 5'h2; // @[Alu.scala 24:28]
+ wire _T_8 = $signed(io_oper_a) < $signed(io_oper_b); // @[Alu.scala 26:24]
+ wire [1:0] _GEN_0 = _T_8 ? $signed(2'sh1) : $signed(2'sh0); // @[Alu.scala 26:37]
+ wire _T_9 = io_aluCtrl == 5'h3; // @[Alu.scala 31:28]
+ wire _T_10 = io_aluCtrl == 5'h16; // @[Alu.scala 31:57]
+ wire _T_11 = _T_9 | _T_10; // @[Alu.scala 31:43]
+ wire _T_14 = io_oper_a < io_oper_b; // @[Alu.scala 33:31]
+ wire [1:0] _GEN_1 = _T_14 ? $signed(2'sh1) : $signed(2'sh0); // @[Alu.scala 33:51]
+ wire _T_15 = io_aluCtrl == 5'h4; // @[Alu.scala 38:28]
+ wire [31:0] _T_17 = $signed(io_oper_a) ^ $signed(io_oper_b); // @[Alu.scala 40:32]
+ wire _T_18 = io_aluCtrl == 5'h5; // @[Alu.scala 41:28]
+ wire _T_19 = io_aluCtrl == 5'hd; // @[Alu.scala 41:57]
+ wire _T_20 = _T_18 | _T_19; // @[Alu.scala 41:43]
+ wire [31:0] _T_22 = $signed(io_oper_a) >>> io_oper_b[4:0]; // @[Alu.scala 49:32]
+ wire _T_23 = io_aluCtrl == 5'h6; // @[Alu.scala 50:28]
+ wire [31:0] _T_25 = $signed(io_oper_a) | $signed(io_oper_b); // @[Alu.scala 52:32]
+ wire _T_26 = io_aluCtrl == 5'h7; // @[Alu.scala 53:28]
+ wire [31:0] _T_28 = $signed(io_oper_a) & $signed(io_oper_b); // @[Alu.scala 55:32]
+ wire _T_29 = io_aluCtrl == 5'h8; // @[Alu.scala 56:28]
+ wire [31:0] _T_32 = $signed(io_oper_a) - $signed(io_oper_b); // @[Alu.scala 58:32]
+ wire _T_33 = io_aluCtrl == 5'h10; // @[Alu.scala 60:28]
+ wire _T_34 = $signed(io_oper_a) == $signed(io_oper_b); // @[Alu.scala 62:24]
+ wire [1:0] _GEN_2 = _T_34 ? $signed(2'sh1) : $signed(2'sh0); // @[Alu.scala 62:39]
+ wire _T_35 = io_aluCtrl == 5'h11; // @[Alu.scala 67:28]
+ wire _T_37 = ~_T_34; // @[Alu.scala 69:14]
+ wire [1:0] _GEN_3 = _T_37 ? $signed(2'sh1) : $signed(2'sh0); // @[Alu.scala 69:42]
+ wire _T_38 = io_aluCtrl == 5'h14; // @[Alu.scala 74:28]
+ wire _T_40 = io_aluCtrl == 5'h15; // @[Alu.scala 81:28]
+ wire _T_41 = $signed(io_oper_a) >= $signed(io_oper_b); // @[Alu.scala 83:24]
+ wire [1:0] _GEN_5 = _T_41 ? $signed(2'sh1) : $signed(2'sh0); // @[Alu.scala 83:38]
+ wire _T_42 = io_aluCtrl == 5'h17; // @[Alu.scala 88:28]
+ wire _T_45 = io_oper_a >= io_oper_b; // @[Alu.scala 90:31]
+ wire [1:0] _GEN_6 = _T_45 ? $signed(2'sh1) : $signed(2'sh0); // @[Alu.scala 90:52]
+ wire _T_46 = io_aluCtrl == 5'h1f; // @[Alu.scala 95:28]
+ wire _T_47 = io_aluCtrl == 5'hb; // @[Alu.scala 99:26]
+ wire _T_48 = io_aluCtrl == 5'h1e; // @[Alu.scala 104:26]
+ wire [63:0] _T_49 = $signed(io_oper_a) * $signed(io_oper_b); // @[Alu.scala 106:32]
+ wire _T_50 = io_aluCtrl == 5'h1d; // @[Alu.scala 108:26]
+ wire [32:0] _T_51 = $signed(io_oper_a) / $signed(io_oper_b); // @[Alu.scala 110:32]
+ wire _T_52 = io_aluCtrl == 5'h1b; // @[Alu.scala 112:26]
+ wire [31:0] _T_56 = io_oper_a / io_oper_b; // @[Alu.scala 114:64]
+ wire _T_57 = io_aluCtrl == 5'h1a; // @[Alu.scala 116:26]
+ wire [31:0] _GEN_4 = $signed(io_oper_a) % $signed(io_oper_b); // @[Alu.scala 118:32]
+ wire [31:0] _T_58 = _GEN_4[31:0]; // @[Alu.scala 118:32]
+ wire _T_59 = io_aluCtrl == 5'h19; // @[Alu.scala 120:26]
+ wire [31:0] _T_63 = io_oper_a % io_oper_b; // @[Alu.scala 122:64]
+ wire _T_64 = io_aluCtrl == 5'h18; // @[Alu.scala 124:26]
+ wire [31:0] _T_67 = _T_49[63:32]; // @[Alu.scala 127:51]
+ wire _T_68 = io_aluCtrl == 5'h13; // @[Alu.scala 129:26]
+ wire [32:0] _T_70 = {1'b0,$signed(io_oper_b)}; // @[Alu.scala 131:49]
+ wire [32:0] _GEN_32 = {{1{io_oper_a[31]}},io_oper_a}; // @[Alu.scala 131:49]
+ wire [64:0] _T_71 = $signed(_GEN_32) * $signed(_T_70); // @[Alu.scala 131:49]
+ wire [63:0] _T_73 = _T_71[63:0]; // @[Alu.scala 131:49]
+ wire [31:0] _T_75 = _T_73[63:32]; // @[Alu.scala 132:53]
+ wire [63:0] _T_79 = io_oper_a * io_oper_b; // @[Alu.scala 136:55]
+ wire [31:0] _T_81 = _T_79[63:32]; // @[Alu.scala 137:52]
+ wire [31:0] _GEN_8 = _T_68 ? $signed(_T_75) : $signed(_T_81); // @[Alu.scala 130:5]
+ wire [31:0] _GEN_9 = _T_64 ? $signed(_T_67) : $signed(_GEN_8); // @[Alu.scala 125:5]
+ wire [31:0] _GEN_10 = _T_59 ? $signed(_T_63) : $signed(_GEN_9); // @[Alu.scala 121:5]
+ wire [31:0] _GEN_11 = _T_57 ? $signed(_T_58) : $signed(_GEN_10); // @[Alu.scala 117:5]
+ wire [31:0] _GEN_12 = _T_52 ? $signed(_T_56) : $signed(_GEN_11); // @[Alu.scala 113:5]
+ wire [32:0] _GEN_13 = _T_50 ? $signed(_T_51) : $signed({{1{_GEN_12[31]}},_GEN_12}); // @[Alu.scala 109:5]
+ wire [63:0] _GEN_14 = _T_48 ? $signed(_T_49) : $signed({{31{_GEN_13[32]}},_GEN_13}); // @[Alu.scala 105:5]
+ wire [63:0] _GEN_15 = _T_47 ? $signed({{32{io_oper_b[31]}},io_oper_b}) : $signed(_GEN_14); // @[Alu.scala 100:5]
+ wire [63:0] _GEN_16 = _T_46 ? $signed({{32{io_oper_a[31]}},io_oper_a}) : $signed(_GEN_15); // @[Alu.scala 95:44]
+ wire [63:0] _GEN_17 = _T_42 ? $signed({{62{_GEN_6[1]}},_GEN_6}) : $signed(_GEN_16); // @[Alu.scala 88:44]
+ wire [63:0] _GEN_18 = _T_40 ? $signed({{62{_GEN_5[1]}},_GEN_5}) : $signed(_GEN_17); // @[Alu.scala 81:44]
+ wire [63:0] _GEN_19 = _T_38 ? $signed({{62{_GEN_0[1]}},_GEN_0}) : $signed(_GEN_18); // @[Alu.scala 74:44]
+ wire [63:0] _GEN_20 = _T_35 ? $signed({{62{_GEN_3[1]}},_GEN_3}) : $signed(_GEN_19); // @[Alu.scala 67:44]
+ wire [63:0] _GEN_21 = _T_33 ? $signed({{62{_GEN_2[1]}},_GEN_2}) : $signed(_GEN_20); // @[Alu.scala 60:44]
+ wire [63:0] _GEN_22 = _T_29 ? $signed({{32{_T_32[31]}},_T_32}) : $signed(_GEN_21); // @[Alu.scala 56:44]
+ wire [63:0] _GEN_23 = _T_26 ? $signed({{32{_T_28[31]}},_T_28}) : $signed(_GEN_22); // @[Alu.scala 53:44]
+ wire [63:0] _GEN_24 = _T_23 ? $signed({{32{_T_25[31]}},_T_25}) : $signed(_GEN_23); // @[Alu.scala 50:44]
+ wire [63:0] _GEN_25 = _T_20 ? $signed({{32{_T_22[31]}},_T_22}) : $signed(_GEN_24); // @[Alu.scala 41:73]
+ wire [63:0] _GEN_26 = _T_15 ? $signed({{32{_T_17[31]}},_T_17}) : $signed(_GEN_25); // @[Alu.scala 38:44]
+ wire [63:0] _GEN_27 = _T_11 ? $signed({{62{_GEN_1[1]}},_GEN_1}) : $signed(_GEN_26); // @[Alu.scala 31:73]
+ wire [63:0] _GEN_28 = _T_7 ? $signed({{62{_GEN_0[1]}},_GEN_0}) : $signed(_GEN_27); // @[Alu.scala 24:44]
+ wire [63:0] _GEN_29 = _T_4 ? $signed({{1{_T_6[62]}},_T_6}) : $signed(_GEN_28); // @[Alu.scala 20:44]
+ wire [63:0] _GEN_30 = _T ? $signed({{32{_T_3[31]}},_T_3}) : $signed(_GEN_29); // @[Alu.scala 17:37]
+ assign io_output = _GEN_30[31:0]; // @[Alu.scala 19:19 Alu.scala 23:19 Alu.scala 27:23 Alu.scala 29:23 Alu.scala 34:23 Alu.scala 36:23 Alu.scala 40:19 Alu.scala 49:19 Alu.scala 52:19 Alu.scala 55:19 Alu.scala 58:19 Alu.scala 63:23 Alu.scala 65:23 Alu.scala 70:23 Alu.scala 72:23 Alu.scala 77:23 Alu.scala 79:23 Alu.scala 84:23 Alu.scala 86:23 Alu.scala 91:23 Alu.scala 93:23 Alu.scala 97:19 Alu.scala 101:19 Alu.scala 106:19 Alu.scala 110:19 Alu.scala 114:19 Alu.scala 118:19 Alu.scala 122:19 Alu.scala 127:19 Alu.scala 132:19 Alu.scala 137:19]
+endmodule
+module AluControl(
+ input [3:0] io_aluOp,
+ input [6:0] io_func7,
+ input [2:0] io_func3,
+ output [4:0] io_output
+);
+ wire _T = io_func3 == 3'h0; // @[ALU_operations_Sel.scala 37:35]
+ wire _T_1 = io_aluOp == 4'h0; // @[ALU_operations_Sel.scala 37:57]
+ wire _T_2 = _T & _T_1; // @[ALU_operations_Sel.scala 37:49]
+ wire _T_3 = io_func7 == 7'h0; // @[ALU_operations_Sel.scala 37:80]
+ wire _T_4 = _T_2 & _T_3; // @[ALU_operations_Sel.scala 37:71]
+ wire _T_6 = io_aluOp == 4'h1; // @[ALU_operations_Sel.scala 12:57]
+ wire _T_7 = _T & _T_6; // @[ALU_operations_Sel.scala 12:49]
+ wire _T_8 = _T_4 | _T_7; // @[AluControl.scala 19:20]
+ wire _T_9 = io_func3 == 3'h2; // @[ALU_operations_Sel.scala 33:35]
+ wire _T_10 = io_aluOp == 4'h5; // @[ALU_operations_Sel.scala 33:57]
+ wire _T_11 = _T_9 & _T_10; // @[ALU_operations_Sel.scala 33:49]
+ wire _T_12 = _T_8 | _T_11; // @[AluControl.scala 19:34]
+ wire _T_15 = _T & _T_10; // @[ALU_operations_Sel.scala 31:49]
+ wire _T_16 = _T_12 | _T_15; // @[AluControl.scala 19:46]
+ wire _T_17 = io_func3 == 3'h1; // @[ALU_operations_Sel.scala 32:35]
+ wire _T_19 = _T_17 & _T_10; // @[ALU_operations_Sel.scala 32:49]
+ wire _T_20 = _T_16 | _T_19; // @[AluControl.scala 19:58]
+ wire _T_22 = io_aluOp == 4'h4; // @[ALU_operations_Sel.scala 27:57]
+ wire _T_23 = _T_9 & _T_22; // @[ALU_operations_Sel.scala 27:49]
+ wire _T_24 = _T_20 | _T_23; // @[AluControl.scala 19:70]
+ wire _T_27 = _T & _T_22; // @[ALU_operations_Sel.scala 25:49]
+ wire _T_28 = _T_24 | _T_27; // @[AluControl.scala 19:82]
+ wire _T_31 = _T_17 & _T_22; // @[ALU_operations_Sel.scala 26:49]
+ wire _T_32 = _T_28 | _T_31; // @[AluControl.scala 19:94]
+ wire _T_33 = io_func3 == 3'h4; // @[ALU_operations_Sel.scala 28:35]
+ wire _T_35 = _T_33 & _T_22; // @[ALU_operations_Sel.scala 28:49]
+ wire _T_36 = _T_32 | _T_35; // @[AluControl.scala 19:106]
+ wire _T_37 = io_func3 == 3'h5; // @[ALU_operations_Sel.scala 29:35]
+ wire _T_39 = _T_37 & _T_22; // @[ALU_operations_Sel.scala 29:49]
+ wire _T_40 = _T_36 | _T_39; // @[AluControl.scala 19:119]
+ wire _T_41 = io_func3 == 3'h6; // @[ALU_operations_Sel.scala 30:35]
+ wire _T_43 = _T_41 & _T_22; // @[ALU_operations_Sel.scala 30:49]
+ wire _T_44 = _T_40 | _T_43; // @[AluControl.scala 19:132]
+ wire _T_45 = io_aluOp == 4'h6; // @[ALU_operations_Sel.scala 10:35]
+ wire _T_46 = _T_44 | _T_45; // @[AluControl.scala 19:145]
+ wire _T_47 = io_aluOp == 4'h7; // @[ALU_operations_Sel.scala 11:35]
+ wire _T_48 = _T_46 | _T_47; // @[AluControl.scala 19:158]
+ wire _T_51 = _T_17 & _T_1; // @[ALU_operations_Sel.scala 39:49]
+ wire _T_53 = _T_51 & _T_3; // @[ALU_operations_Sel.scala 39:71]
+ wire _T_56 = _T_17 & _T_6; // @[ALU_operations_Sel.scala 34:49]
+ wire _T_58 = _T_56 & _T_3; // @[ALU_operations_Sel.scala 34:71]
+ wire _T_59 = _T_53 | _T_58; // @[AluControl.scala 21:25]
+ wire _T_62 = _T_9 & _T_1; // @[ALU_operations_Sel.scala 40:49]
+ wire _T_64 = _T_62 & _T_3; // @[ALU_operations_Sel.scala 40:71]
+ wire _T_67 = _T_9 & _T_6; // @[ALU_operations_Sel.scala 13:49]
+ wire _T_68 = _T_64 | _T_67; // @[AluControl.scala 22:25]
+ wire _T_69 = io_func3 == 3'h3; // @[ALU_operations_Sel.scala 41:35]
+ wire _T_71 = _T_69 & _T_1; // @[ALU_operations_Sel.scala 41:49]
+ wire _T_73 = _T_71 & _T_3; // @[ALU_operations_Sel.scala 41:71]
+ wire _T_76 = _T_69 & _T_6; // @[ALU_operations_Sel.scala 14:49]
+ wire _T_77 = _T_73 | _T_76; // @[AluControl.scala 23:25]
+ wire _T_79 = io_aluOp == 4'h2; // @[ALU_operations_Sel.scala 22:57]
+ wire _T_80 = _T_41 & _T_79; // @[ALU_operations_Sel.scala 22:49]
+ wire _T_81 = _T_77 | _T_80; // @[AluControl.scala 23:40]
+ wire _T_84 = _T_33 & _T_1; // @[ALU_operations_Sel.scala 42:49]
+ wire _T_86 = _T_84 & _T_3; // @[ALU_operations_Sel.scala 42:71]
+ wire _T_89 = _T_33 & _T_6; // @[ALU_operations_Sel.scala 15:49]
+ wire _T_90 = _T_86 | _T_89; // @[AluControl.scala 24:25]
+ wire _T_93 = _T_37 & _T_1; // @[ALU_operations_Sel.scala 43:49]
+ wire _T_95 = _T_93 & _T_3; // @[ALU_operations_Sel.scala 43:71]
+ wire _T_98 = _T_37 & _T_6; // @[ALU_operations_Sel.scala 35:49]
+ wire _T_100 = _T_98 & _T_3; // @[ALU_operations_Sel.scala 35:71]
+ wire _T_101 = _T_95 | _T_100; // @[AluControl.scala 25:25]
+ wire _T_105 = io_func7 == 7'h20; // @[ALU_operations_Sel.scala 44:80]
+ wire _T_106 = _T_93 & _T_105; // @[ALU_operations_Sel.scala 44:71]
+ wire _T_107 = _T_101 | _T_106; // @[AluControl.scala 25:39]
+ wire _T_112 = _T_98 & _T_105; // @[ALU_operations_Sel.scala 36:71]
+ wire _T_113 = _T_107 | _T_112; // @[AluControl.scala 25:52]
+ wire _T_116 = _T_41 & _T_1; // @[ALU_operations_Sel.scala 45:49]
+ wire _T_118 = _T_116 & _T_3; // @[ALU_operations_Sel.scala 45:71]
+ wire _T_121 = _T_41 & _T_6; // @[ALU_operations_Sel.scala 16:49]
+ wire _T_122 = _T_118 | _T_121; // @[AluControl.scala 26:25]
+ wire _T_123 = io_func3 == 3'h7; // @[ALU_operations_Sel.scala 46:35]
+ wire _T_125 = _T_123 & _T_1; // @[ALU_operations_Sel.scala 46:49]
+ wire _T_127 = _T_125 & _T_3; // @[ALU_operations_Sel.scala 46:71]
+ wire _T_130 = _T_123 & _T_6; // @[ALU_operations_Sel.scala 17:49]
+ wire _T_131 = _T_127 | _T_130; // @[AluControl.scala 27:25]
+ wire _T_136 = _T_2 & _T_105; // @[ALU_operations_Sel.scala 38:71]
+ wire _T_139 = _T & _T_79; // @[ALU_operations_Sel.scala 18:49]
+ wire _T_142 = _T_17 & _T_79; // @[ALU_operations_Sel.scala 19:49]
+ wire _T_145 = _T_33 & _T_79; // @[ALU_operations_Sel.scala 20:49]
+ wire _T_148 = _T_37 & _T_79; // @[ALU_operations_Sel.scala 21:49]
+ wire _T_151 = _T_123 & _T_79; // @[ALU_operations_Sel.scala 23:49]
+ wire _T_152 = io_aluOp == 4'h3; // @[ALU_operations_Sel.scala 9:35]
+ wire _T_155 = _T & _T_152; // @[ALU_operations_Sel.scala 24:49]
+ wire _T_156 = _T_152 | _T_155; // @[AluControl.scala 34:25]
+ wire _T_158 = io_aluOp == 4'h8; // @[ALU_operations_Sel.scala 55:57]
+ wire _T_159 = _T_17 & _T_158; // @[ALU_operations_Sel.scala 55:49]
+ wire _T_160 = _T_156 | _T_159; // @[AluControl.scala 34:39]
+ wire _T_163 = _T_9 & _T_158; // @[ALU_operations_Sel.scala 56:49]
+ wire _T_164 = _T_160 | _T_163; // @[AluControl.scala 34:54]
+ wire _T_167 = _T_69 & _T_158; // @[ALU_operations_Sel.scala 57:49]
+ wire _T_168 = _T_164 | _T_167; // @[AluControl.scala 34:69]
+ wire _T_171 = _T_37 & _T_158; // @[ALU_operations_Sel.scala 58:49]
+ wire _T_172 = _T_168 | _T_171; // @[AluControl.scala 34:84]
+ wire _T_175 = _T_41 & _T_158; // @[ALU_operations_Sel.scala 59:49]
+ wire _T_176 = _T_172 | _T_175; // @[AluControl.scala 34:100]
+ wire _T_179 = _T_123 & _T_158; // @[ALU_operations_Sel.scala 60:49]
+ wire _T_180 = _T_176 | _T_179; // @[AluControl.scala 34:116]
+ wire _T_182 = io_aluOp == 4'h9; // @[ALU_operations_Sel.scala 47:57]
+ wire _T_183 = _T & _T_182; // @[ALU_operations_Sel.scala 47:49]
+ wire _T_184 = io_func7 == 7'h1; // @[ALU_operations_Sel.scala 47:80]
+ wire _T_185 = _T_183 & _T_184; // @[ALU_operations_Sel.scala 47:71]
+ wire _T_188 = _T_33 & _T_182; // @[ALU_operations_Sel.scala 51:49]
+ wire _T_190 = _T_188 & _T_184; // @[ALU_operations_Sel.scala 51:71]
+ wire _T_193 = _T_37 & _T_182; // @[ALU_operations_Sel.scala 52:49]
+ wire _T_195 = _T_193 & _T_184; // @[ALU_operations_Sel.scala 52:71]
+ wire _T_198 = _T_41 & _T_182; // @[ALU_operations_Sel.scala 53:49]
+ wire _T_200 = _T_198 & _T_184; // @[ALU_operations_Sel.scala 53:71]
+ wire _T_203 = _T_123 & _T_182; // @[ALU_operations_Sel.scala 54:49]
+ wire _T_205 = _T_203 & _T_184; // @[ALU_operations_Sel.scala 54:71]
+ wire _T_208 = _T_17 & _T_182; // @[ALU_operations_Sel.scala 48:49]
+ wire _T_210 = _T_208 & _T_184; // @[ALU_operations_Sel.scala 48:71]
+ wire _T_213 = _T_9 & _T_182; // @[ALU_operations_Sel.scala 49:49]
+ wire _T_215 = _T_213 & _T_184; // @[ALU_operations_Sel.scala 49:71]
+ wire [4:0] _GEN_1 = _T_215 ? 5'h13 : 5'h12; // @[AluControl.scala 41:29]
+ wire [4:0] _GEN_2 = _T_210 ? 5'h18 : _GEN_1; // @[AluControl.scala 40:26]
+ wire [4:0] _GEN_3 = _T_205 ? 5'h19 : _GEN_2; // @[AluControl.scala 39:26]
+ wire [4:0] _GEN_4 = _T_200 ? 5'h1a : _GEN_3; // @[AluControl.scala 38:26]
+ wire [4:0] _GEN_5 = _T_195 ? 5'h1b : _GEN_4; // @[AluControl.scala 37:26]
+ wire [4:0] _GEN_6 = _T_190 ? 5'h1d : _GEN_5; // @[AluControl.scala 36:26]
+ wire [4:0] _GEN_7 = _T_185 ? 5'h1e : _GEN_6; // @[AluControl.scala 35:26]
+ wire [4:0] _GEN_8 = _T_180 ? 5'h1f : _GEN_7; // @[AluControl.scala 34:133]
+ wire [4:0] _GEN_9 = _T_151 ? 5'h17 : _GEN_8; // @[AluControl.scala 33:26]
+ wire [4:0] _GEN_10 = _T_148 ? 5'h15 : _GEN_9; // @[AluControl.scala 32:26]
+ wire [4:0] _GEN_11 = _T_145 ? 5'h14 : _GEN_10; // @[AluControl.scala 31:26]
+ wire [4:0] _GEN_12 = _T_142 ? 5'h11 : _GEN_11; // @[AluControl.scala 30:26]
+ wire [4:0] _GEN_13 = _T_139 ? 5'h10 : _GEN_12; // @[AluControl.scala 29:26]
+ wire [4:0] _GEN_14 = _T_136 ? 5'h8 : _GEN_13; // @[AluControl.scala 28:26]
+ wire [4:0] _GEN_15 = _T_131 ? 5'h7 : _GEN_14; // @[AluControl.scala 27:40]
+ wire [4:0] _GEN_16 = _T_122 ? 5'h6 : _GEN_15; // @[AluControl.scala 26:40]
+ wire [4:0] _GEN_17 = _T_113 ? 5'h5 : _GEN_16; // @[AluControl.scala 25:67]
+ wire [4:0] _GEN_18 = _T_90 ? 5'h4 : _GEN_17; // @[AluControl.scala 24:40]
+ wire [4:0] _GEN_19 = _T_81 ? 5'h3 : _GEN_18; // @[AluControl.scala 23:55]
+ wire [4:0] _GEN_20 = _T_68 ? 5'h2 : _GEN_19; // @[AluControl.scala 22:40]
+ wire [4:0] _GEN_21 = _T_59 ? 5'h1 : _GEN_20; // @[AluControl.scala 21:40]
+ assign io_output = _T_48 ? 5'h0 : _GEN_21; // @[AluControl.scala 20:17 AluControl.scala 21:52 AluControl.scala 22:52 AluControl.scala 23:67 AluControl.scala 24:52 AluControl.scala 25:79 AluControl.scala 26:52 AluControl.scala 27:52 AluControl.scala 28:38 AluControl.scala 29:38 AluControl.scala 30:38 AluControl.scala 31:38 AluControl.scala 32:38 AluControl.scala 33:38 AluControl.scala 34:145 AluControl.scala 35:38 AluControl.scala 36:38 AluControl.scala 37:38 AluControl.scala 38:38 AluControl.scala 39:38 AluControl.scala 40:38 AluControl.scala 41:41 AluControl.scala 42:40]
+endmodule
+module Execute(
+ input [4:0] io_EX_MEM_rd_sel,
+ input [4:0] io_MEM_WB_rd_sel,
+ input [4:0] io_ID_EX_rs1_sel,
+ input [4:0] io_ID_EX_rs2_sel,
+ input io_EX_MEM_ctrl_RegWr,
+ input io_EX_MEM_ctrl_csrWen,
+ input io_MEM_WB_ctrl_csrWen,
+ input io_MEM_WB_ctrl_RegWr,
+ input [1:0] io_ID_EX_ctrl_OpA_sel,
+ input io_ID_EX_ctrl_OpB_sel,
+ input [31:0] io_ID_EX_pc4,
+ input [31:0] io_ID_EX_pc_out,
+ input [31:0] io_ID_EX_rs1,
+ input [31:0] io_ID_EX_rs2,
+ input [31:0] io_ID_EX_csr_data,
+ input [31:0] io_EX_MEM_alu_output,
+ input [31:0] io_EX_MEM_csr_rdata,
+ input [31:0] io_MEM_WB_csr_rdata,
+ input [31:0] io_writeback_write_data,
+ input [31:0] io_ID_EX_imm,
+ input [3:0] io_ID_EX_ctrl_AluOp,
+ input [6:0] io_ID_EX_func7,
+ input [6:0] io_ID_EX_inst_op,
+ input [2:0] io_ID_EX_func3,
+ input [4:0] io_ID_EX_rd_sel,
+ input io_ID_EX_ctrl_MemWr,
+ input io_ID_EX_ctrl_MemRd,
+ input io_ID_EX_ctrl_RegWr,
+ input io_ID_EX_ctrl_CsrWen,
+ input io_ID_EX_ctrl_MemToReg,
+ output [31:0] io_rs2_out,
+ output [31:0] io_alu_output,
+ output [4:0] io_rd_sel_out,
+ output io_ctrl_MemWr_out,
+ output io_ctrl_MemRd_out,
+ output io_ctrl_RegWr_out,
+ output io_ctrl_CsrWe_out,
+ output io_ctrl_MemToReg_out,
+ output [2:0] io_func3_out,
+ output [31:0] io_csr_data_o
+);
+ wire [4:0] forwardUnit_io_EX_MEM_REGRD; // @[Execute.scala 57:27]
+ wire [4:0] forwardUnit_io_MEM_WB_REGRD; // @[Execute.scala 57:27]
+ wire [4:0] forwardUnit_io_ID_EX_REGRS1; // @[Execute.scala 57:27]
+ wire [4:0] forwardUnit_io_ID_EX_REGRS2; // @[Execute.scala 57:27]
+ wire [6:0] forwardUnit_io_ID_EX_inst_op; // @[Execute.scala 57:27]
+ wire forwardUnit_io_EX_MEM_REGWR; // @[Execute.scala 57:27]
+ wire forwardUnit_io_MEM_WB_REGWR; // @[Execute.scala 57:27]
+ wire [1:0] forwardUnit_io_forward_a; // @[Execute.scala 57:27]
+ wire [1:0] forwardUnit_io_forward_b; // @[Execute.scala 57:27]
+ wire [31:0] alu_io_oper_a; // @[Execute.scala 58:19]
+ wire [31:0] alu_io_oper_b; // @[Execute.scala 58:19]
+ wire [4:0] alu_io_aluCtrl; // @[Execute.scala 58:19]
+ wire [31:0] alu_io_output; // @[Execute.scala 58:19]
+ wire [3:0] alu_control_io_aluOp; // @[Execute.scala 59:27]
+ wire [6:0] alu_control_io_func7; // @[Execute.scala 59:27]
+ wire [2:0] alu_control_io_func3; // @[Execute.scala 59:27]
+ wire [4:0] alu_control_io_output; // @[Execute.scala 59:27]
+ wire _T = io_ID_EX_ctrl_OpA_sel == 2'h2; // @[Execute.scala 71:31]
+ wire _T_1 = io_ID_EX_ctrl_OpA_sel == 2'h1; // @[Execute.scala 74:35]
+ wire _T_2 = forwardUnit_io_forward_a == 2'h0; // @[Execute.scala 79:35]
+ wire _T_3 = forwardUnit_io_forward_a == 2'h1; // @[Execute.scala 81:42]
+ wire [31:0] _T_5 = io_EX_MEM_ctrl_csrWen ? $signed(io_EX_MEM_csr_rdata) : $signed(io_EX_MEM_alu_output); // @[Execute.scala 82:27]
+ wire _T_6 = forwardUnit_io_forward_a == 2'h2; // @[Execute.scala 83:42]
+ wire [31:0] _T_8 = io_MEM_WB_ctrl_csrWen ? $signed(io_MEM_WB_csr_rdata) : $signed(io_writeback_write_data); // @[Execute.scala 84:27]
+ wire [31:0] _GEN_0 = _T_6 ? $signed(_T_8) : $signed(io_ID_EX_rs1); // @[Execute.scala 83:55]
+ wire [31:0] _GEN_1 = _T_3 ? $signed(_T_5) : $signed(_GEN_0); // @[Execute.scala 81:55]
+ wire [31:0] _GEN_2 = _T_2 ? $signed(io_ID_EX_rs1) : $signed(_GEN_1); // @[Execute.scala 79:48]
+ wire [31:0] _GEN_3 = _T_1 ? $signed(io_ID_EX_pc_out) : $signed(_GEN_2); // @[Execute.scala 75:4]
+ wire _T_10 = forwardUnit_io_forward_b == 2'h0; // @[Execute.scala 93:35]
+ wire _T_11 = forwardUnit_io_forward_b == 2'h1; // @[Execute.scala 95:42]
+ wire _T_14 = forwardUnit_io_forward_b == 2'h2; // @[Execute.scala 97:42]
+ wire [31:0] _GEN_5 = _T_14 ? $signed(_T_8) : $signed(io_ID_EX_rs2); // @[Execute.scala 97:55]
+ wire [31:0] _GEN_6 = _T_11 ? $signed(_T_5) : $signed(_GEN_5); // @[Execute.scala 95:55]
+ wire [31:0] _GEN_7 = _T_10 ? $signed(io_ID_EX_rs2) : $signed(_GEN_6); // @[Execute.scala 93:48]
+ ForwardUnit forwardUnit ( // @[Execute.scala 57:27]
+ .io_EX_MEM_REGRD(forwardUnit_io_EX_MEM_REGRD),
+ .io_MEM_WB_REGRD(forwardUnit_io_MEM_WB_REGRD),
+ .io_ID_EX_REGRS1(forwardUnit_io_ID_EX_REGRS1),
+ .io_ID_EX_REGRS2(forwardUnit_io_ID_EX_REGRS2),
+ .io_ID_EX_inst_op(forwardUnit_io_ID_EX_inst_op),
+ .io_EX_MEM_REGWR(forwardUnit_io_EX_MEM_REGWR),
+ .io_MEM_WB_REGWR(forwardUnit_io_MEM_WB_REGWR),
+ .io_forward_a(forwardUnit_io_forward_a),
+ .io_forward_b(forwardUnit_io_forward_b)
+ );
+ Alu alu ( // @[Execute.scala 58:19]
+ .io_oper_a(alu_io_oper_a),
+ .io_oper_b(alu_io_oper_b),
+ .io_aluCtrl(alu_io_aluCtrl),
+ .io_output(alu_io_output)
+ );
+ AluControl alu_control ( // @[Execute.scala 59:27]
+ .io_aluOp(alu_control_io_aluOp),
+ .io_func7(alu_control_io_func7),
+ .io_func3(alu_control_io_func3),
+ .io_output(alu_control_io_output)
+ );
+ assign io_rs2_out = io_ID_EX_ctrl_OpB_sel ? $signed(_GEN_7) : $signed(_GEN_7); // @[Execute.scala 94:18 Execute.scala 96:18 Execute.scala 98:18 Execute.scala 100:18 Execute.scala 107:18 Execute.scala 110:18 Execute.scala 113:18 Execute.scala 116:18]
+ assign io_alu_output = alu_io_output; // @[Execute.scala 130:17]
+ assign io_rd_sel_out = io_ID_EX_rd_sel; // @[Execute.scala 133:17]
+ assign io_ctrl_MemWr_out = io_ID_EX_ctrl_MemWr; // @[Execute.scala 137:21]
+ assign io_ctrl_MemRd_out = io_ID_EX_ctrl_MemRd; // @[Execute.scala 138:21]
+ assign io_ctrl_RegWr_out = io_ID_EX_ctrl_RegWr; // @[Execute.scala 139:21]
+ assign io_ctrl_CsrWe_out = io_ID_EX_ctrl_CsrWen; // @[Execute.scala 140:21]
+ assign io_ctrl_MemToReg_out = io_ID_EX_ctrl_MemToReg; // @[Execute.scala 141:24]
+ assign io_func3_out = io_ID_EX_func3; // @[Execute.scala 135:16]
+ assign io_csr_data_o = io_ID_EX_csr_data; // @[Execute.scala 144:17]
+ assign forwardUnit_io_EX_MEM_REGRD = io_EX_MEM_rd_sel; // @[Execute.scala 63:31]
+ assign forwardUnit_io_MEM_WB_REGRD = io_MEM_WB_rd_sel; // @[Execute.scala 64:31]
+ assign forwardUnit_io_ID_EX_REGRS1 = io_ID_EX_rs1_sel; // @[Execute.scala 65:31]
+ assign forwardUnit_io_ID_EX_REGRS2 = io_ID_EX_rs2_sel; // @[Execute.scala 66:31]
+ assign forwardUnit_io_ID_EX_inst_op = io_ID_EX_inst_op; // @[Execute.scala 62:32]
+ assign forwardUnit_io_EX_MEM_REGWR = io_EX_MEM_ctrl_RegWr; // @[Execute.scala 67:31]
+ assign forwardUnit_io_MEM_WB_REGWR = io_MEM_WB_ctrl_RegWr; // @[Execute.scala 68:31]
+ assign alu_io_oper_a = _T ? $signed(io_ID_EX_pc4) : $signed(_GEN_3); // @[Execute.scala 72:19 Execute.scala 76:21 Execute.scala 80:21 Execute.scala 82:21 Execute.scala 84:21 Execute.scala 86:21]
+ assign alu_io_oper_b = io_ID_EX_ctrl_OpB_sel ? $signed(io_ID_EX_imm) : $signed(_GEN_7); // @[Execute.scala 92:19 Execute.scala 106:21 Execute.scala 109:21 Execute.scala 112:21 Execute.scala 115:21]
+ assign alu_io_aluCtrl = alu_control_io_output; // @[Execute.scala 127:18]
+ assign alu_control_io_aluOp = io_ID_EX_ctrl_AluOp; // @[Execute.scala 121:24]
+ assign alu_control_io_func7 = io_ID_EX_func7; // @[Execute.scala 122:24]
+ assign alu_control_io_func3 = io_ID_EX_func3; // @[Execute.scala 123:24]
+endmodule
+module Load_unit(
+ input [2:0] io_func3,
+ input [1:0] io_data_offset,
+ input [31:0] io_memData,
+ output [31:0] io_LoadData
+);
+ wire [7:0] lb = io_memData[7:0]; // @[Load_unit.scala 13:24]
+ wire [15:0] lh = io_memData[15:0]; // @[Load_unit.scala 14:24]
+ wire _T = io_func3 == 3'h0; // @[Load_unit.scala 26:23]
+ wire _T_1 = io_data_offset == 2'h0; // @[Load_unit.scala 28:33]
+ wire [23:0] _T_4 = io_memData[7] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_7 = {_T_4,lb}; // @[Load_unit.scala 30:76]
+ wire _T_8 = io_data_offset == 2'h1; // @[Load_unit.scala 31:40]
+ wire [23:0] _T_11 = io_memData[15] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_14 = {_T_11,io_memData[15:8]}; // @[Load_unit.scala 33:85]
+ wire _T_15 = io_data_offset == 2'h2; // @[Load_unit.scala 34:40]
+ wire [23:0] _T_18 = io_memData[23] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_21 = {_T_18,io_memData[23:16]}; // @[Load_unit.scala 36:86]
+ wire [23:0] _T_25 = io_memData[31] ? 24'hffffff : 24'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_28 = {_T_25,io_memData[31:24]}; // @[Load_unit.scala 39:86]
+ wire [31:0] _GEN_1 = _T_15 ? $signed(_T_21) : $signed(_T_28); // @[Load_unit.scala 34:53]
+ wire [31:0] _GEN_2 = _T_8 ? $signed(_T_14) : $signed(_GEN_1); // @[Load_unit.scala 31:53]
+ wire [31:0] _GEN_3 = _T_1 ? $signed(_T_7) : $signed(_GEN_2); // @[Load_unit.scala 28:46]
+ wire _T_29 = io_func3 == 3'h1; // @[Load_unit.scala 44:30]
+ wire [15:0] _T_33 = io_memData[15] ? 16'hffff : 16'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_36 = {_T_33,lh}; // @[Load_unit.scala 48:78]
+ wire [15:0] _T_40 = io_memData[23] ? 16'hffff : 16'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_43 = {_T_40,io_memData[23:8]}; // @[Load_unit.scala 51:85]
+ wire [15:0] _T_47 = io_memData[31] ? 16'hffff : 16'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_50 = {_T_47,io_memData[31:16]}; // @[Load_unit.scala 54:86]
+ wire [31:0] _T_55 = {24'h0,io_memData[31:24]}; // @[Load_unit.scala 63:75]
+ wire [31:0] _GEN_5 = _T_15 ? $signed(_T_50) : $signed(_T_55); // @[Load_unit.scala 52:53]
+ wire [31:0] _GEN_6 = _T_8 ? $signed(_T_43) : $signed(_GEN_5); // @[Load_unit.scala 49:53]
+ wire [31:0] _GEN_7 = _T_1 ? $signed(_T_36) : $signed(_GEN_6); // @[Load_unit.scala 46:46]
+ wire _T_56 = io_func3 == 3'h6; // @[Load_unit.scala 68:30]
+ wire _T_57 = io_func3 == 3'h4; // @[Load_unit.scala 74:30]
+ wire [31:0] _T_62 = {24'h0,lb}; // @[Load_unit.scala 78:66]
+ wire [31:0] _T_67 = {24'h0,io_memData[15:8]}; // @[Load_unit.scala 81:74]
+ wire [31:0] _T_72 = {24'h0,io_memData[23:16]}; // @[Load_unit.scala 84:75]
+ wire [31:0] _GEN_9 = _T_15 ? $signed(_T_72) : $signed(_T_55); // @[Load_unit.scala 82:53]
+ wire [31:0] _GEN_10 = _T_8 ? $signed(_T_67) : $signed(_GEN_9); // @[Load_unit.scala 79:53]
+ wire [31:0] _GEN_11 = _T_1 ? $signed(_T_62) : $signed(_GEN_10); // @[Load_unit.scala 76:46]
+ wire _T_78 = io_func3 == 3'h5; // @[Load_unit.scala 92:30]
+ wire [31:0] _T_83 = {16'h0,lh}; // @[Load_unit.scala 96:68]
+ wire [31:0] _T_88 = {16'h0,io_memData[23:8]}; // @[Load_unit.scala 99:74]
+ wire [31:0] _T_93 = {16'h0,io_memData[31:16]}; // @[Load_unit.scala 102:75]
+ wire [31:0] _GEN_13 = _T_15 ? $signed(_T_93) : $signed(_T_55); // @[Load_unit.scala 100:53]
+ wire [31:0] _GEN_14 = _T_8 ? $signed(_T_88) : $signed(_GEN_13); // @[Load_unit.scala 97:53]
+ wire [31:0] _GEN_15 = _T_1 ? $signed(_T_83) : $signed(_GEN_14); // @[Load_unit.scala 94:46]
+ wire [31:0] _T_107 = {8'h0,io_memData[31:8]}; // @[Load_unit.scala 130:73]
+ wire [31:0] _GEN_18 = _T_8 ? $signed(_T_107) : $signed(_GEN_13); // @[Load_unit.scala 121:53]
+ wire [31:0] _GEN_19 = _T_1 ? $signed(io_memData) : $signed(_GEN_18); // @[Load_unit.scala 118:46]
+ wire [31:0] _GEN_21 = _T_78 ? $signed(_GEN_15) : $signed(_GEN_19); // @[Load_unit.scala 92:44]
+ wire [31:0] _GEN_22 = _T_57 ? $signed(_GEN_11) : $signed(_GEN_21); // @[Load_unit.scala 74:44]
+ wire [31:0] _GEN_23 = _T_56 ? $signed(io_memData) : $signed(_GEN_22); // @[Load_unit.scala 68:44]
+ wire [31:0] _GEN_24 = _T_29 ? $signed(_GEN_7) : $signed(_GEN_23); // @[Load_unit.scala 44:44]
+ assign io_LoadData = _T ? $signed(_GEN_3) : $signed(_GEN_24); // @[Load_unit.scala 30:29 Load_unit.scala 33:29 Load_unit.scala 36:29 Load_unit.scala 39:29 Load_unit.scala 48:29 Load_unit.scala 51:29 Load_unit.scala 54:29 Load_unit.scala 63:29 Load_unit.scala 73:25 Load_unit.scala 78:29 Load_unit.scala 81:29 Load_unit.scala 84:29 Load_unit.scala 87:29 Load_unit.scala 96:29 Load_unit.scala 99:29 Load_unit.scala 102:29 Load_unit.scala 111:29 Load_unit.scala 120:29 Load_unit.scala 130:29 Load_unit.scala 137:29 Load_unit.scala 144:29]
+endmodule
+module MemoryStage(
+ input [31:0] io_EX_MEM_alu_output,
+ input [4:0] io_EX_MEM_rd_sel,
+ input io_EX_MEM_RegWr,
+ input io_EX_MEM_CsrWe,
+ input io_EX_MEM_MemRd,
+ input io_EX_MEM_MemToReg,
+ input io_EX_MEM_MemWr,
+ input [31:0] io_EX_MEM_rs2,
+ input [2:0] io_func3,
+ input [31:0] io_EX_MEM_csr_data,
+ input io_data_gnt_i,
+ input io_data_rvalid_i,
+ input [31:0] io_data_rdata_i,
+ output io_data_req_o,
+ output io_data_be_o_0,
+ output io_data_be_o_1,
+ output io_data_be_o_2,
+ output io_data_be_o_3,
+ output io_ctrl_MemWr_out,
+ output [7:0] io_data_wdata_o_0,
+ output [7:0] io_data_wdata_o_1,
+ output [7:0] io_data_wdata_o_2,
+ output [7:0] io_data_wdata_o_3,
+ output [31:0] io_memAddress,
+ output [31:0] io_data_out,
+ output [31:0] io_alu_output,
+ output [4:0] io_rd_sel_out,
+ output io_ctrl_RegWr_out,
+ output io_ctrl_CsrWen_out,
+ output io_ctrl_MemRd_out,
+ output io_ctrl_MemToReg_out,
+ output [31:0] io_csr_data_out,
+ output io_stall
+);
+ wire [2:0] load_unit_io_func3; // @[MemoryStage.scala 45:25]
+ wire [1:0] load_unit_io_data_offset; // @[MemoryStage.scala 45:25]
+ wire [31:0] load_unit_io_memData; // @[MemoryStage.scala 45:25]
+ wire [31:0] load_unit_io_LoadData; // @[MemoryStage.scala 45:25]
+ wire [1:0] data_offset = io_EX_MEM_alu_output[1:0]; // @[MemoryStage.scala 47:41]
+ wire _T_2 = io_EX_MEM_MemWr | io_EX_MEM_MemRd; // @[MemoryStage.scala 55:40]
+ wire _T_3 = ~io_data_rvalid_i; // @[MemoryStage.scala 55:71]
+ wire _T_5 = io_func3 == 3'h2; // @[MemoryStage.scala 81:17]
+ wire _T_7 = _T_5 & io_EX_MEM_MemWr; // @[MemoryStage.scala 81:30]
+ wire _T_8 = data_offset == 2'h0; // @[MemoryStage.scala 83:22]
+ wire _T_9 = data_offset == 2'h1; // @[MemoryStage.scala 89:29]
+ wire _T_10 = data_offset == 2'h2; // @[MemoryStage.scala 96:29]
+ wire _T_11 = data_offset == 2'h3; // @[MemoryStage.scala 105:29]
+ wire _GEN_0 = _T_11 ? 1'h0 : 1'h1; // @[MemoryStage.scala 105:42]
+ wire _GEN_2 = _T_10 ? 1'h0 : _GEN_0; // @[MemoryStage.scala 96:42]
+ wire _GEN_3 = _T_10 | _GEN_0; // @[MemoryStage.scala 96:42]
+ wire _GEN_5 = _T_9 ? 1'h0 : _GEN_2; // @[MemoryStage.scala 89:42]
+ wire _GEN_6 = _T_9 | _GEN_2; // @[MemoryStage.scala 89:42]
+ wire _GEN_7 = _T_9 | _GEN_3; // @[MemoryStage.scala 89:42]
+ wire _GEN_9 = _T_8 | _GEN_5; // @[MemoryStage.scala 83:35]
+ wire _GEN_10 = _T_8 | _GEN_6; // @[MemoryStage.scala 83:35]
+ wire _GEN_11 = _T_8 | _GEN_7; // @[MemoryStage.scala 83:35]
+ wire _T_12 = io_func3 == 3'h1; // @[MemoryStage.scala 118:24]
+ wire _T_14 = _T_12 & io_EX_MEM_MemWr; // @[MemoryStage.scala 118:37]
+ wire _GEN_21 = _T_9 ? 1'h0 : 1'h1; // @[MemoryStage.scala 129:42]
+ wire _GEN_24 = _T_8 ? 1'h0 : _GEN_7; // @[MemoryStage.scala 120:35]
+ wire _GEN_25 = _T_8 ? 1'h0 : _GEN_21; // @[MemoryStage.scala 120:35]
+ wire _GEN_30 = _T_10 ? 1'h0 : 1'h1; // @[MemoryStage.scala 175:42]
+ wire _GEN_33 = _T_9 ? 1'h0 : _GEN_3; // @[MemoryStage.scala 167:42]
+ wire _GEN_34 = _T_9 ? 1'h0 : _GEN_30; // @[MemoryStage.scala 167:42]
+ wire _GEN_36 = _T_8 ? 1'h0 : _GEN_6; // @[MemoryStage.scala 160:35]
+ wire _GEN_37 = _T_8 ? 1'h0 : _GEN_33; // @[MemoryStage.scala 160:35]
+ wire _GEN_38 = _T_8 ? 1'h0 : _GEN_34; // @[MemoryStage.scala 160:35]
+ wire _GEN_43 = _T_14 ? _GEN_9 : _GEN_9; // @[MemoryStage.scala 118:65]
+ wire _GEN_44 = _T_14 ? _GEN_10 : _GEN_36; // @[MemoryStage.scala 118:65]
+ wire _GEN_45 = _T_14 ? _GEN_24 : _GEN_37; // @[MemoryStage.scala 118:65]
+ wire _GEN_46 = _T_14 ? _GEN_25 : _GEN_38; // @[MemoryStage.scala 118:65]
+ wire [7:0] _T_28 = io_EX_MEM_rs2[7:0]; // @[MemoryStage.scala 207:47]
+ wire [7:0] _T_30 = io_EX_MEM_rs2[15:8]; // @[MemoryStage.scala 208:48]
+ wire [7:0] _T_32 = io_EX_MEM_rs2[23:16]; // @[MemoryStage.scala 209:49]
+ wire [7:0] _T_34 = io_EX_MEM_rs2[31:24]; // @[MemoryStage.scala 210:49]
+ wire [7:0] _GEN_51 = _T_11 ? $signed(_T_34) : $signed(_T_28); // @[MemoryStage.scala 221:40]
+ wire [7:0] _GEN_52 = _T_11 ? $signed(_T_32) : $signed(_T_30); // @[MemoryStage.scala 221:40]
+ wire [7:0] _GEN_53 = _T_11 ? $signed(_T_30) : $signed(_T_32); // @[MemoryStage.scala 221:40]
+ wire [7:0] _GEN_54 = _T_11 ? $signed(_T_28) : $signed(_T_34); // @[MemoryStage.scala 221:40]
+ wire [7:0] _GEN_55 = _T_10 ? $signed(_T_34) : $signed(_GEN_51); // @[MemoryStage.scala 216:40]
+ wire [7:0] _GEN_56 = _T_10 ? $signed(_T_32) : $signed(_GEN_52); // @[MemoryStage.scala 216:40]
+ wire [7:0] _GEN_57 = _T_10 ? $signed(_T_28) : $signed(_GEN_53); // @[MemoryStage.scala 216:40]
+ wire [7:0] _GEN_58 = _T_10 ? $signed(_T_30) : $signed(_GEN_54); // @[MemoryStage.scala 216:40]
+ wire [7:0] _GEN_59 = _T_9 ? $signed(_T_34) : $signed(_GEN_55); // @[MemoryStage.scala 211:40]
+ wire [7:0] _GEN_60 = _T_9 ? $signed(_T_28) : $signed(_GEN_56); // @[MemoryStage.scala 211:40]
+ wire [7:0] _GEN_61 = _T_9 ? $signed(_T_30) : $signed(_GEN_57); // @[MemoryStage.scala 211:40]
+ wire [7:0] _GEN_62 = _T_9 ? $signed(_T_32) : $signed(_GEN_58); // @[MemoryStage.scala 211:40]
+ wire _T_71 = io_data_gnt_i & io_EX_MEM_MemWr; // @[MemoryStage.scala 241:22]
+ wire _T_73 = io_data_gnt_i & io_EX_MEM_MemRd; // @[MemoryStage.scala 246:29]
+ Load_unit load_unit ( // @[MemoryStage.scala 45:25]
+ .io_func3(load_unit_io_func3),
+ .io_data_offset(load_unit_io_data_offset),
+ .io_memData(load_unit_io_memData),
+ .io_LoadData(load_unit_io_LoadData)
+ );
+ assign io_data_req_o = _T_71 | _T_73; // @[MemoryStage.scala 243:19 MemoryStage.scala 247:19 MemoryStage.scala 252:21]
+ assign io_data_be_o_0 = _T_7 ? _GEN_9 : _GEN_43; // @[MemoryStage.scala 86:25 MemoryStage.scala 91:23 MemoryStage.scala 99:25 MemoryStage.scala 108:25 MemoryStage.scala 114:25 MemoryStage.scala 123:25 MemoryStage.scala 131:23 MemoryStage.scala 140:25 MemoryStage.scala 149:25 MemoryStage.scala 155:25 MemoryStage.scala 162:23 MemoryStage.scala 169:23 MemoryStage.scala 178:25 MemoryStage.scala 186:25 MemoryStage.scala 192:25]
+ assign io_data_be_o_1 = _T_7 ? _GEN_10 : _GEN_44; // @[MemoryStage.scala 86:25 MemoryStage.scala 93:25 MemoryStage.scala 99:25 MemoryStage.scala 108:25 MemoryStage.scala 114:25 MemoryStage.scala 123:25 MemoryStage.scala 133:25 MemoryStage.scala 140:25 MemoryStage.scala 149:25 MemoryStage.scala 155:25 MemoryStage.scala 164:25 MemoryStage.scala 170:23 MemoryStage.scala 178:25 MemoryStage.scala 186:25 MemoryStage.scala 192:25]
+ assign io_data_be_o_2 = _T_7 ? _GEN_11 : _GEN_45; // @[MemoryStage.scala 86:25 MemoryStage.scala 93:25 MemoryStage.scala 102:25 MemoryStage.scala 108:25 MemoryStage.scala 114:25 MemoryStage.scala 126:25 MemoryStage.scala 133:25 MemoryStage.scala 143:25 MemoryStage.scala 149:25 MemoryStage.scala 155:25 MemoryStage.scala 164:25 MemoryStage.scala 172:25 MemoryStage.scala 180:23 MemoryStage.scala 186:25 MemoryStage.scala 192:25]
+ assign io_data_be_o_3 = _T_7 | _GEN_46; // @[MemoryStage.scala 86:25 MemoryStage.scala 93:25 MemoryStage.scala 102:25 MemoryStage.scala 110:23 MemoryStage.scala 114:25 MemoryStage.scala 126:25 MemoryStage.scala 135:23 MemoryStage.scala 143:25 MemoryStage.scala 151:23 MemoryStage.scala 155:25 MemoryStage.scala 164:25 MemoryStage.scala 172:25 MemoryStage.scala 181:23 MemoryStage.scala 188:23 MemoryStage.scala 192:25]
+ assign io_ctrl_MemWr_out = io_EX_MEM_MemWr; // @[MemoryStage.scala 284:21]
+ assign io_data_wdata_o_0 = _T_8 ? $signed(_T_28) : $signed(_GEN_59); // @[MemoryStage.scala 245:21]
+ assign io_data_wdata_o_1 = _T_8 ? $signed(_T_30) : $signed(_GEN_60); // @[MemoryStage.scala 245:21]
+ assign io_data_wdata_o_2 = _T_8 ? $signed(_T_32) : $signed(_GEN_61); // @[MemoryStage.scala 245:21]
+ assign io_data_wdata_o_3 = _T_8 ? $signed(_T_34) : $signed(_GEN_62); // @[MemoryStage.scala 245:21]
+ assign io_memAddress = io_EX_MEM_alu_output; // @[MemoryStage.scala 240:17]
+ assign io_data_out = load_unit_io_LoadData; // @[MemoryStage.scala 269:21]
+ assign io_alu_output = io_EX_MEM_alu_output; // @[MemoryStage.scala 285:17]
+ assign io_rd_sel_out = io_EX_MEM_rd_sel; // @[MemoryStage.scala 287:17]
+ assign io_ctrl_RegWr_out = io_EX_MEM_RegWr; // @[MemoryStage.scala 288:21]
+ assign io_ctrl_CsrWen_out = io_EX_MEM_CsrWe; // @[MemoryStage.scala 289:22]
+ assign io_ctrl_MemRd_out = io_EX_MEM_MemRd; // @[MemoryStage.scala 290:21]
+ assign io_ctrl_MemToReg_out = io_EX_MEM_MemToReg; // @[MemoryStage.scala 291:24]
+ assign io_csr_data_out = io_EX_MEM_csr_data; // @[MemoryStage.scala 294:19]
+ assign io_stall = _T_2 & _T_3; // @[MemoryStage.scala 55:12]
+ assign load_unit_io_func3 = io_func3; // @[MemoryStage.scala 60:22]
+ assign load_unit_io_data_offset = io_EX_MEM_alu_output[1:0]; // @[MemoryStage.scala 62:28]
+ assign load_unit_io_memData = io_data_rdata_i; // @[MemoryStage.scala 61:24]
+endmodule
+module WriteBack(
+ input io_MEM_WB_MemToReg,
+ input [31:0] io_MEM_WB_dataMem_data,
+ input [31:0] io_MEM_WB_alu_output,
+ output [31:0] io_write_data
+);
+ assign io_write_data = io_MEM_WB_MemToReg ? $signed(io_MEM_WB_dataMem_data) : $signed(io_MEM_WB_alu_output); // @[WriteBack.scala 14:23 WriteBack.scala 16:23]
+endmodule
+module Core(
+ input clock,
+ input reset,
+ input io_data_gnt_i,
+ input io_data_rvalid_i,
+ input [31:0] io_data_rdata_i,
+ output io_data_req_o,
+ output io_data_we_o,
+ output io_data_be_o_0,
+ output io_data_be_o_1,
+ output io_data_be_o_2,
+ output io_data_be_o_3,
+ output [31:0] io_data_addr_o,
+ output [7:0] io_data_wdata_o_0,
+ output [7:0] io_data_wdata_o_1,
+ output [7:0] io_data_wdata_o_2,
+ output [7:0] io_data_wdata_o_3,
+ input io_instr_gnt_i,
+ input io_instr_rvalid_i,
+ input [31:0] io_instr_rdata_i,
+ output io_instr_req_o,
+ output [31:0] io_instr_addr_o,
+ input io_stall_core_i,
+ input io_irq_external_i
+);
+ //wire ID_EX_clock; // @[Core.scala 69:37]
+ // wire ID_EXreset; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_pc_in; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_pc4_in; // @[Core.scala 69:37]
+ wire [4:0] ID_EX_io_rs1_sel_in; // @[Core.scala 69:37]
+ wire [4:0] ID_EX_io_rs2_sel_in; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_rs1_in; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_rs2_in; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_imm; // @[Core.scala 69:37]
+ wire [4:0] ID_EX_io_rd_sel_in; // @[Core.scala 69:37]
+ wire [2:0] ID_EX_io_func3_in; // @[Core.scala 69:37]
+ wire [6:0] ID_EX_io_func7_in; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_MemWr_in; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_MemRd_in; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_CsrWen_in; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_RegWr_in; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_MemToReg_in; // @[Core.scala 69:37]
+ wire [3:0] ID_EX_io_ctrl_AluOp_in; // @[Core.scala 69:37]
+ wire [1:0] ID_EX_io_ctrl_OpA_sel_in; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_OpB_sel_in; // @[Core.scala 69:37]
+ wire [6:0] ID_EX_io_inst_op_in; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_csr_data_i; // @[Core.scala 69:37]
+ wire ID_EX_io_stall; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_pc_out; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_pc4_out; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_rs1_out; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_rs2_out; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_imm_out; // @[Core.scala 69:37]
+ wire [2:0] ID_EX_io_func3_out; // @[Core.scala 69:37]
+ wire [6:0] ID_EX_io_func7_out; // @[Core.scala 69:37]
+ wire [6:0] ID_EX_io_inst_op_out; // @[Core.scala 69:37]
+ wire [4:0] ID_EX_io_rd_sel_out; // @[Core.scala 69:37]
+ wire [4:0] ID_EX_io_rs1_sel_out; // @[Core.scala 69:37]
+ wire [4:0] ID_EX_io_rs2_sel_out; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_MemWr_out; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_MemRd_out; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_RegWr_out; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_CsrWen_out; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_MemToReg_out; // @[Core.scala 69:37]
+ wire [3:0] ID_EX_io_ctrl_AluOp_out; // @[Core.scala 69:37]
+ wire [1:0] ID_EX_io_ctrl_OpA_sel_out; // @[Core.scala 69:37]
+ wire ID_EX_io_ctrl_OpB_sel_out; // @[Core.scala 69:37]
+ wire [31:0] ID_EX_io_csr_data_o; // @[Core.scala 69:37]
+ //wire EX_MEM_clock; // @[Core.scala 70:37]
+ // wire EX_MEMreset; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_MemWr_in; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_MemRd_in; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_RegWr_in; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_CsrWen_in; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_MemToReg_in; // @[Core.scala 70:37]
+ wire [31:0] EX_MEM_io_rs2_in; // @[Core.scala 70:37]
+ wire [4:0] EX_MEM_io_rd_sel_in; // @[Core.scala 70:37]
+ wire [31:0] EX_MEM_io_alu_in; // @[Core.scala 70:37]
+ wire [2:0] EX_MEM_io_EX_MEM_func3; // @[Core.scala 70:37]
+ wire [31:0] EX_MEM_io_csr_data_i; // @[Core.scala 70:37]
+ wire EX_MEM_io_stall; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_MemWr_out; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_MemRd_out; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_RegWr_out; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_CsrWen_out; // @[Core.scala 70:37]
+ wire EX_MEM_io_ctrl_MemToReg_out; // @[Core.scala 70:37]
+ wire [31:0] EX_MEM_io_rs2_out; // @[Core.scala 70:37]
+ wire [4:0] EX_MEM_io_rd_sel_out; // @[Core.scala 70:37]
+ wire [31:0] EX_MEM_io_alu_output; // @[Core.scala 70:37]
+ wire [2:0] EX_MEM_io_EX_MEM_func3_out; // @[Core.scala 70:37]
+ wire [31:0] EX_MEM_io_csr_data_o; // @[Core.scala 70:37]
+ //wire MEM_WB_clock; // @[Core.scala 71:37]
+ // wire MEM_WBreset; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_RegWr_in; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_CsrWen_in; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_MemToReg_in; // @[Core.scala 71:37]
+ wire [4:0] MEM_WB_io_rd_sel_in; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_MemRd_in; // @[Core.scala 71:37]
+ wire [31:0] MEM_WB_io_dmem_data_in; // @[Core.scala 71:37]
+ wire [31:0] MEM_WB_io_alu_in; // @[Core.scala 71:37]
+ wire [31:0] MEM_WB_io_csr_data_in; // @[Core.scala 71:37]
+ wire MEM_WB_io_stall; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_RegWr_out; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_CsrWen_out; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_MemToReg_out; // @[Core.scala 71:37]
+ wire MEM_WB_io_ctrl_MemRd_out; // @[Core.scala 71:37]
+ wire [4:0] MEM_WB_io_rd_sel_out; // @[Core.scala 71:37]
+ wire [31:0] MEM_WB_io_dmem_data_out; // @[Core.scala 71:37]
+ wire [31:0] MEM_WB_io_alu_output; // @[Core.scala 71:37]
+ wire [31:0] MEM_WB_io_csr_data_out; // @[Core.scala 71:37]
+ //wire fetch_clock; // @[Core.scala 72:37]
+ // wire fetchreset; // @[Core.scala 72:37]
+ wire fetch_io_core_instr_gnt_i; // @[Core.scala 72:37]
+ wire fetch_io_core_instr_rvalid_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_core_instr_rdata_i; // @[Core.scala 72:37]
+ wire fetch_io_csrRegFile_irq_pending_i; // @[Core.scala 72:37]
+ wire fetch_io_csrRegFile_csr_mstatus_mie_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_csrRegFile_csr_mtvec_i; // @[Core.scala 72:37]
+ wire fetch_io_csrRegFile_csr_mtvec_init_o; // @[Core.scala 72:37]
+ wire fetch_io_csrRegFile_csr_save_cause_o; // @[Core.scala 72:37]
+ wire fetch_io_csrRegFile_csr_save_if_o; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_csrRegFile_csr_if_pc_o; // @[Core.scala 72:37]
+ wire [5:0] fetch_io_csrRegFile_exc_cause_o; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_csrRegFile_csr_mepc_i; // @[Core.scala 72:37]
+ wire fetch_io_core_init_mtvec_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_sb_imm_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_uj_imm_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_jalr_imm_i; // @[Core.scala 72:37]
+ wire [1:0] fetch_io_decode_ctrl_next_pc_sel_i; // @[Core.scala 72:37]
+ wire fetch_io_decode_ctrl_out_branch_i; // @[Core.scala 72:37]
+ wire fetch_io_decode_branchLogic_output_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_hazardDetection_pc_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_hazardDetection_inst_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_hazardDetection_current_pc_i; // @[Core.scala 72:37]
+ wire fetch_io_decode_hazardDetection_pc_forward_i; // @[Core.scala 72:37]
+ wire fetch_io_decode_hazardDetection_inst_forward_i; // @[Core.scala 72:37]
+ wire fetch_io_decode_mret_inst_i; // @[Core.scala 72:37]
+ wire fetch_io_core_stall_i; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_core_instr_addr_o; // @[Core.scala 72:37]
+ wire fetch_io_core_instr_req_o; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_if_id_pc_o; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_if_id_pc4_o; // @[Core.scala 72:37]
+ wire [31:0] fetch_io_decode_if_id_inst_o; // @[Core.scala 72:37]
+ //wire decode_clock; // @[Core.scala 73:37]
+ // wire decodereset; // @[Core.scala 73:37]
+ wire decode_io_irq_external_i; // @[Core.scala 73:37]
+ wire [31:0] decode_io_IF_ID_inst; // @[Core.scala 73:37]
+ wire [31:0] decode_io_IF_ID_pc; // @[Core.scala 73:37]
+ wire [31:0] decode_io_IF_ID_pc4; // @[Core.scala 73:37]
+ wire decode_io_MEM_WB_ctrl_regWr; // @[Core.scala 73:37]
+ wire decode_io_MEM_WB_ctrl_csrWen; // @[Core.scala 73:37]
+ wire [4:0] decode_io_MEM_WB_rd_sel; // @[Core.scala 73:37]
+ wire decode_io_ID_EX_ctrl_MemRd; // @[Core.scala 73:37]
+ wire decode_io_ID_EX_ctrl_regWr; // @[Core.scala 73:37]
+ wire decode_io_ID_EX_ctrl_csrWen; // @[Core.scala 73:37]
+ wire decode_io_EX_MEM_ctrl_csrWen; // @[Core.scala 73:37]
+ wire [4:0] decode_io_ID_EX_rd_sel; // @[Core.scala 73:37]
+ wire [4:0] decode_io_EX_MEM_rd_sel; // @[Core.scala 73:37]
+ wire decode_io_EX_MEM_ctrl_MemRd; // @[Core.scala 73:37]
+ wire decode_io_EX_MEM_ctrl_regWr; // @[Core.scala 73:37]
+ wire decode_io_MEM_WB_ctrl_MemRd; // @[Core.scala 73:37]
+ wire [31:0] decode_io_alu_output; // @[Core.scala 73:37]
+ wire [31:0] decode_io_EX_MEM_alu_output; // @[Core.scala 73:37]
+ wire [31:0] decode_io_dmem_memOut; // @[Core.scala 73:37]
+ wire decode_io_dccm_rvalid_i; // @[Core.scala 73:37]
+ wire [31:0] decode_io_writeback_write_data; // @[Core.scala 73:37]
+ wire [31:0] decode_io_MEM_WB_csr_rdata_i; // @[Core.scala 73:37]
+ wire [31:0] decode_io_EX_MEM_csr_rdata_i; // @[Core.scala 73:37]
+ wire [31:0] decode_io_ID_EX_csr_rdata_i; // @[Core.scala 73:37]
+ wire decode_io_fetch_csr_mtvec_init; // @[Core.scala 73:37]
+ wire [31:0] decode_io_fetch_csr_if_pc; // @[Core.scala 73:37]
+ wire decode_io_fetch_csr_save_if; // @[Core.scala 73:37]
+ wire [5:0] decode_io_fetch_exc_cause_i; // @[Core.scala 73:37]
+ wire decode_io_fetch_csr_save_cause_i; // @[Core.scala 73:37]
+ wire decode_io_execute_regwrite; // @[Core.scala 73:37]
+ wire decode_io_mem_regwrite; // @[Core.scala 73:37]
+ wire decode_io_wb_regwrite; // @[Core.scala 73:37]
+ wire [31:0] decode_io_pc_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_pc4_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_inst_op_out; // @[Core.scala 73:37]
+ wire [2:0] decode_io_func3_out; // @[Core.scala 73:37]
+ wire [6:0] decode_io_func7_out; // @[Core.scala 73:37]
+ wire [4:0] decode_io_rd_sel_out; // @[Core.scala 73:37]
+ wire [4:0] decode_io_rs1_sel_out; // @[Core.scala 73:37]
+ wire [4:0] decode_io_rs2_sel_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_rs1_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_rs2_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_csr_rdata_o; // @[Core.scala 73:37]
+ wire [31:0] decode_io_imm_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_sb_imm; // @[Core.scala 73:37]
+ wire [31:0] decode_io_uj_imm; // @[Core.scala 73:37]
+ wire [31:0] decode_io_jalr_output; // @[Core.scala 73:37]
+ wire decode_io_branchLogic_output; // @[Core.scala 73:37]
+ wire [31:0] decode_io_hazardDetection_pc_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_hazardDetection_inst_out; // @[Core.scala 73:37]
+ wire [31:0] decode_io_hazardDetection_current_pc_out; // @[Core.scala 73:37]
+ wire decode_io_hazardDetection_pc_forward; // @[Core.scala 73:37]
+ wire decode_io_hazardDetection_inst_forward; // @[Core.scala 73:37]
+ wire decode_io_ctrl_MemWr_out; // @[Core.scala 73:37]
+ wire decode_io_ctrl_MemRd_out; // @[Core.scala 73:37]
+ wire decode_io_ctrl_Branch_out; // @[Core.scala 73:37]
+ wire decode_io_ctrl_RegWr_out; // @[Core.scala 73:37]
+ wire decode_io_ctrl_CsrWen_out; // @[Core.scala 73:37]
+ wire decode_io_ctrl_MemToReg_out; // @[Core.scala 73:37]
+ wire [3:0] decode_io_ctrl_AluOp_out; // @[Core.scala 73:37]
+ wire [1:0] decode_io_ctrl_OpA_sel_out; // @[Core.scala 73:37]
+ wire decode_io_ctrl_OpB_sel_out; // @[Core.scala 73:37]
+ wire [1:0] decode_io_ctrl_next_pc_sel_out; // @[Core.scala 73:37]
+ wire decode_io_fetch_irq_pending_o; // @[Core.scala 73:37]
+ wire decode_io_fetch_csr_mstatus_mie_o; // @[Core.scala 73:37]
+ wire [31:0] decode_io_fetch_csr_mtvec_o; // @[Core.scala 73:37]
+ wire [31:0] decode_io_fetch_csr_mepc_o; // @[Core.scala 73:37]
+ wire decode_io_fetch_mret_inst_o; // @[Core.scala 73:37]
+ wire [4:0] execute_io_EX_MEM_rd_sel; // @[Core.scala 74:37]
+ wire [4:0] execute_io_MEM_WB_rd_sel; // @[Core.scala 74:37]
+ wire [4:0] execute_io_ID_EX_rs1_sel; // @[Core.scala 74:37]
+ wire [4:0] execute_io_ID_EX_rs2_sel; // @[Core.scala 74:37]
+ wire execute_io_EX_MEM_ctrl_RegWr; // @[Core.scala 74:37]
+ wire execute_io_EX_MEM_ctrl_csrWen; // @[Core.scala 74:37]
+ wire execute_io_MEM_WB_ctrl_csrWen; // @[Core.scala 74:37]
+ wire execute_io_MEM_WB_ctrl_RegWr; // @[Core.scala 74:37]
+ wire [1:0] execute_io_ID_EX_ctrl_OpA_sel; // @[Core.scala 74:37]
+ wire execute_io_ID_EX_ctrl_OpB_sel; // @[Core.scala 74:37]
+ wire [31:0] execute_io_ID_EX_pc4; // @[Core.scala 74:37]
+ wire [31:0] execute_io_ID_EX_pc_out; // @[Core.scala 74:37]
+ wire [31:0] execute_io_ID_EX_rs1; // @[Core.scala 74:37]
+ wire [31:0] execute_io_ID_EX_rs2; // @[Core.scala 74:37]
+ wire [31:0] execute_io_ID_EX_csr_data; // @[Core.scala 74:37]
+ wire [31:0] execute_io_EX_MEM_alu_output; // @[Core.scala 74:37]
+ wire [31:0] execute_io_EX_MEM_csr_rdata; // @[Core.scala 74:37]
+ wire [31:0] execute_io_MEM_WB_csr_rdata; // @[Core.scala 74:37]
+ wire [31:0] execute_io_writeback_write_data; // @[Core.scala 74:37]
+ wire [31:0] execute_io_ID_EX_imm; // @[Core.scala 74:37]
+ wire [3:0] execute_io_ID_EX_ctrl_AluOp; // @[Core.scala 74:37]
+ wire [6:0] execute_io_ID_EX_func7; // @[Core.scala 74:37]
+ wire [6:0] execute_io_ID_EX_inst_op; // @[Core.scala 74:37]
+ wire [2:0] execute_io_ID_EX_func3; // @[Core.scala 74:37]
+ wire [4:0] execute_io_ID_EX_rd_sel; // @[Core.scala 74:37]
+ wire execute_io_ID_EX_ctrl_MemWr; // @[Core.scala 74:37]
+ wire execute_io_ID_EX_ctrl_MemRd; // @[Core.scala 74:37]
+ wire execute_io_ID_EX_ctrl_RegWr; // @[Core.scala 74:37]
+ wire execute_io_ID_EX_ctrl_CsrWen; // @[Core.scala 74:37]
+ wire execute_io_ID_EX_ctrl_MemToReg; // @[Core.scala 74:37]
+ wire [31:0] execute_io_rs2_out; // @[Core.scala 74:37]
+ wire [31:0] execute_io_alu_output; // @[Core.scala 74:37]
+ wire [4:0] execute_io_rd_sel_out; // @[Core.scala 74:37]
+ wire execute_io_ctrl_MemWr_out; // @[Core.scala 74:37]
+ wire execute_io_ctrl_MemRd_out; // @[Core.scala 74:37]
+ wire execute_io_ctrl_RegWr_out; // @[Core.scala 74:37]
+ wire execute_io_ctrl_CsrWe_out; // @[Core.scala 74:37]
+ wire execute_io_ctrl_MemToReg_out; // @[Core.scala 74:37]
+ wire [2:0] execute_io_func3_out; // @[Core.scala 74:37]
+ wire [31:0] execute_io_csr_data_o; // @[Core.scala 74:37]
+ wire [31:0] memory_stage_io_EX_MEM_alu_output; // @[Core.scala 75:37]
+ wire [4:0] memory_stage_io_EX_MEM_rd_sel; // @[Core.scala 75:37]
+ wire memory_stage_io_EX_MEM_RegWr; // @[Core.scala 75:37]
+ wire memory_stage_io_EX_MEM_CsrWe; // @[Core.scala 75:37]
+ wire memory_stage_io_EX_MEM_MemRd; // @[Core.scala 75:37]
+ wire memory_stage_io_EX_MEM_MemToReg; // @[Core.scala 75:37]
+ wire memory_stage_io_EX_MEM_MemWr; // @[Core.scala 75:37]
+ wire [31:0] memory_stage_io_EX_MEM_rs2; // @[Core.scala 75:37]
+ wire [2:0] memory_stage_io_func3; // @[Core.scala 75:37]
+ wire [31:0] memory_stage_io_EX_MEM_csr_data; // @[Core.scala 75:37]
+ wire memory_stage_io_data_gnt_i; // @[Core.scala 75:37]
+ wire memory_stage_io_data_rvalid_i; // @[Core.scala 75:37]
+ wire [31:0] memory_stage_io_data_rdata_i; // @[Core.scala 75:37]
+ wire memory_stage_io_data_req_o; // @[Core.scala 75:37]
+ wire memory_stage_io_data_be_o_0; // @[Core.scala 75:37]
+ wire memory_stage_io_data_be_o_1; // @[Core.scala 75:37]
+ wire memory_stage_io_data_be_o_2; // @[Core.scala 75:37]
+ wire memory_stage_io_data_be_o_3; // @[Core.scala 75:37]
+ wire memory_stage_io_ctrl_MemWr_out; // @[Core.scala 75:37]
+ wire [7:0] memory_stage_io_data_wdata_o_0; // @[Core.scala 75:37]
+ wire [7:0] memory_stage_io_data_wdata_o_1; // @[Core.scala 75:37]
+ wire [7:0] memory_stage_io_data_wdata_o_2; // @[Core.scala 75:37]
+ wire [7:0] memory_stage_io_data_wdata_o_3; // @[Core.scala 75:37]
+ wire [31:0] memory_stage_io_memAddress; // @[Core.scala 75:37]
+ wire [31:0] memory_stage_io_data_out; // @[Core.scala 75:37]
+ wire [31:0] memory_stage_io_alu_output; // @[Core.scala 75:37]
+ wire [4:0] memory_stage_io_rd_sel_out; // @[Core.scala 75:37]
+ wire memory_stage_io_ctrl_RegWr_out; // @[Core.scala 75:37]
+ wire memory_stage_io_ctrl_CsrWen_out; // @[Core.scala 75:37]
+ wire memory_stage_io_ctrl_MemRd_out; // @[Core.scala 75:37]
+ wire memory_stage_io_ctrl_MemToReg_out; // @[Core.scala 75:37]
+ wire [31:0] memory_stage_io_csr_data_out; // @[Core.scala 75:37]
+ wire memory_stage_io_stall; // @[Core.scala 75:37]
+ wire writeback_io_MEM_WB_MemToReg; // @[Core.scala 76:37]
+ wire [31:0] writeback_io_MEM_WB_dataMem_data; // @[Core.scala 76:37]
+ wire [31:0] writeback_io_MEM_WB_alu_output; // @[Core.scala 76:37]
+ wire [31:0] writeback_io_write_data; // @[Core.scala 76:37]
+ ID_EX ID_EX ( // @[Core.scala 69:37]
+ .clock(clock),
+ .reset(reset),
+ .io_pc_in(ID_EX_io_pc_in),
+ .io_pc4_in(ID_EX_io_pc4_in),
+ .io_rs1_sel_in(ID_EX_io_rs1_sel_in),
+ .io_rs2_sel_in(ID_EX_io_rs2_sel_in),
+ .io_rs1_in(ID_EX_io_rs1_in),
+ .io_rs2_in(ID_EX_io_rs2_in),
+ .io_imm(ID_EX_io_imm),
+ .io_rd_sel_in(ID_EX_io_rd_sel_in),
+ .io_func3_in(ID_EX_io_func3_in),
+ .io_func7_in(ID_EX_io_func7_in),
+ .io_ctrl_MemWr_in(ID_EX_io_ctrl_MemWr_in),
+ .io_ctrl_MemRd_in(ID_EX_io_ctrl_MemRd_in),
+ .io_ctrl_CsrWen_in(ID_EX_io_ctrl_CsrWen_in),
+ .io_ctrl_RegWr_in(ID_EX_io_ctrl_RegWr_in),
+ .io_ctrl_MemToReg_in(ID_EX_io_ctrl_MemToReg_in),
+ .io_ctrl_AluOp_in(ID_EX_io_ctrl_AluOp_in),
+ .io_ctrl_OpA_sel_in(ID_EX_io_ctrl_OpA_sel_in),
+ .io_ctrl_OpB_sel_in(ID_EX_io_ctrl_OpB_sel_in),
+ .io_inst_op_in(ID_EX_io_inst_op_in),
+ .io_csr_data_i(ID_EX_io_csr_data_i),
+ .io_stall(ID_EX_io_stall),
+ .io_pc_out(ID_EX_io_pc_out),
+ .io_pc4_out(ID_EX_io_pc4_out),
+ .io_rs1_out(ID_EX_io_rs1_out),
+ .io_rs2_out(ID_EX_io_rs2_out),
+ .io_imm_out(ID_EX_io_imm_out),
+ .io_func3_out(ID_EX_io_func3_out),
+ .io_func7_out(ID_EX_io_func7_out),
+ .io_inst_op_out(ID_EX_io_inst_op_out),
+ .io_rd_sel_out(ID_EX_io_rd_sel_out),
+ .io_rs1_sel_out(ID_EX_io_rs1_sel_out),
+ .io_rs2_sel_out(ID_EX_io_rs2_sel_out),
+ .io_ctrl_MemWr_out(ID_EX_io_ctrl_MemWr_out),
+ .io_ctrl_MemRd_out(ID_EX_io_ctrl_MemRd_out),
+ .io_ctrl_RegWr_out(ID_EX_io_ctrl_RegWr_out),
+ .io_ctrl_CsrWen_out(ID_EX_io_ctrl_CsrWen_out),
+ .io_ctrl_MemToReg_out(ID_EX_io_ctrl_MemToReg_out),
+ .io_ctrl_AluOp_out(ID_EX_io_ctrl_AluOp_out),
+ .io_ctrl_OpA_sel_out(ID_EX_io_ctrl_OpA_sel_out),
+ .io_ctrl_OpB_sel_out(ID_EX_io_ctrl_OpB_sel_out),
+ .io_csr_data_o(ID_EX_io_csr_data_o)
+ );
+ EX_MEM EX_MEM ( // @[Core.scala 70:37]
+ .clock(clock),
+ .reset(reset),
+ .io_ctrl_MemWr_in(EX_MEM_io_ctrl_MemWr_in),
+ .io_ctrl_MemRd_in(EX_MEM_io_ctrl_MemRd_in),
+ .io_ctrl_RegWr_in(EX_MEM_io_ctrl_RegWr_in),
+ .io_ctrl_CsrWen_in(EX_MEM_io_ctrl_CsrWen_in),
+ .io_ctrl_MemToReg_in(EX_MEM_io_ctrl_MemToReg_in),
+ .io_rs2_in(EX_MEM_io_rs2_in),
+ .io_rd_sel_in(EX_MEM_io_rd_sel_in),
+ .io_alu_in(EX_MEM_io_alu_in),
+ .io_EX_MEM_func3(EX_MEM_io_EX_MEM_func3),
+ .io_csr_data_i(EX_MEM_io_csr_data_i),
+ .io_stall(EX_MEM_io_stall),
+ .io_ctrl_MemWr_out(EX_MEM_io_ctrl_MemWr_out),
+ .io_ctrl_MemRd_out(EX_MEM_io_ctrl_MemRd_out),
+ .io_ctrl_RegWr_out(EX_MEM_io_ctrl_RegWr_out),
+ .io_ctrl_CsrWen_out(EX_MEM_io_ctrl_CsrWen_out),
+ .io_ctrl_MemToReg_out(EX_MEM_io_ctrl_MemToReg_out),
+ .io_rs2_out(EX_MEM_io_rs2_out),
+ .io_rd_sel_out(EX_MEM_io_rd_sel_out),
+ .io_alu_output(EX_MEM_io_alu_output),
+ .io_EX_MEM_func3_out(EX_MEM_io_EX_MEM_func3_out),
+ .io_csr_data_o(EX_MEM_io_csr_data_o)
+ );
+ MEM_WB MEM_WB ( // @[Core.scala 71:37]
+ .clock(clock),
+ .reset(reset),
+ .io_ctrl_RegWr_in(MEM_WB_io_ctrl_RegWr_in),
+ .io_ctrl_CsrWen_in(MEM_WB_io_ctrl_CsrWen_in),
+ .io_ctrl_MemToReg_in(MEM_WB_io_ctrl_MemToReg_in),
+ .io_rd_sel_in(MEM_WB_io_rd_sel_in),
+ .io_ctrl_MemRd_in(MEM_WB_io_ctrl_MemRd_in),
+ .io_dmem_data_in(MEM_WB_io_dmem_data_in),
+ .io_alu_in(MEM_WB_io_alu_in),
+ .io_csr_data_in(MEM_WB_io_csr_data_in),
+ .io_stall(MEM_WB_io_stall),
+ .io_ctrl_RegWr_out(MEM_WB_io_ctrl_RegWr_out),
+ .io_ctrl_CsrWen_out(MEM_WB_io_ctrl_CsrWen_out),
+ .io_ctrl_MemToReg_out(MEM_WB_io_ctrl_MemToReg_out),
+ .io_ctrl_MemRd_out(MEM_WB_io_ctrl_MemRd_out),
+ .io_rd_sel_out(MEM_WB_io_rd_sel_out),
+ .io_dmem_data_out(MEM_WB_io_dmem_data_out),
+ .io_alu_output(MEM_WB_io_alu_output),
+ .io_csr_data_out(MEM_WB_io_csr_data_out)
+ );
+ Fetch fetch ( // @[Core.scala 72:37]
+ .clock(clock),
+ .reset(reset),
+ .io_core_instr_gnt_i(fetch_io_core_instr_gnt_i),
+ .io_core_instr_rvalid_i(fetch_io_core_instr_rvalid_i),
+ .io_core_instr_rdata_i(fetch_io_core_instr_rdata_i),
+ .io_csrRegFile_irq_pending_i(fetch_io_csrRegFile_irq_pending_i),
+ .io_csrRegFile_csr_mstatus_mie_i(fetch_io_csrRegFile_csr_mstatus_mie_i),
+ .io_csrRegFile_csr_mtvec_i(fetch_io_csrRegFile_csr_mtvec_i),
+ .io_csrRegFile_csr_mtvec_init_o(fetch_io_csrRegFile_csr_mtvec_init_o),
+ .io_csrRegFile_csr_save_cause_o(fetch_io_csrRegFile_csr_save_cause_o),
+ .io_csrRegFile_csr_save_if_o(fetch_io_csrRegFile_csr_save_if_o),
+ .io_csrRegFile_csr_if_pc_o(fetch_io_csrRegFile_csr_if_pc_o),
+ .io_csrRegFile_exc_cause_o(fetch_io_csrRegFile_exc_cause_o),
+ .io_csrRegFile_csr_mepc_i(fetch_io_csrRegFile_csr_mepc_i),
+ .io_core_init_mtvec_i(fetch_io_core_init_mtvec_i),
+ .io_decode_sb_imm_i(fetch_io_decode_sb_imm_i),
+ .io_decode_uj_imm_i(fetch_io_decode_uj_imm_i),
+ .io_decode_jalr_imm_i(fetch_io_decode_jalr_imm_i),
+ .io_decode_ctrl_next_pc_sel_i(fetch_io_decode_ctrl_next_pc_sel_i),
+ .io_decode_ctrl_out_branch_i(fetch_io_decode_ctrl_out_branch_i),
+ .io_decode_branchLogic_output_i(fetch_io_decode_branchLogic_output_i),
+ .io_decode_hazardDetection_pc_i(fetch_io_decode_hazardDetection_pc_i),
+ .io_decode_hazardDetection_inst_i(fetch_io_decode_hazardDetection_inst_i),
+ .io_decode_hazardDetection_current_pc_i(fetch_io_decode_hazardDetection_current_pc_i),
+ .io_decode_hazardDetection_pc_forward_i(fetch_io_decode_hazardDetection_pc_forward_i),
+ .io_decode_hazardDetection_inst_forward_i(fetch_io_decode_hazardDetection_inst_forward_i),
+ .io_decode_mret_inst_i(fetch_io_decode_mret_inst_i),
+ .io_core_stall_i(fetch_io_core_stall_i),
+ .io_core_instr_addr_o(fetch_io_core_instr_addr_o),
+ .io_core_instr_req_o(fetch_io_core_instr_req_o),
+ .io_decode_if_id_pc_o(fetch_io_decode_if_id_pc_o),
+ .io_decode_if_id_pc4_o(fetch_io_decode_if_id_pc4_o),
+ .io_decode_if_id_inst_o(fetch_io_decode_if_id_inst_o)
+ );
+ Decode decode ( // @[Core.scala 73:37]
+ .clock(clock),
+ .reset(reset),
+ .io_irq_external_i(decode_io_irq_external_i),
+ .io_IF_ID_inst(decode_io_IF_ID_inst),
+ .io_IF_ID_pc(decode_io_IF_ID_pc),
+ .io_IF_ID_pc4(decode_io_IF_ID_pc4),
+ .io_MEM_WB_ctrl_regWr(decode_io_MEM_WB_ctrl_regWr),
+ .io_MEM_WB_ctrl_csrWen(decode_io_MEM_WB_ctrl_csrWen),
+ .io_MEM_WB_rd_sel(decode_io_MEM_WB_rd_sel),
+ .io_ID_EX_ctrl_MemRd(decode_io_ID_EX_ctrl_MemRd),
+ .io_ID_EX_ctrl_regWr(decode_io_ID_EX_ctrl_regWr),
+ .io_ID_EX_ctrl_csrWen(decode_io_ID_EX_ctrl_csrWen),
+ .io_EX_MEM_ctrl_csrWen(decode_io_EX_MEM_ctrl_csrWen),
+ .io_ID_EX_rd_sel(decode_io_ID_EX_rd_sel),
+ .io_EX_MEM_rd_sel(decode_io_EX_MEM_rd_sel),
+ .io_EX_MEM_ctrl_MemRd(decode_io_EX_MEM_ctrl_MemRd),
+ .io_EX_MEM_ctrl_regWr(decode_io_EX_MEM_ctrl_regWr),
+ .io_MEM_WB_ctrl_MemRd(decode_io_MEM_WB_ctrl_MemRd),
+ .io_alu_output(decode_io_alu_output),
+ .io_EX_MEM_alu_output(decode_io_EX_MEM_alu_output),
+ .io_dmem_memOut(decode_io_dmem_memOut),
+ .io_dccm_rvalid_i(decode_io_dccm_rvalid_i),
+ .io_writeback_write_data(decode_io_writeback_write_data),
+ .io_MEM_WB_csr_rdata_i(decode_io_MEM_WB_csr_rdata_i),
+ .io_EX_MEM_csr_rdata_i(decode_io_EX_MEM_csr_rdata_i),
+ .io_ID_EX_csr_rdata_i(decode_io_ID_EX_csr_rdata_i),
+ .io_fetch_csr_mtvec_init(decode_io_fetch_csr_mtvec_init),
+ .io_fetch_csr_if_pc(decode_io_fetch_csr_if_pc),
+ .io_fetch_csr_save_if(decode_io_fetch_csr_save_if),
+ .io_fetch_exc_cause_i(decode_io_fetch_exc_cause_i),
+ .io_fetch_csr_save_cause_i(decode_io_fetch_csr_save_cause_i),
+ .io_execute_regwrite(decode_io_execute_regwrite),
+ .io_mem_regwrite(decode_io_mem_regwrite),
+ .io_wb_regwrite(decode_io_wb_regwrite),
+ .io_pc_out(decode_io_pc_out),
+ .io_pc4_out(decode_io_pc4_out),
+ .io_inst_op_out(decode_io_inst_op_out),
+ .io_func3_out(decode_io_func3_out),
+ .io_func7_out(decode_io_func7_out),
+ .io_rd_sel_out(decode_io_rd_sel_out),
+ .io_rs1_sel_out(decode_io_rs1_sel_out),
+ .io_rs2_sel_out(decode_io_rs2_sel_out),
+ .io_rs1_out(decode_io_rs1_out),
+ .io_rs2_out(decode_io_rs2_out),
+ .io_csr_rdata_o(decode_io_csr_rdata_o),
+ .io_imm_out(decode_io_imm_out),
+ .io_sb_imm(decode_io_sb_imm),
+ .io_uj_imm(decode_io_uj_imm),
+ .io_jalr_output(decode_io_jalr_output),
+ .io_branchLogic_output(decode_io_branchLogic_output),
+ .io_hazardDetection_pc_out(decode_io_hazardDetection_pc_out),
+ .io_hazardDetection_inst_out(decode_io_hazardDetection_inst_out),
+ .io_hazardDetection_current_pc_out(decode_io_hazardDetection_current_pc_out),
+ .io_hazardDetection_pc_forward(decode_io_hazardDetection_pc_forward),
+ .io_hazardDetection_inst_forward(decode_io_hazardDetection_inst_forward),
+ .io_ctrl_MemWr_out(decode_io_ctrl_MemWr_out),
+ .io_ctrl_MemRd_out(decode_io_ctrl_MemRd_out),
+ .io_ctrl_Branch_out(decode_io_ctrl_Branch_out),
+ .io_ctrl_RegWr_out(decode_io_ctrl_RegWr_out),
+ .io_ctrl_CsrWen_out(decode_io_ctrl_CsrWen_out),
+ .io_ctrl_MemToReg_out(decode_io_ctrl_MemToReg_out),
+ .io_ctrl_AluOp_out(decode_io_ctrl_AluOp_out),
+ .io_ctrl_OpA_sel_out(decode_io_ctrl_OpA_sel_out),
+ .io_ctrl_OpB_sel_out(decode_io_ctrl_OpB_sel_out),
+ .io_ctrl_next_pc_sel_out(decode_io_ctrl_next_pc_sel_out),
+ .io_fetch_irq_pending_o(decode_io_fetch_irq_pending_o),
+ .io_fetch_csr_mstatus_mie_o(decode_io_fetch_csr_mstatus_mie_o),
+ .io_fetch_csr_mtvec_o(decode_io_fetch_csr_mtvec_o),
+ .io_fetch_csr_mepc_o(decode_io_fetch_csr_mepc_o),
+ .io_fetch_mret_inst_o(decode_io_fetch_mret_inst_o)
+ );
+ Execute execute ( // @[Core.scala 74:37]
+ .io_EX_MEM_rd_sel(execute_io_EX_MEM_rd_sel),
+ .io_MEM_WB_rd_sel(execute_io_MEM_WB_rd_sel),
+ .io_ID_EX_rs1_sel(execute_io_ID_EX_rs1_sel),
+ .io_ID_EX_rs2_sel(execute_io_ID_EX_rs2_sel),
+ .io_EX_MEM_ctrl_RegWr(execute_io_EX_MEM_ctrl_RegWr),
+ .io_EX_MEM_ctrl_csrWen(execute_io_EX_MEM_ctrl_csrWen),
+ .io_MEM_WB_ctrl_csrWen(execute_io_MEM_WB_ctrl_csrWen),
+ .io_MEM_WB_ctrl_RegWr(execute_io_MEM_WB_ctrl_RegWr),
+ .io_ID_EX_ctrl_OpA_sel(execute_io_ID_EX_ctrl_OpA_sel),
+ .io_ID_EX_ctrl_OpB_sel(execute_io_ID_EX_ctrl_OpB_sel),
+ .io_ID_EX_pc4(execute_io_ID_EX_pc4),
+ .io_ID_EX_pc_out(execute_io_ID_EX_pc_out),
+ .io_ID_EX_rs1(execute_io_ID_EX_rs1),
+ .io_ID_EX_rs2(execute_io_ID_EX_rs2),
+ .io_ID_EX_csr_data(execute_io_ID_EX_csr_data),
+ .io_EX_MEM_alu_output(execute_io_EX_MEM_alu_output),
+ .io_EX_MEM_csr_rdata(execute_io_EX_MEM_csr_rdata),
+ .io_MEM_WB_csr_rdata(execute_io_MEM_WB_csr_rdata),
+ .io_writeback_write_data(execute_io_writeback_write_data),
+ .io_ID_EX_imm(execute_io_ID_EX_imm),
+ .io_ID_EX_ctrl_AluOp(execute_io_ID_EX_ctrl_AluOp),
+ .io_ID_EX_func7(execute_io_ID_EX_func7),
+ .io_ID_EX_inst_op(execute_io_ID_EX_inst_op),
+ .io_ID_EX_func3(execute_io_ID_EX_func3),
+ .io_ID_EX_rd_sel(execute_io_ID_EX_rd_sel),
+ .io_ID_EX_ctrl_MemWr(execute_io_ID_EX_ctrl_MemWr),
+ .io_ID_EX_ctrl_MemRd(execute_io_ID_EX_ctrl_MemRd),
+ .io_ID_EX_ctrl_RegWr(execute_io_ID_EX_ctrl_RegWr),
+ .io_ID_EX_ctrl_CsrWen(execute_io_ID_EX_ctrl_CsrWen),
+ .io_ID_EX_ctrl_MemToReg(execute_io_ID_EX_ctrl_MemToReg),
+ .io_rs2_out(execute_io_rs2_out),
+ .io_alu_output(execute_io_alu_output),
+ .io_rd_sel_out(execute_io_rd_sel_out),
+ .io_ctrl_MemWr_out(execute_io_ctrl_MemWr_out),
+ .io_ctrl_MemRd_out(execute_io_ctrl_MemRd_out),
+ .io_ctrl_RegWr_out(execute_io_ctrl_RegWr_out),
+ .io_ctrl_CsrWe_out(execute_io_ctrl_CsrWe_out),
+ .io_ctrl_MemToReg_out(execute_io_ctrl_MemToReg_out),
+ .io_func3_out(execute_io_func3_out),
+ .io_csr_data_o(execute_io_csr_data_o)
+ );
+ MemoryStage memory_stage ( // @[Core.scala 75:37]
+ .io_EX_MEM_alu_output(memory_stage_io_EX_MEM_alu_output),
+ .io_EX_MEM_rd_sel(memory_stage_io_EX_MEM_rd_sel),
+ .io_EX_MEM_RegWr(memory_stage_io_EX_MEM_RegWr),
+ .io_EX_MEM_CsrWe(memory_stage_io_EX_MEM_CsrWe),
+ .io_EX_MEM_MemRd(memory_stage_io_EX_MEM_MemRd),
+ .io_EX_MEM_MemToReg(memory_stage_io_EX_MEM_MemToReg),
+ .io_EX_MEM_MemWr(memory_stage_io_EX_MEM_MemWr),
+ .io_EX_MEM_rs2(memory_stage_io_EX_MEM_rs2),
+ .io_func3(memory_stage_io_func3),
+ .io_EX_MEM_csr_data(memory_stage_io_EX_MEM_csr_data),
+ .io_data_gnt_i(memory_stage_io_data_gnt_i),
+ .io_data_rvalid_i(memory_stage_io_data_rvalid_i),
+ .io_data_rdata_i(memory_stage_io_data_rdata_i),
+ .io_data_req_o(memory_stage_io_data_req_o),
+ .io_data_be_o_0(memory_stage_io_data_be_o_0),
+ .io_data_be_o_1(memory_stage_io_data_be_o_1),
+ .io_data_be_o_2(memory_stage_io_data_be_o_2),
+ .io_data_be_o_3(memory_stage_io_data_be_o_3),
+ .io_ctrl_MemWr_out(memory_stage_io_ctrl_MemWr_out),
+ .io_data_wdata_o_0(memory_stage_io_data_wdata_o_0),
+ .io_data_wdata_o_1(memory_stage_io_data_wdata_o_1),
+ .io_data_wdata_o_2(memory_stage_io_data_wdata_o_2),
+ .io_data_wdata_o_3(memory_stage_io_data_wdata_o_3),
+ .io_memAddress(memory_stage_io_memAddress),
+ .io_data_out(memory_stage_io_data_out),
+ .io_alu_output(memory_stage_io_alu_output),
+ .io_rd_sel_out(memory_stage_io_rd_sel_out),
+ .io_ctrl_RegWr_out(memory_stage_io_ctrl_RegWr_out),
+ .io_ctrl_CsrWen_out(memory_stage_io_ctrl_CsrWen_out),
+ .io_ctrl_MemRd_out(memory_stage_io_ctrl_MemRd_out),
+ .io_ctrl_MemToReg_out(memory_stage_io_ctrl_MemToReg_out),
+ .io_csr_data_out(memory_stage_io_csr_data_out),
+ .io_stall(memory_stage_io_stall)
+ );
+ WriteBack writeback ( // @[Core.scala 76:37]
+ .io_MEM_WB_MemToReg(writeback_io_MEM_WB_MemToReg),
+ .io_MEM_WB_dataMem_data(writeback_io_MEM_WB_dataMem_data),
+ .io_MEM_WB_alu_output(writeback_io_MEM_WB_alu_output),
+ .io_write_data(writeback_io_write_data)
+ );
+ assign io_data_req_o = memory_stage_io_data_req_o; // @[Core.scala 292:49]
+ assign io_data_we_o = memory_stage_io_ctrl_MemWr_out; // @[Core.scala 294:49]
+ assign io_data_be_o_0 = memory_stage_io_data_be_o_0; // @[Core.scala 293:49]
+ assign io_data_be_o_1 = memory_stage_io_data_be_o_1; // @[Core.scala 293:49]
+ assign io_data_be_o_2 = memory_stage_io_data_be_o_2; // @[Core.scala 293:49]
+ assign io_data_be_o_3 = memory_stage_io_data_be_o_3; // @[Core.scala 293:49]
+ assign io_data_addr_o = memory_stage_io_memAddress; // @[Core.scala 296:49]
+ assign io_data_wdata_o_0 = memory_stage_io_data_wdata_o_0; // @[Core.scala 295:49]
+ assign io_data_wdata_o_1 = memory_stage_io_data_wdata_o_1; // @[Core.scala 295:49]
+ assign io_data_wdata_o_2 = memory_stage_io_data_wdata_o_2; // @[Core.scala 295:49]
+ assign io_data_wdata_o_3 = memory_stage_io_data_wdata_o_3; // @[Core.scala 295:49]
+ assign io_instr_req_o = fetch_io_core_instr_req_o; // @[Core.scala 146:49]
+ assign io_instr_addr_o = fetch_io_core_instr_addr_o; // @[Core.scala 147:49]
+ // assign ID_EX_clock = clock;
+ // assign ID_EXreset = reset;
+ assign ID_EX_io_pc_in = decode_io_pc_out; // @[Core.scala 204:49]
+ assign ID_EX_io_pc4_in = decode_io_pc4_out; // @[Core.scala 205:49]
+ assign ID_EX_io_rs1_sel_in = decode_io_rs1_sel_out; // @[Core.scala 210:49]
+ assign ID_EX_io_rs2_sel_in = decode_io_rs2_sel_out; // @[Core.scala 211:49]
+ assign ID_EX_io_rs1_in = decode_io_rs1_out; // @[Core.scala 198:49]
+ assign ID_EX_io_rs2_in = decode_io_rs2_out; // @[Core.scala 199:49]
+ assign ID_EX_io_imm = decode_io_imm_out; // @[Core.scala 200:49]
+ assign ID_EX_io_rd_sel_in = decode_io_rd_sel_out; // @[Core.scala 209:49]
+ assign ID_EX_io_func3_in = decode_io_func3_out; // @[Core.scala 206:49]
+ assign ID_EX_io_func7_in = decode_io_func7_out; // @[Core.scala 207:49]
+ assign ID_EX_io_ctrl_MemWr_in = decode_io_ctrl_MemWr_out; // @[Core.scala 187:49]
+ assign ID_EX_io_ctrl_MemRd_in = decode_io_ctrl_MemRd_out; // @[Core.scala 188:49]
+ assign ID_EX_io_ctrl_CsrWen_in = decode_io_ctrl_CsrWen_out; // @[Core.scala 191:49]
+ assign ID_EX_io_ctrl_RegWr_in = decode_io_ctrl_RegWr_out; // @[Core.scala 190:49]
+ assign ID_EX_io_ctrl_MemToReg_in = decode_io_ctrl_MemToReg_out; // @[Core.scala 192:49]
+ assign ID_EX_io_ctrl_AluOp_in = decode_io_ctrl_AluOp_out; // @[Core.scala 193:49]
+ assign ID_EX_io_ctrl_OpA_sel_in = decode_io_ctrl_OpA_sel_out; // @[Core.scala 194:49]
+ assign ID_EX_io_ctrl_OpB_sel_in = decode_io_ctrl_OpB_sel_out; // @[Core.scala 195:49]
+ assign ID_EX_io_inst_op_in = decode_io_inst_op_out[6:0]; // @[Core.scala 208:49]
+ assign ID_EX_io_csr_data_i = decode_io_csr_rdata_o; // @[Core.scala 202:49]
+ assign ID_EX_io_stall = memory_stage_io_stall | io_stall_core_i; // @[Core.scala 186:49]
+ //assign EX_MEM_clock = clock;
+ // assign EX_MEMreset = reset;
+ assign EX_MEM_io_ctrl_MemWr_in = execute_io_ctrl_MemWr_out; // @[Core.scala 267:49]
+ assign EX_MEM_io_ctrl_MemRd_in = execute_io_ctrl_MemRd_out; // @[Core.scala 268:49]
+ assign EX_MEM_io_ctrl_RegWr_in = execute_io_ctrl_RegWr_out; // @[Core.scala 269:49]
+ assign EX_MEM_io_ctrl_CsrWen_in = execute_io_ctrl_CsrWe_out; // @[Core.scala 260:49]
+ assign EX_MEM_io_ctrl_MemToReg_in = execute_io_ctrl_MemToReg_out; // @[Core.scala 270:49]
+ assign EX_MEM_io_rs2_in = execute_io_rs2_out; // @[Core.scala 258:49]
+ assign EX_MEM_io_rd_sel_in = execute_io_rd_sel_out; // @[Core.scala 256:49]
+ assign EX_MEM_io_alu_in = execute_io_alu_output; // @[Core.scala 253:49]
+ assign EX_MEM_io_EX_MEM_func3 = execute_io_func3_out; // @[Core.scala 259:49]
+ assign EX_MEM_io_csr_data_i = execute_io_csr_data_o; // @[Core.scala 263:49]
+ assign EX_MEM_io_stall = memory_stage_io_stall | io_stall_core_i; // @[Core.scala 251:49]
+ // assign MEM_WB_clock = clock;
+ // assign MEM_WBreset = reset;
+ assign MEM_WB_io_ctrl_RegWr_in = memory_stage_io_ctrl_RegWr_out; // @[Core.scala 305:49]
+ assign MEM_WB_io_ctrl_CsrWen_in = memory_stage_io_ctrl_CsrWen_out; // @[Core.scala 306:49]
+ assign MEM_WB_io_ctrl_MemToReg_in = memory_stage_io_ctrl_MemToReg_out; // @[Core.scala 308:49]
+ assign MEM_WB_io_rd_sel_in = memory_stage_io_rd_sel_out; // @[Core.scala 303:49]
+ assign MEM_WB_io_ctrl_MemRd_in = memory_stage_io_ctrl_MemRd_out; // @[Core.scala 307:49]
+ assign MEM_WB_io_dmem_data_in = memory_stage_io_data_out; // @[Core.scala 302:49]
+ assign MEM_WB_io_alu_in = memory_stage_io_alu_output; // @[Core.scala 300:49]
+ assign MEM_WB_io_csr_data_in = memory_stage_io_csr_data_out; // @[Core.scala 311:49]
+ assign MEM_WB_io_stall = memory_stage_io_stall | io_stall_core_i; // @[Core.scala 299:49]
+ // assign fetch_clock = clock;
+ //assign fetchreset = reset;
+ assign fetch_io_core_instr_gnt_i = io_instr_gnt_i; // @[Core.scala 121:49]
+ assign fetch_io_core_instr_rvalid_i = io_instr_rvalid_i; // @[Core.scala 122:49]
+ assign fetch_io_core_instr_rdata_i = io_instr_rdata_i; // @[Core.scala 123:49]
+ assign fetch_io_csrRegFile_irq_pending_i = decode_io_fetch_irq_pending_o; // @[Core.scala 126:49]
+ assign fetch_io_csrRegFile_csr_mstatus_mie_i = decode_io_fetch_csr_mstatus_mie_o; // @[Core.scala 127:49]
+ assign fetch_io_csrRegFile_csr_mtvec_i = decode_io_fetch_csr_mtvec_o; // @[Core.scala 128:49]
+ assign fetch_io_csrRegFile_csr_mepc_i = decode_io_fetch_csr_mepc_o; // @[Core.scala 129:49]
+ assign fetch_io_core_init_mtvec_i = ~io_stall_core_i; // @[Core.scala 118:49]
+ assign fetch_io_decode_sb_imm_i = decode_io_sb_imm; // @[Core.scala 132:49]
+ assign fetch_io_decode_uj_imm_i = decode_io_uj_imm; // @[Core.scala 133:49]
+ assign fetch_io_decode_jalr_imm_i = decode_io_jalr_output; // @[Core.scala 134:49]
+ assign fetch_io_decode_ctrl_next_pc_sel_i = decode_io_ctrl_next_pc_sel_out; // @[Core.scala 135:49]
+ assign fetch_io_decode_ctrl_out_branch_i = decode_io_ctrl_Branch_out; // @[Core.scala 136:49]
+ assign fetch_io_decode_branchLogic_output_i = decode_io_branchLogic_output; // @[Core.scala 137:49]
+ assign fetch_io_decode_hazardDetection_pc_i = decode_io_hazardDetection_pc_out; // @[Core.scala 138:49]
+ assign fetch_io_decode_hazardDetection_inst_i = decode_io_hazardDetection_inst_out; // @[Core.scala 139:49]
+ assign fetch_io_decode_hazardDetection_current_pc_i = decode_io_hazardDetection_current_pc_out; // @[Core.scala 140:49]
+ assign fetch_io_decode_hazardDetection_pc_forward_i = decode_io_hazardDetection_pc_forward; // @[Core.scala 141:49]
+ assign fetch_io_decode_hazardDetection_inst_forward_i = decode_io_hazardDetection_inst_forward; // @[Core.scala 142:49]
+ assign fetch_io_decode_mret_inst_i = decode_io_fetch_mret_inst_o; // @[Core.scala 130:49]
+ assign fetch_io_core_stall_i = memory_stage_io_stall | io_stall_core_i; // @[Core.scala 119:49]
+ // assign decode_clock = clock;
+ //assign decodereset = reset;
+ assign decode_io_irq_external_i = io_irq_external_i; // @[Core.scala 182:49]
+ assign decode_io_IF_ID_inst = fetch_io_decode_if_id_inst_o; // @[Core.scala 150:49]
+ assign decode_io_IF_ID_pc = fetch_io_decode_if_id_pc_o; // @[Core.scala 151:49]
+ assign decode_io_IF_ID_pc4 = fetch_io_decode_if_id_pc4_o; // @[Core.scala 152:49]
+ assign decode_io_MEM_WB_ctrl_regWr = MEM_WB_io_ctrl_RegWr_out; // @[Core.scala 153:49]
+ assign decode_io_MEM_WB_ctrl_csrWen = MEM_WB_io_ctrl_CsrWen_out; // @[Core.scala 154:49]
+ assign decode_io_MEM_WB_rd_sel = MEM_WB_io_rd_sel_out; // @[Core.scala 161:49]
+ assign decode_io_ID_EX_ctrl_MemRd = ID_EX_io_ctrl_MemRd_out; // @[Core.scala 162:49]
+ assign decode_io_ID_EX_ctrl_regWr = ID_EX_io_ctrl_RegWr_out; // @[Core.scala 183:49]
+ assign decode_io_ID_EX_ctrl_csrWen = ID_EX_io_ctrl_CsrWen_out; // @[Core.scala 155:49]
+ assign decode_io_EX_MEM_ctrl_csrWen = EX_MEM_io_ctrl_CsrWen_out; // @[Core.scala 156:49]
+ assign decode_io_ID_EX_rd_sel = ID_EX_io_rd_sel_out; // @[Core.scala 163:49]
+ assign decode_io_EX_MEM_rd_sel = EX_MEM_io_rd_sel_out; // @[Core.scala 164:49]
+ assign decode_io_EX_MEM_ctrl_MemRd = EX_MEM_io_ctrl_MemRd_out; // @[Core.scala 165:49]
+ assign decode_io_EX_MEM_ctrl_regWr = EX_MEM_io_ctrl_RegWr_out; // @[Core.scala 184:49]
+ assign decode_io_MEM_WB_ctrl_MemRd = MEM_WB_io_ctrl_MemRd_out; // @[Core.scala 166:49]
+ assign decode_io_alu_output = execute_io_alu_output; // @[Core.scala 171:49]
+ assign decode_io_EX_MEM_alu_output = EX_MEM_io_alu_output; // @[Core.scala 172:49]
+ assign decode_io_dmem_memOut = io_data_rdata_i; // @[Core.scala 174:49]
+ assign decode_io_dccm_rvalid_i = io_data_rvalid_i; // @[Core.scala 175:49]
+ assign decode_io_writeback_write_data = writeback_io_write_data; // @[Core.scala 167:49]
+ assign decode_io_MEM_WB_csr_rdata_i = MEM_WB_io_csr_data_out; // @[Core.scala 168:51]
+ assign decode_io_EX_MEM_csr_rdata_i = EX_MEM_io_csr_data_o; // @[Core.scala 169:49]
+ assign decode_io_ID_EX_csr_rdata_i = ID_EX_io_csr_data_o; // @[Core.scala 170:49]
+ assign decode_io_fetch_csr_mtvec_init = fetch_io_csrRegFile_csr_mtvec_init_o; // @[Core.scala 180:49]
+ assign decode_io_fetch_csr_if_pc = fetch_io_csrRegFile_csr_if_pc_o; // @[Core.scala 179:49]
+ assign decode_io_fetch_csr_save_if = fetch_io_csrRegFile_csr_save_if_o; // @[Core.scala 178:49]
+ assign decode_io_fetch_exc_cause_i = fetch_io_csrRegFile_exc_cause_o; // @[Core.scala 177:49]
+ assign decode_io_fetch_csr_save_cause_i = fetch_io_csrRegFile_csr_save_cause_o; // @[Core.scala 176:49]
+ assign decode_io_execute_regwrite = ID_EX_io_ctrl_RegWr_out; // @[Core.scala 213:49]
+ assign decode_io_mem_regwrite = EX_MEM_io_ctrl_RegWr_out; // @[Core.scala 214:49]
+ assign decode_io_wb_regwrite = MEM_WB_io_ctrl_RegWr_out; // @[Core.scala 215:49]
+ assign execute_io_EX_MEM_rd_sel = EX_MEM_io_rd_sel_out; // @[Core.scala 220:49]
+ assign execute_io_MEM_WB_rd_sel = MEM_WB_io_rd_sel_out; // @[Core.scala 221:49]
+ assign execute_io_ID_EX_rs1_sel = ID_EX_io_rs1_sel_out; // @[Core.scala 222:49]
+ assign execute_io_ID_EX_rs2_sel = ID_EX_io_rs2_sel_out; // @[Core.scala 223:49]
+ assign execute_io_EX_MEM_ctrl_RegWr = EX_MEM_io_ctrl_RegWr_out; // @[Core.scala 224:49]
+ assign execute_io_EX_MEM_ctrl_csrWen = EX_MEM_io_ctrl_CsrWen_out; // @[Core.scala 225:49]
+ assign execute_io_MEM_WB_ctrl_csrWen = MEM_WB_io_ctrl_CsrWen_out; // @[Core.scala 226:49]
+ assign execute_io_MEM_WB_ctrl_RegWr = MEM_WB_io_ctrl_RegWr_out; // @[Core.scala 227:49]
+ assign execute_io_ID_EX_ctrl_OpA_sel = ID_EX_io_ctrl_OpA_sel_out; // @[Core.scala 228:49]
+ assign execute_io_ID_EX_ctrl_OpB_sel = ID_EX_io_ctrl_OpB_sel_out; // @[Core.scala 229:49]
+ assign execute_io_ID_EX_pc4 = ID_EX_io_pc4_out; // @[Core.scala 230:49]
+ assign execute_io_ID_EX_pc_out = ID_EX_io_pc_out; // @[Core.scala 219:49]
+ assign execute_io_ID_EX_rs1 = ID_EX_io_rs1_out; // @[Core.scala 231:49]
+ assign execute_io_ID_EX_rs2 = ID_EX_io_rs2_out; // @[Core.scala 232:49]
+ assign execute_io_ID_EX_csr_data = ID_EX_io_csr_data_o; // @[Core.scala 249:49]
+ assign execute_io_EX_MEM_alu_output = EX_MEM_io_alu_output; // @[Core.scala 233:49]
+ assign execute_io_EX_MEM_csr_rdata = EX_MEM_io_csr_data_o; // @[Core.scala 234:49]
+ assign execute_io_MEM_WB_csr_rdata = MEM_WB_io_csr_data_out; // @[Core.scala 235:49]
+ assign execute_io_writeback_write_data = writeback_io_write_data; // @[Core.scala 236:49]
+ assign execute_io_ID_EX_imm = ID_EX_io_imm_out; // @[Core.scala 237:49]
+ assign execute_io_ID_EX_ctrl_AluOp = ID_EX_io_ctrl_AluOp_out; // @[Core.scala 238:49]
+ assign execute_io_ID_EX_func7 = ID_EX_io_func7_out; // @[Core.scala 239:49]
+ assign execute_io_ID_EX_inst_op = ID_EX_io_inst_op_out; // @[Core.scala 240:49]
+ assign execute_io_ID_EX_func3 = ID_EX_io_func3_out; // @[Core.scala 241:49]
+ assign execute_io_ID_EX_rd_sel = ID_EX_io_rd_sel_out; // @[Core.scala 242:49]
+ assign execute_io_ID_EX_ctrl_MemWr = ID_EX_io_ctrl_MemWr_out; // @[Core.scala 243:49]
+ assign execute_io_ID_EX_ctrl_MemRd = ID_EX_io_ctrl_MemRd_out; // @[Core.scala 244:49]
+ assign execute_io_ID_EX_ctrl_RegWr = ID_EX_io_ctrl_RegWr_out; // @[Core.scala 245:49]
+ assign execute_io_ID_EX_ctrl_CsrWen = ID_EX_io_ctrl_CsrWen_out; // @[Core.scala 246:49]
+ assign execute_io_ID_EX_ctrl_MemToReg = ID_EX_io_ctrl_MemToReg_out; // @[Core.scala 247:49]
+ assign memory_stage_io_EX_MEM_alu_output = EX_MEM_io_alu_output; // @[Core.scala 276:49]
+ assign memory_stage_io_EX_MEM_rd_sel = EX_MEM_io_rd_sel_out; // @[Core.scala 277:49]
+ assign memory_stage_io_EX_MEM_RegWr = EX_MEM_io_ctrl_RegWr_out; // @[Core.scala 278:49]
+ assign memory_stage_io_EX_MEM_CsrWe = EX_MEM_io_ctrl_CsrWen_out; // @[Core.scala 279:49]
+ assign memory_stage_io_EX_MEM_MemRd = EX_MEM_io_ctrl_MemRd_out; // @[Core.scala 280:49]
+ assign memory_stage_io_EX_MEM_MemToReg = EX_MEM_io_ctrl_MemToReg_out; // @[Core.scala 281:49]
+ assign memory_stage_io_EX_MEM_MemWr = EX_MEM_io_ctrl_MemWr_out; // @[Core.scala 282:49]
+ assign memory_stage_io_EX_MEM_rs2 = EX_MEM_io_rs2_out; // @[Core.scala 283:49]
+ assign memory_stage_io_func3 = EX_MEM_io_EX_MEM_func3_out; // @[Core.scala 284:49]
+ assign memory_stage_io_EX_MEM_csr_data = EX_MEM_io_csr_data_o; // @[Core.scala 287:49]
+ assign memory_stage_io_data_gnt_i = io_data_gnt_i; // @[Core.scala 289:49]
+ assign memory_stage_io_data_rvalid_i = io_data_rvalid_i; // @[Core.scala 290:49]
+ assign memory_stage_io_data_rdata_i = io_data_rdata_i; // @[Core.scala 291:49]
+ assign writeback_io_MEM_WB_MemToReg = MEM_WB_io_ctrl_MemToReg_out; // @[Core.scala 316:49]
+ assign writeback_io_MEM_WB_dataMem_data = MEM_WB_io_dmem_data_out; // @[Core.scala 320:49]
+ assign writeback_io_MEM_WB_alu_output = MEM_WB_io_alu_output; // @[Core.scala 321:49]
+endmodule
+module TL_Err(
+ input io_tl_i_a_valid,
+ input [2:0] io_tl_i_a_opcode,
+ input [31:0] io_tl_i_a_address,
+ input [3:0] io_tl_i_a_mask,
+ output io_err_o
+);
+ wire op_get = io_tl_i_a_opcode == 3'h4; // @[TL_Err.scala 19:30]
+ wire op_partial = io_tl_i_a_opcode == 3'h1; // @[TL_Err.scala 20:34]
+ wire _T_5 = op_get | op_partial; // @[TL_Err.scala 23:28]
+ wire op_full = io_tl_i_a_opcode == 3'h0; // @[TL_Err.scala 21:31]
+ wire opcode_allowed = _T_5 | op_full; // @[TL_Err.scala 23:42]
+ wire _T_35 = |io_tl_i_a_address[1:0]; // @[TL_Err.scala 48:61]
+ wire _T_36 = ~_T_35; // @[TL_Err.scala 48:24]
+ wire addr_size_chk = io_tl_i_a_valid & _T_36; // @[TL_Err.scala 38:25]
+ wire _T_39 = addr_size_chk & io_tl_i_a_valid; // @[TL_Err.scala 58:37]
+ wire _T_38 = &io_tl_i_a_mask; // @[TL_Err.scala 50:43]
+ wire fulldata_chk = io_tl_i_a_valid & _T_38; // @[TL_Err.scala 38:25]
+ wire _T_41 = _T_5 | fulldata_chk; // @[TL_Err.scala 58:74]
+ wire a_config_allowed = _T_39 & _T_41; // @[TL_Err.scala 58:49]
+ wire _T = opcode_allowed & a_config_allowed; // @[TL_Err.scala 17:32]
+ assign io_err_o = ~_T; // @[TL_Err.scala 17:12 TL_Err.scala 60:12]
+endmodule
+module TL_RegAdapter(
+ input clock,
+ input reset,
+ input io_tl_i_a_valid,
+ input [2:0] io_tl_i_a_opcode,
+ input [31:0] io_tl_i_a_address,
+ input [3:0] io_tl_i_a_mask,
+ input [31:0] io_tl_i_a_data,
+ output io_tl_o_d_valid,
+ output [31:0] io_tl_o_d_data,
+ output io_tl_o_a_ready,
+ output io_we_o,
+ output [5:0] io_addr_o,
+ output [31:0] io_wdata_o,
+ output [3:0] io_be_o,
+ input [31:0] io_rdata_i
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+ reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+ wire tlErr_io_tl_i_a_valid; // @[TL_RegAdapter.scala 90:21]
+ wire [2:0] tlErr_io_tl_i_a_opcode; // @[TL_RegAdapter.scala 90:21]
+ wire [31:0] tlErr_io_tl_i_a_address; // @[TL_RegAdapter.scala 90:21]
+ wire [3:0] tlErr_io_tl_i_a_mask; // @[TL_RegAdapter.scala 90:21]
+ wire tlErr_io_err_o; // @[TL_RegAdapter.scala 90:21]
+ reg [31:0] rdata_q; // @[TL_RegAdapter.scala 29:24]
+ reg outstanding; // @[TL_RegAdapter.scala 43:28]
+ wire a_ack = io_tl_i_a_valid & io_tl_o_a_ready; // @[TL_RegAdapter.scala 46:28]
+ wire _T_2 = io_tl_i_a_opcode == 3'h0; // @[TL_RegAdapter.scala 50:41]
+ wire _T_3 = io_tl_i_a_opcode == 3'h1; // @[TL_RegAdapter.scala 50:91]
+ wire _T_4 = _T_2 | _T_3; // @[TL_RegAdapter.scala 50:70]
+ wire wr_req = a_ack & _T_4; // @[TL_RegAdapter.scala 50:19]
+ wire _T_21 = |io_tl_i_a_address[1:0]; // @[TL_RegAdapter.scala 84:46]
+ wire addr_align_err = wr_req & _T_21; // @[TL_RegAdapter.scala 83:16]
+ wire tl_err = tlErr_io_err_o; // @[TL_RegAdapter.scala 34:20 TL_RegAdapter.scala 92:10]
+ wire err_internal = addr_align_err | tl_err; // @[TL_RegAdapter.scala 81:34]
+ wire _T_8 = ~err_internal; // @[TL_RegAdapter.scala 53:24]
+ wire _GEN_0 = io_tl_o_d_valid ? 1'h0 : outstanding; // @[TL_RegAdapter.scala 67:22]
+ wire _GEN_1 = a_ack | _GEN_0; // @[TL_RegAdapter.scala 60:15]
+ TL_Err tlErr ( // @[TL_RegAdapter.scala 90:21]
+ .io_tl_i_a_valid(tlErr_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(tlErr_io_tl_i_a_opcode),
+ .io_tl_i_a_address(tlErr_io_tl_i_a_address),
+ .io_tl_i_a_mask(tlErr_io_tl_i_a_mask),
+ .io_err_o(tlErr_io_err_o)
+ );
+ assign io_tl_o_d_valid = outstanding; // @[TL_RegAdapter.scala 72:19]
+ assign io_tl_o_d_data = rdata_q; // @[TL_RegAdapter.scala 78:18]
+ assign io_tl_o_a_ready = ~outstanding; // @[TL_RegAdapter.scala 71:19]
+ assign io_we_o = wr_req & _T_8; // @[TL_RegAdapter.scala 53:11]
+ assign io_addr_o = {io_tl_i_a_address[5:2],2'h0}; // @[TL_RegAdapter.scala 55:13]
+ assign io_wdata_o = io_tl_i_a_data; // @[TL_RegAdapter.scala 56:14]
+ assign io_be_o = io_tl_i_a_mask; // @[TL_RegAdapter.scala 57:11]
+ assign tlErr_io_tl_i_a_valid = io_tl_i_a_valid; // @[TL_RegAdapter.scala 91:17]
+ assign tlErr_io_tl_i_a_opcode = io_tl_i_a_opcode; // @[TL_RegAdapter.scala 91:17]
+ assign tlErr_io_tl_i_a_address = io_tl_i_a_address; // @[TL_RegAdapter.scala 91:17]
+ assign tlErr_io_tl_i_a_mask = io_tl_i_a_mask; // @[TL_RegAdapter.scala 91:17]
+`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}};
+ rdata_q = _RAND_0[31:0];
+ _RAND_1 = {1{`RANDOM}};
+ outstanding = _RAND_1[0:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rdata_q <= 32'h0;
+ end else if (a_ack) begin
+ if (err_internal) begin
+ rdata_q <= 32'hffffffff;
+ end else begin
+ rdata_q <= io_rdata_i;
+ end
+ end
+ if (reset) begin
+ outstanding <= 1'h0;
+ end else begin
+ outstanding <= _GEN_1;
+ end
+ end
+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] _T_1 = io_de ? io_d : q_reg; // @[SubReg.scala 34:19]
+ wire [31:0] _T_2 = ~io_wd; // @[SubReg.scala 34:53]
+ wire [31:0] _T_4 = io_we ? _T_2 : 32'hffffffff; // @[SubReg.scala 34:45]
+ wire [31:0] wr_data = _T_1 & _T_4; // @[SubReg.scala 34:40]
+ assign io_q = q_reg; // @[SubReg.scala 52:8]
+ assign io_qs = q_reg; // @[SubReg.scala 51:9]
+`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
+ always @(posedge clock) begin
+ if (reset) begin
+ q_reg <= 32'h0;
+ end else if (wr_en) begin
+ q_reg <= wr_data;
+ end
+ end
+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]
+`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
+ always @(posedge clock) begin
+ if (reset) begin
+ q_reg <= 32'h0;
+ end else if (io_we) begin
+ if (io_we) begin
+ q_reg <= io_wd;
+ end else begin
+ q_reg <= 32'h0;
+ end
+ end
+ end
+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 24:9]
+ assign io_q = io_wd; // @[SubRegExt.scala 23:8]
+ assign io_qs = io_d; // @[SubRegExt.scala 22: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]
+`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
+ always @(posedge clock) begin
+ if (reset) begin
+ q_reg <= 32'h0;
+ end else begin
+ q_reg <= io_d;
+ end
+ end
+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 24:9]
+ assign io_q = io_wd; // @[SubRegExt.scala 23:8]
+ assign io_qs = io_d; // @[SubRegExt.scala 22:9]
+endmodule
+module GpioRegTop(
+ input clock,
+ input reset,
+ input io_tl_i_a_valid,
+ input [2:0] io_tl_i_a_opcode,
+ input [31:0] io_tl_i_a_address,
+ input [3:0] io_tl_i_a_mask,
+ input [31:0] io_tl_i_a_data,
+ output io_tl_o_d_valid,
+ output [31:0] io_tl_o_d_data,
+ output io_tl_o_a_ready,
+ output [31:0] io_reg2hw_intr_state_q,
+ output [31:0] io_reg2hw_intr_enable_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
+);
+ // wire tlul_regAdapter_clock; // @[GpioRegTop.scala 26:31]
+ // wire tlul_regAdapterreset; // @[GpioRegTop.scala 26:31]
+ wire tlul_regAdapter_io_tl_i_a_valid; // @[GpioRegTop.scala 26:31]
+ wire [2:0] tlul_regAdapter_io_tl_i_a_opcode; // @[GpioRegTop.scala 26:31]
+ wire [31:0] tlul_regAdapter_io_tl_i_a_address; // @[GpioRegTop.scala 26:31]
+ wire [3:0] tlul_regAdapter_io_tl_i_a_mask; // @[GpioRegTop.scala 26:31]
+ wire [31:0] tlul_regAdapter_io_tl_i_a_data; // @[GpioRegTop.scala 26:31]
+ wire tlul_regAdapter_io_tl_o_d_valid; // @[GpioRegTop.scala 26:31]
+ wire [31:0] tlul_regAdapter_io_tl_o_d_data; // @[GpioRegTop.scala 26:31]
+ wire tlul_regAdapter_io_tl_o_a_ready; // @[GpioRegTop.scala 26:31]
+ wire tlul_regAdapter_io_we_o; // @[GpioRegTop.scala 26:31]
+ wire [5:0] tlul_regAdapter_io_addr_o; // @[GpioRegTop.scala 26:31]
+ wire [31:0] tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 26:31]
+ wire [3:0] tlul_regAdapter_io_be_o; // @[GpioRegTop.scala 26:31]
+ wire [31:0] tlul_regAdapter_io_rdata_i; // @[GpioRegTop.scala 26:31]
+ // wire intr_state_reg_clock; // @[GpioRegTop.scala 87:30]
+ // wire intr_state_regreset; // @[GpioRegTop.scala 87:30]
+ wire intr_state_reg_io_we; // @[GpioRegTop.scala 87:30]
+ wire [31:0] intr_state_reg_io_wd; // @[GpioRegTop.scala 87:30]
+ wire intr_state_reg_io_de; // @[GpioRegTop.scala 87:30]
+ wire [31:0] intr_state_reg_io_d; // @[GpioRegTop.scala 87:30]
+ wire [31:0] intr_state_reg_io_q; // @[GpioRegTop.scala 87:30]
+ wire [31:0] intr_state_reg_io_qs; // @[GpioRegTop.scala 87:30]
+ // wire intr_enable_reg_clock; // @[GpioRegTop.scala 102:31]
+ // wire intr_enable_regreset; // @[GpioRegTop.scala 102:31]
+ wire intr_enable_reg_io_we; // @[GpioRegTop.scala 102:31]
+ wire [31:0] intr_enable_reg_io_wd; // @[GpioRegTop.scala 102:31]
+ wire [31:0] intr_enable_reg_io_q; // @[GpioRegTop.scala 102:31]
+ wire [31:0] intr_enable_reg_io_qs; // @[GpioRegTop.scala 102:31]
+ wire intr_test_reg_io_we; // @[GpioRegTop.scala 111:29]
+ wire [31:0] intr_test_reg_io_wd; // @[GpioRegTop.scala 111:29]
+ wire [31:0] intr_test_reg_io_d; // @[GpioRegTop.scala 111:29]
+ wire intr_test_reg_io_qe; // @[GpioRegTop.scala 111:29]
+ wire [31:0] intr_test_reg_io_q; // @[GpioRegTop.scala 111:29]
+ wire [31:0] intr_test_reg_io_qs; // @[GpioRegTop.scala 111:29]
+ // wire data_in_reg_clock; // @[GpioRegTop.scala 120:27]
+ // wire data_in_regreset; // @[GpioRegTop.scala 120:27]
+ wire [31:0] data_in_reg_io_d; // @[GpioRegTop.scala 120:27]
+ wire [31:0] data_in_reg_io_qs; // @[GpioRegTop.scala 120:27]
+ wire direct_out_reg_io_we; // @[GpioRegTop.scala 128:30]
+ wire [31:0] direct_out_reg_io_wd; // @[GpioRegTop.scala 128:30]
+ wire [31:0] direct_out_reg_io_d; // @[GpioRegTop.scala 128:30]
+ wire direct_out_reg_io_qe; // @[GpioRegTop.scala 128:30]
+ wire [31:0] direct_out_reg_io_q; // @[GpioRegTop.scala 128:30]
+ wire [31:0] direct_out_reg_io_qs; // @[GpioRegTop.scala 128:30]
+ wire masked_out_lower_data_reg_io_we; // @[GpioRegTop.scala 139:41]
+ wire [15:0] masked_out_lower_data_reg_io_wd; // @[GpioRegTop.scala 139:41]
+ wire [15:0] masked_out_lower_data_reg_io_d; // @[GpioRegTop.scala 139:41]
+ wire masked_out_lower_data_reg_io_qe; // @[GpioRegTop.scala 139:41]
+ wire [15:0] masked_out_lower_data_reg_io_q; // @[GpioRegTop.scala 139:41]
+ wire [15:0] masked_out_lower_data_reg_io_qs; // @[GpioRegTop.scala 139:41]
+ wire masked_out_lower_mask_reg_io_we; // @[GpioRegTop.scala 150:41]
+ wire [15:0] masked_out_lower_mask_reg_io_wd; // @[GpioRegTop.scala 150:41]
+ wire [15:0] masked_out_lower_mask_reg_io_d; // @[GpioRegTop.scala 150:41]
+ wire masked_out_lower_mask_reg_io_qe; // @[GpioRegTop.scala 150:41]
+ wire [15:0] masked_out_lower_mask_reg_io_q; // @[GpioRegTop.scala 150:41]
+ wire [15:0] masked_out_lower_mask_reg_io_qs; // @[GpioRegTop.scala 150:41]
+ wire masked_out_upper_data_reg_io_we; // @[GpioRegTop.scala 160:41]
+ wire [15:0] masked_out_upper_data_reg_io_wd; // @[GpioRegTop.scala 160:41]
+ wire [15:0] masked_out_upper_data_reg_io_d; // @[GpioRegTop.scala 160:41]
+ wire masked_out_upper_data_reg_io_qe; // @[GpioRegTop.scala 160:41]
+ wire [15:0] masked_out_upper_data_reg_io_q; // @[GpioRegTop.scala 160:41]
+ wire [15:0] masked_out_upper_data_reg_io_qs; // @[GpioRegTop.scala 160:41]
+ wire masked_out_upper_mask_reg_io_we; // @[GpioRegTop.scala 171:41]
+ wire [15:0] masked_out_upper_mask_reg_io_wd; // @[GpioRegTop.scala 171:41]
+ wire [15:0] masked_out_upper_mask_reg_io_d; // @[GpioRegTop.scala 171:41]
+ wire masked_out_upper_mask_reg_io_qe; // @[GpioRegTop.scala 171:41]
+ wire [15:0] masked_out_upper_mask_reg_io_q; // @[GpioRegTop.scala 171:41]
+ wire [15:0] masked_out_upper_mask_reg_io_qs; // @[GpioRegTop.scala 171:41]
+ wire direct_oe_reg_io_we; // @[GpioRegTop.scala 180:29]
+ wire [31:0] direct_oe_reg_io_wd; // @[GpioRegTop.scala 180:29]
+ wire [31:0] direct_oe_reg_io_d; // @[GpioRegTop.scala 180:29]
+ wire direct_oe_reg_io_qe; // @[GpioRegTop.scala 180:29]
+ wire [31:0] direct_oe_reg_io_q; // @[GpioRegTop.scala 180:29]
+ wire [31:0] direct_oe_reg_io_qs; // @[GpioRegTop.scala 180:29]
+ wire masked_oe_lower_data_reg_io_we; // @[GpioRegTop.scala 191:40]
+ wire [15:0] masked_oe_lower_data_reg_io_wd; // @[GpioRegTop.scala 191:40]
+ wire [15:0] masked_oe_lower_data_reg_io_d; // @[GpioRegTop.scala 191:40]
+ wire masked_oe_lower_data_reg_io_qe; // @[GpioRegTop.scala 191:40]
+ wire [15:0] masked_oe_lower_data_reg_io_q; // @[GpioRegTop.scala 191:40]
+ wire [15:0] masked_oe_lower_data_reg_io_qs; // @[GpioRegTop.scala 191:40]
+ wire masked_oe_lower_mask_reg_io_we; // @[GpioRegTop.scala 202:40]
+ wire [15:0] masked_oe_lower_mask_reg_io_wd; // @[GpioRegTop.scala 202:40]
+ wire [15:0] masked_oe_lower_mask_reg_io_d; // @[GpioRegTop.scala 202:40]
+ wire masked_oe_lower_mask_reg_io_qe; // @[GpioRegTop.scala 202:40]
+ wire [15:0] masked_oe_lower_mask_reg_io_q; // @[GpioRegTop.scala 202:40]
+ wire [15:0] masked_oe_lower_mask_reg_io_qs; // @[GpioRegTop.scala 202:40]
+ wire masked_oe_upper_data_reg_io_we; // @[GpioRegTop.scala 213:40]
+ wire [15:0] masked_oe_upper_data_reg_io_wd; // @[GpioRegTop.scala 213:40]
+ wire [15:0] masked_oe_upper_data_reg_io_d; // @[GpioRegTop.scala 213:40]
+ wire masked_oe_upper_data_reg_io_qe; // @[GpioRegTop.scala 213:40]
+ wire [15:0] masked_oe_upper_data_reg_io_q; // @[GpioRegTop.scala 213:40]
+ wire [15:0] masked_oe_upper_data_reg_io_qs; // @[GpioRegTop.scala 213:40]
+ wire masked_oe_upper_mask_reg_io_we; // @[GpioRegTop.scala 224:40]
+ wire [15:0] masked_oe_upper_mask_reg_io_wd; // @[GpioRegTop.scala 224:40]
+ wire [15:0] masked_oe_upper_mask_reg_io_d; // @[GpioRegTop.scala 224:40]
+ wire masked_oe_upper_mask_reg_io_qe; // @[GpioRegTop.scala 224:40]
+ wire [15:0] masked_oe_upper_mask_reg_io_q; // @[GpioRegTop.scala 224:40]
+ wire [15:0] masked_oe_upper_mask_reg_io_qs; // @[GpioRegTop.scala 224:40]
+ // wire intr_ctrl_en_rising_reg_clock; // @[GpioRegTop.scala 234:39]
+ // wire intr_ctrl_en_rising_regreset; // @[GpioRegTop.scala 234:39]
+ wire intr_ctrl_en_rising_reg_io_we; // @[GpioRegTop.scala 234:39]
+ wire [31:0] intr_ctrl_en_rising_reg_io_wd; // @[GpioRegTop.scala 234:39]
+ wire [31:0] intr_ctrl_en_rising_reg_io_q; // @[GpioRegTop.scala 234:39]
+ wire [31:0] intr_ctrl_en_rising_reg_io_qs; // @[GpioRegTop.scala 234:39]
+ // wire intr_ctrl_en_falling_reg_clock; // @[GpioRegTop.scala 243:40]
+ // wire intr_ctrl_en_falling_regreset; // @[GpioRegTop.scala 243:40]
+ wire intr_ctrl_en_falling_reg_io_we; // @[GpioRegTop.scala 243:40]
+ wire [31:0] intr_ctrl_en_falling_reg_io_wd; // @[GpioRegTop.scala 243:40]
+ wire [31:0] intr_ctrl_en_falling_reg_io_q; // @[GpioRegTop.scala 243:40]
+ wire [31:0] intr_ctrl_en_falling_reg_io_qs; // @[GpioRegTop.scala 243:40]
+ // wire intr_ctrl_en_lvlhigh_reg_clock; // @[GpioRegTop.scala 252:40]
+ // wire intr_ctrl_en_lvlhigh_regreset; // @[GpioRegTop.scala 252:40]
+ wire intr_ctrl_en_lvlhigh_reg_io_we; // @[GpioRegTop.scala 252:40]
+ wire [31:0] intr_ctrl_en_lvlhigh_reg_io_wd; // @[GpioRegTop.scala 252:40]
+ wire [31:0] intr_ctrl_en_lvlhigh_reg_io_q; // @[GpioRegTop.scala 252:40]
+ wire [31:0] intr_ctrl_en_lvlhigh_reg_io_qs; // @[GpioRegTop.scala 252:40]
+ //wire intr_ctrl_en_lvllow_reg_clock; // @[GpioRegTop.scala 261:39]
+ // wire intr_ctrl_en_lvllow_regreset; // @[GpioRegTop.scala 261:39]
+ wire intr_ctrl_en_lvllow_reg_io_we; // @[GpioRegTop.scala 261:39]
+ wire [31:0] intr_ctrl_en_lvllow_reg_io_wd; // @[GpioRegTop.scala 261:39]
+ wire [31:0] intr_ctrl_en_lvllow_reg_io_q; // @[GpioRegTop.scala 261:39]
+ wire [31:0] intr_ctrl_en_lvllow_reg_io_qs; // @[GpioRegTop.scala 261:39]
+ wire reg_we = tlul_regAdapter_io_we_o; // @[GpioRegTop.scala 18:39 GpioRegTop.scala 29:10]
+ wire [5:0] reg_addr = tlul_regAdapter_io_addr_o; // @[GpioRegTop.scala 20:22 GpioRegTop.scala 32:12]
+ wire addr_hit_0 = reg_addr == 6'h0; // @[GpioRegTop.scala 271:28]
+ wire addr_hit_1 = reg_addr == 6'h4; // @[GpioRegTop.scala 272:28]
+ wire addr_hit_2 = reg_addr == 6'h8; // @[GpioRegTop.scala 273:28]
+ wire addr_hit_3 = reg_addr == 6'hc; // @[GpioRegTop.scala 274:28]
+ wire addr_hit_4 = reg_addr == 6'h10; // @[GpioRegTop.scala 275:28]
+ wire addr_hit_5 = reg_addr == 6'h14; // @[GpioRegTop.scala 276:28]
+ wire addr_hit_6 = reg_addr == 6'h18; // @[GpioRegTop.scala 277:28]
+ wire addr_hit_7 = reg_addr == 6'h1c; // @[GpioRegTop.scala 278:28]
+ wire addr_hit_8 = reg_addr == 6'h20; // @[GpioRegTop.scala 279:28]
+ wire addr_hit_9 = reg_addr == 6'h24; // @[GpioRegTop.scala 280:28]
+ wire addr_hit_10 = reg_addr == 6'h28; // @[GpioRegTop.scala 281:28]
+ wire addr_hit_11 = reg_addr == 6'h2c; // @[GpioRegTop.scala 282:28]
+ wire addr_hit_12 = reg_addr == 6'h30; // @[GpioRegTop.scala 283:28]
+ wire addr_hit_13 = reg_addr == 6'h34; // @[GpioRegTop.scala 284:28]
+ wire _T_111 = addr_hit_13 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire [3:0] reg_be = tlul_regAdapter_io_be_o; // @[GpioRegTop.scala 21:20 GpioRegTop.scala 33:10]
+ wire _T_113 = 4'hf != reg_be; // @[GpioRegTop.scala 296:60]
+ wire wr_err = _T_111 & _T_113; // @[GpioRegTop.scala 296:41]
+ wire _T_46 = addr_hit_0 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_51 = addr_hit_1 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_56 = addr_hit_2 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_66 = addr_hit_4 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_71 = addr_hit_5 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_76 = addr_hit_6 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_81 = addr_hit_7 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_86 = addr_hit_8 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_91 = addr_hit_9 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_96 = addr_hit_10 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_101 = addr_hit_11 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_106 = addr_hit_12 & reg_we; // @[GpioRegTop.scala 296:31]
+ wire _T_117 = ~wr_err; // @[GpioRegTop.scala 303:43]
+ wire [31:0] reg_wdata = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 19:34 GpioRegTop.scala 31:13]
+ wire [15:0] masked_out_lower_data_qs = masked_out_lower_data_reg_io_qs; // @[GpioRegTop.scala 56:90 GpioRegTop.scala 146:28]
+ wire [31:0] _T_183 = {16'h0,masked_out_lower_data_qs}; // @[Cat.scala 29:58]
+ wire [15:0] masked_out_upper_data_qs = masked_out_upper_data_reg_io_qs; // @[GpioRegTop.scala 59:90 GpioRegTop.scala 167:28]
+ wire [31:0] _T_184 = {16'h0,masked_out_upper_data_qs}; // @[Cat.scala 29:58]
+ wire [15:0] masked_oe_lower_mask_qs = masked_oe_lower_mask_reg_io_qs; // @[GpioRegTop.scala 66:112 GpioRegTop.scala 209:27]
+ wire [15:0] masked_oe_lower_data_qs = masked_oe_lower_data_reg_io_qs; // @[GpioRegTop.scala 66:112 GpioRegTop.scala 198:27]
+ wire [31:0] _T_185 = {masked_oe_lower_mask_qs,masked_oe_lower_data_qs}; // @[Cat.scala 29:58]
+ wire [15:0] masked_oe_upper_mask_qs = masked_oe_upper_mask_reg_io_qs; // @[GpioRegTop.scala 69:112 GpioRegTop.scala 231:27]
+ wire [15:0] masked_oe_upper_data_qs = masked_oe_upper_data_reg_io_qs; // @[GpioRegTop.scala 69:112 GpioRegTop.scala 220:27]
+ wire [31:0] _T_186 = {masked_oe_upper_mask_qs,masked_oe_upper_data_qs}; // @[Cat.scala 29:58]
+ wire [31:0] intr_ctrl_en_lvllow_qs = intr_ctrl_en_lvllow_reg_io_qs; // @[GpioRegTop.scala 81:60 GpioRegTop.scala 267:26]
+ wire [31:0] _GEN_0 = addr_hit_13 ? intr_ctrl_en_lvllow_qs : 32'hffffffff; // @[GpioRegTop.scala 389:28]
+ wire [31:0] intr_ctrl_en_lvlhigh_qs = intr_ctrl_en_lvlhigh_reg_io_qs; // @[GpioRegTop.scala 78:62 GpioRegTop.scala 258:27]
+ wire [31:0] _GEN_1 = addr_hit_12 ? intr_ctrl_en_lvlhigh_qs : _GEN_0; // @[GpioRegTop.scala 387:28]
+ wire [31:0] intr_ctrl_en_falling_qs = intr_ctrl_en_falling_reg_io_qs; // @[GpioRegTop.scala 75:62 GpioRegTop.scala 249:27]
+ wire [31:0] _GEN_2 = addr_hit_11 ? intr_ctrl_en_falling_qs : _GEN_1; // @[GpioRegTop.scala 385:28]
+ wire [31:0] intr_ctrl_en_rising_qs = intr_ctrl_en_rising_reg_io_qs; // @[GpioRegTop.scala 72:60 GpioRegTop.scala 240:26]
+ wire [31:0] _GEN_3 = addr_hit_10 ? intr_ctrl_en_rising_qs : _GEN_2; // @[GpioRegTop.scala 383:28]
+ wire [31:0] _GEN_4 = addr_hit_9 ? _T_186 : _GEN_3; // @[GpioRegTop.scala 381:27]
+ wire [31:0] _GEN_5 = addr_hit_8 ? _T_185 : _GEN_4; // @[GpioRegTop.scala 379:27]
+ wire [31:0] direct_oe_qs = direct_oe_reg_io_qs; // @[GpioRegTop.scala 62:26 GpioRegTop.scala 187:16]
+ wire [31:0] _GEN_6 = addr_hit_7 ? direct_oe_qs : _GEN_5; // @[GpioRegTop.scala 377:27]
+ wire [31:0] _GEN_7 = addr_hit_6 ? _T_184 : _GEN_6; // @[GpioRegTop.scala 375:27]
+ wire [31:0] _GEN_8 = addr_hit_5 ? _T_183 : _GEN_7; // @[GpioRegTop.scala 373:27]
+ wire [31:0] direct_out_qs = direct_out_reg_io_qs; // @[GpioRegTop.scala 53:42 GpioRegTop.scala 135:17]
+ wire [31:0] _GEN_9 = addr_hit_4 ? direct_out_qs : _GEN_8; // @[GpioRegTop.scala 371:27]
+ wire [31:0] data_in_qs = data_in_reg_io_qs; // @[GpioRegTop.scala 51:24 GpioRegTop.scala 125:14]
+ wire [31:0] _GEN_10 = addr_hit_3 ? data_in_qs : _GEN_9; // @[GpioRegTop.scala 369:27]
+ wire [31:0] _GEN_11 = addr_hit_2 ? 32'h0 : _GEN_10; // @[GpioRegTop.scala 367:27]
+ wire [31:0] intr_enable_qs = intr_enable_reg_io_qs; // @[GpioRegTop.scala 45:44 GpioRegTop.scala 108:18]
+ wire [31:0] _GEN_12 = addr_hit_1 ? intr_enable_qs : _GEN_11; // @[GpioRegTop.scala 365:27]
+ wire [31:0] intr_state_qs = intr_state_reg_io_qs; // @[GpioRegTop.scala 42:42 GpioRegTop.scala 99:17]
+ TL_RegAdapter tlul_regAdapter ( // @[GpioRegTop.scala 26:31]
+ .clock(clock),
+ .reset(reset),
+ .io_tl_i_a_valid(tlul_regAdapter_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(tlul_regAdapter_io_tl_i_a_opcode),
+ .io_tl_i_a_address(tlul_regAdapter_io_tl_i_a_address),
+ .io_tl_i_a_mask(tlul_regAdapter_io_tl_i_a_mask),
+ .io_tl_i_a_data(tlul_regAdapter_io_tl_i_a_data),
+ .io_tl_o_d_valid(tlul_regAdapter_io_tl_o_d_valid),
+ .io_tl_o_d_data(tlul_regAdapter_io_tl_o_d_data),
+ .io_tl_o_a_ready(tlul_regAdapter_io_tl_o_a_ready),
+ .io_we_o(tlul_regAdapter_io_we_o),
+ .io_addr_o(tlul_regAdapter_io_addr_o),
+ .io_wdata_o(tlul_regAdapter_io_wdata_o),
+ .io_be_o(tlul_regAdapter_io_be_o),
+ .io_rdata_i(tlul_regAdapter_io_rdata_i)
+ );
+ SubReg intr_state_reg ( // @[GpioRegTop.scala 87:30]
+ .clock(clock),
+ .reset(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 102:31]
+ .clock(clock),
+ .reset(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 111: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 120:27]
+ .clock(clock),
+ .reset(reset),
+ .io_d(data_in_reg_io_d),
+ .io_qs(data_in_reg_io_qs)
+ );
+ SubRegExt direct_out_reg ( // @[GpioRegTop.scala 128: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 139: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 150: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 160: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 171: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 180: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 191: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 202: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 213: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 224: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 234:39]
+ .clock(clock),
+ .reset(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 243:40]
+ .clock(clock),
+ .reset(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 252:40]
+ .clock(clock),
+ .reset(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 261:39]
+ .clock(clock),
+ .reset(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_tl_o_d_valid = tlul_regAdapter_io_tl_o_d_valid; // @[GpioRegTop.scala 28:11]
+ assign io_tl_o_d_data = tlul_regAdapter_io_tl_o_d_data; // @[GpioRegTop.scala 28:11]
+ assign io_tl_o_a_ready = tlul_regAdapter_io_tl_o_a_ready; // @[GpioRegTop.scala 28:11]
+ assign io_reg2hw_intr_state_q = intr_state_reg_io_q; // @[GpioRegTop.scala 97:26]
+ assign io_reg2hw_intr_enable_q = intr_enable_reg_io_q; // @[GpioRegTop.scala 107:27]
+ assign io_reg2hw_intr_test_q = intr_test_reg_io_q; // @[GpioRegTop.scala 117:25]
+ assign io_reg2hw_intr_test_qe = intr_test_reg_io_qe; // @[GpioRegTop.scala 116:26]
+ assign io_reg2hw_direct_out_q = direct_out_reg_io_q; // @[GpioRegTop.scala 134:26]
+ assign io_reg2hw_direct_out_qe = direct_out_reg_io_qe; // @[GpioRegTop.scala 133:27]
+ assign io_reg2hw_masked_out_lower_data_q = masked_out_lower_data_reg_io_q; // @[GpioRegTop.scala 145:37]
+ assign io_reg2hw_masked_out_lower_data_qe = masked_out_lower_data_reg_io_qe; // @[GpioRegTop.scala 144:38]
+ assign io_reg2hw_masked_out_lower_mask_q = masked_out_lower_mask_reg_io_q; // @[GpioRegTop.scala 156:37]
+ assign io_reg2hw_masked_out_upper_data_q = masked_out_upper_data_reg_io_q; // @[GpioRegTop.scala 166:37]
+ assign io_reg2hw_masked_out_upper_data_qe = masked_out_upper_data_reg_io_qe; // @[GpioRegTop.scala 165:38]
+ assign io_reg2hw_masked_out_upper_mask_q = masked_out_upper_mask_reg_io_q; // @[GpioRegTop.scala 177:37]
+ assign io_reg2hw_direct_oe_q = direct_oe_reg_io_q; // @[GpioRegTop.scala 186:25]
+ assign io_reg2hw_direct_oe_qe = direct_oe_reg_io_qe; // @[GpioRegTop.scala 185:26]
+ assign io_reg2hw_masked_oe_lower_data_q = masked_oe_lower_data_reg_io_q; // @[GpioRegTop.scala 197:36]
+ assign io_reg2hw_masked_oe_lower_data_qe = masked_oe_lower_data_reg_io_qe; // @[GpioRegTop.scala 196:37]
+ assign io_reg2hw_masked_oe_lower_mask_q = masked_oe_lower_mask_reg_io_q; // @[GpioRegTop.scala 208:36]
+ assign io_reg2hw_masked_oe_upper_data_q = masked_oe_upper_data_reg_io_q; // @[GpioRegTop.scala 219:36]
+ assign io_reg2hw_masked_oe_upper_data_qe = masked_oe_upper_data_reg_io_qe; // @[GpioRegTop.scala 218:37]
+ assign io_reg2hw_masked_oe_upper_mask_q = masked_oe_upper_mask_reg_io_q; // @[GpioRegTop.scala 230:36]
+ assign io_reg2hw_intr_ctrl_en_rising_q = intr_ctrl_en_rising_reg_io_q; // @[GpioRegTop.scala 239:35]
+ assign io_reg2hw_intr_ctrl_en_falling_q = intr_ctrl_en_falling_reg_io_q; // @[GpioRegTop.scala 248:36]
+ assign io_reg2hw_intr_ctrl_en_lvlHigh_q = intr_ctrl_en_lvlhigh_reg_io_q; // @[GpioRegTop.scala 257:36]
+ assign io_reg2hw_intr_ctrl_en_lvlLow_q = intr_ctrl_en_lvllow_reg_io_q; // @[GpioRegTop.scala 266:35]
+ //assign tlul_regAdapter_clock = clock;
+ //assign tlul_regAdapterreset = reset;
+ assign tlul_regAdapter_io_tl_i_a_valid = io_tl_i_a_valid; // @[GpioRegTop.scala 27:27]
+ assign tlul_regAdapter_io_tl_i_a_opcode = io_tl_i_a_opcode; // @[GpioRegTop.scala 27:27]
+ assign tlul_regAdapter_io_tl_i_a_address = io_tl_i_a_address; // @[GpioRegTop.scala 27:27]
+ assign tlul_regAdapter_io_tl_i_a_mask = io_tl_i_a_mask; // @[GpioRegTop.scala 27:27]
+ assign tlul_regAdapter_io_tl_i_a_data = io_tl_i_a_data; // @[GpioRegTop.scala 27:27]
+ assign tlul_regAdapter_io_rdata_i = addr_hit_0 ? intr_state_qs : _GEN_12; // @[GpioRegTop.scala 34:30]
+ //assign intr_state_reg_clock = clock;
+ // assign intr_state_regreset = reset;
+ assign intr_state_reg_io_we = _T_46 & _T_117; // @[GpioRegTop.scala 89:24]
+ assign intr_state_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 91:24]
+ assign intr_state_reg_io_de = io_hw2reg_intr_state_de; // @[GpioRegTop.scala 93:24]
+ assign intr_state_reg_io_d = io_hw2reg_intr_state_d; // @[GpioRegTop.scala 95:23]
+ //assign intr_enable_reg_clock = clock;
+ // assign intr_enable_regreset = reset;
+ assign intr_enable_reg_io_we = _T_51 & _T_117; // @[GpioRegTop.scala 103:25]
+ assign intr_enable_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 104:25]
+ assign intr_test_reg_io_we = _T_56 & _T_117; // @[GpioRegTop.scala 112:23]
+ assign intr_test_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 114:23]
+ assign intr_test_reg_io_d = 32'h0; // @[GpioRegTop.scala 115:22]
+ //assign data_in_reg_clock = clock;
+ // assign data_in_regreset = reset;
+ assign data_in_reg_io_d = io_hw2reg_data_in_d; // @[GpioRegTop.scala 124:20]
+ assign direct_out_reg_io_we = _T_66 & _T_117; // @[GpioRegTop.scala 130:24]
+ assign direct_out_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 131:24]
+ assign direct_out_reg_io_d = io_hw2reg_direct_out_d; // @[GpioRegTop.scala 132:23]
+ assign masked_out_lower_data_reg_io_we = _T_71 & _T_117; // @[GpioRegTop.scala 141:35]
+ assign masked_out_lower_data_reg_io_wd = reg_wdata[15:0]; // @[GpioRegTop.scala 142:35]
+ assign masked_out_lower_data_reg_io_d = io_hw2reg_masked_out_lower_data_d; // @[GpioRegTop.scala 143:34]
+ assign masked_out_lower_mask_reg_io_we = _T_71 & _T_117; // @[GpioRegTop.scala 152:35]
+ assign masked_out_lower_mask_reg_io_wd = reg_wdata[31:16]; // @[GpioRegTop.scala 153:35]
+ assign masked_out_lower_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 154:34]
+ assign masked_out_upper_data_reg_io_we = _T_76 & _T_117; // @[GpioRegTop.scala 162:35]
+ assign masked_out_upper_data_reg_io_wd = reg_wdata[15:0]; // @[GpioRegTop.scala 163:35]
+ assign masked_out_upper_data_reg_io_d = io_hw2reg_masked_out_upper_data_d; // @[GpioRegTop.scala 164:34]
+ assign masked_out_upper_mask_reg_io_we = _T_76 & _T_117; // @[GpioRegTop.scala 173:35]
+ assign masked_out_upper_mask_reg_io_wd = reg_wdata[31:16]; // @[GpioRegTop.scala 174:35]
+ assign masked_out_upper_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 175:34]
+ assign direct_oe_reg_io_we = _T_81 & _T_117; // @[GpioRegTop.scala 182:23]
+ assign direct_oe_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 183:23]
+ assign direct_oe_reg_io_d = io_hw2reg_direct_oe_d; // @[GpioRegTop.scala 184:22]
+ assign masked_oe_lower_data_reg_io_we = _T_86 & _T_117; // @[GpioRegTop.scala 193:34]
+ assign masked_oe_lower_data_reg_io_wd = reg_wdata[15:0]; // @[GpioRegTop.scala 194:34]
+ assign masked_oe_lower_data_reg_io_d = io_hw2reg_masked_oe_lower_data_d; // @[GpioRegTop.scala 195:33]
+ assign masked_oe_lower_mask_reg_io_we = _T_86 & _T_117; // @[GpioRegTop.scala 204:34]
+ assign masked_oe_lower_mask_reg_io_wd = reg_wdata[31:16]; // @[GpioRegTop.scala 205:34]
+ assign masked_oe_lower_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 206:33]
+ assign masked_oe_upper_data_reg_io_we = _T_91 & _T_117; // @[GpioRegTop.scala 215:34]
+ assign masked_oe_upper_data_reg_io_wd = reg_wdata[15:0]; // @[GpioRegTop.scala 216:34]
+ assign masked_oe_upper_data_reg_io_d = io_hw2reg_masked_oe_upper_data_d; // @[GpioRegTop.scala 217:33]
+ assign masked_oe_upper_mask_reg_io_we = _T_91 & _T_117; // @[GpioRegTop.scala 226:34]
+ assign masked_oe_upper_mask_reg_io_wd = reg_wdata[31:16]; // @[GpioRegTop.scala 227:34]
+ assign masked_oe_upper_mask_reg_io_d = 16'h0; // @[GpioRegTop.scala 228:33]
+ //assign intr_ctrl_en_rising_reg_clock = clock;
+ // assign intr_ctrl_en_rising_regreset = reset;
+ assign intr_ctrl_en_rising_reg_io_we = _T_96 & _T_117; // @[GpioRegTop.scala 235:33]
+ assign intr_ctrl_en_rising_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 236:33]
+ // assign intr_ctrl_en_falling_reg_clock = clock;
+ // assign intr_ctrl_en_falling_regreset = reset;
+ assign intr_ctrl_en_falling_reg_io_we = _T_101 & _T_117; // @[GpioRegTop.scala 244:34]
+ assign intr_ctrl_en_falling_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 245:34]
+ //assign intr_ctrl_en_lvlhigh_reg_clock = clock;
+ // assign intr_ctrl_en_lvlhigh_regreset = reset;
+ assign intr_ctrl_en_lvlhigh_reg_io_we = _T_106 & _T_117; // @[GpioRegTop.scala 253:34]
+ assign intr_ctrl_en_lvlhigh_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 254:34]
+ // assign intr_ctrl_en_lvllow_reg_clock = clock;
+ // assign intr_ctrl_en_lvllow_regreset = reset;
+ assign intr_ctrl_en_lvllow_reg_io_we = _T_111 & _T_117; // @[GpioRegTop.scala 262:33]
+ assign intr_ctrl_en_lvllow_reg_io_wd = tlul_regAdapter_io_wdata_o; // @[GpioRegTop.scala 263:33]
+endmodule
+module IntrHardware(
+ input clock,
+ input reset,
+ input [31:0] io_event_intr_i,
+ input [31:0] io_reg2hw_intr_enable_q_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,
+ output [31:0] io_intr_o
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ wire [31:0] _T_1 = io_reg2hw_intr_test_qe_i ? 32'hffffffff : 32'h0; // @[Bitwise.scala 72:12]
+ wire [31:0] _T_2 = _T_1 & io_reg2hw_intr_test_q_i; // @[IntrHardware.scala 24:54]
+ wire [31:0] new_event = _T_2 | io_event_intr_i; // @[IntrHardware.scala 24:80]
+ reg [31:0] _T_6; // @[IntrHardware.scala 29:22]
+ wire [31:0] _T_7 = io_reg2hw_intr_state_q_i & io_reg2hw_intr_enable_q_i; // @[IntrHardware.scala 30:37]
+ assign io_hw2reg_intr_state_de_o = |new_event; // @[IntrHardware.scala 25:29]
+ assign io_hw2reg_intr_state_d_o = new_event | io_reg2hw_intr_state_q_i; // @[IntrHardware.scala 26:28]
+ assign io_intr_o = _T_6; // @[IntrHardware.scala 31:15]
+`ifdef RANDOMIZE_GARBAGE_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_INVALID_ASSIGN
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_REG_INIT
+`define RANDOMIZE
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+`define RANDOMIZE
+`endif
+`ifndef RANDOM
+`define RANDOM $random
+`endif
+`ifdef RANDOMIZE_MEM_INIT
+ integer initvar;
+`endif
+`ifndef SYNTHESIS
+`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}};
+ _T_6 = _RAND_0[31:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ _T_6 <= 32'h0;
+ end else begin
+ _T_6 <= _T_7;
+ end
+ end
+endmodule
+module Gpio(
+ input clock,
+ input reset,
+ input io_tl_i_a_valid,
+ input [2:0] io_tl_i_a_opcode,
+ input [31:0] io_tl_i_a_address,
+ input [3:0] io_tl_i_a_mask,
+ input [31:0] io_tl_i_a_data,
+ output io_tl_o_d_valid,
+ output [31:0] io_tl_o_d_data,
+ output io_tl_o_a_ready,
+ input [31:0] io_cio_gpio_i,
+ output [31:0] io_cio_gpio_o,
+ output [31:0] io_cio_gpio_en_o,
+ output [31:0] io_intr_gpio_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 21:26]
+ // wire gpioRegTopreset; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_tl_i_a_valid; // @[Gpio.scala 21:26]
+ wire [2:0] gpioRegTop_io_tl_i_a_opcode; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_tl_i_a_address; // @[Gpio.scala 21:26]
+ wire [3:0] gpioRegTop_io_tl_i_a_mask; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_tl_i_a_data; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_tl_o_d_valid; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_tl_o_d_data; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_tl_o_a_ready; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_intr_state_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_intr_enable_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_intr_test_q; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_reg2hw_intr_test_qe; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_direct_out_q; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_reg2hw_direct_out_qe; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_out_lower_data_q; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_reg2hw_masked_out_lower_data_qe; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_out_upper_data_q; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_reg2hw_masked_out_upper_data_qe; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_direct_oe_q; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_reg2hw_direct_oe_qe; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_oe_lower_data_q; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_reg2hw_masked_oe_lower_data_qe; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_oe_upper_data_q; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_reg2hw_masked_oe_upper_data_qe; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_rising_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_falling_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_lvlHigh_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_reg2hw_intr_ctrl_en_lvlLow_q; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_hw2reg_intr_state_d; // @[Gpio.scala 21:26]
+ wire gpioRegTop_io_hw2reg_intr_state_de; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_hw2reg_data_in_d; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_hw2reg_direct_out_d; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_hw2reg_masked_out_lower_data_d; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_hw2reg_masked_out_upper_data_d; // @[Gpio.scala 21:26]
+ wire [31:0] gpioRegTop_io_hw2reg_direct_oe_d; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_hw2reg_masked_oe_lower_data_d; // @[Gpio.scala 21:26]
+ wire [15:0] gpioRegTop_io_hw2reg_masked_oe_upper_data_d; // @[Gpio.scala 21:26]
+ //wire intr_hw_clock; // @[Gpio.scala 111:23]
+ // wire intr_hwreset; // @[Gpio.scala 111:23]
+ wire [31:0] intr_hw_io_event_intr_i; // @[Gpio.scala 111:23]
+ wire [31:0] intr_hw_io_reg2hw_intr_enable_q_i; // @[Gpio.scala 111:23]
+ wire [31:0] intr_hw_io_reg2hw_intr_test_q_i; // @[Gpio.scala 111:23]
+ wire intr_hw_io_reg2hw_intr_test_qe_i; // @[Gpio.scala 111:23]
+ wire [31:0] intr_hw_io_reg2hw_intr_state_q_i; // @[Gpio.scala 111:23]
+ wire intr_hw_io_hw2reg_intr_state_de_o; // @[Gpio.scala 111:23]
+ wire [31:0] intr_hw_io_hw2reg_intr_state_d_o; // @[Gpio.scala 111:23]
+ wire [31:0] intr_hw_io_intr_o; // @[Gpio.scala 111:23]
+ reg [31:0] cio_gpio_q; // @[Gpio.scala 27:27]
+ reg [31:0] cio_gpio_en_q; // @[Gpio.scala 28:30]
+ reg [31:0] data_in_q; // @[Gpio.scala 29:26]
+ wire [15:0] hw2reg_masked_out_upper_data_d = cio_gpio_q[31:16]; // @[Gpio.scala 44:47]
+ wire [15:0] hw2reg_masked_out_lower_data_d = cio_gpio_q[15:0]; // @[Gpio.scala 46:47]
+ wire [15:0] reg2hw_masked_out_upper_data_q = gpioRegTop_io_reg2hw_masked_out_upper_data_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] reg2hw_masked_out_upper_mask_q = gpioRegTop_io_reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] _T_2 = reg2hw_masked_out_upper_data_q & reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 53:39]
+ wire [15:0] _T_3 = ~reg2hw_masked_out_upper_mask_q; // @[Gpio.scala 54:10]
+ wire [15:0] _T_5 = _T_3 & hw2reg_masked_out_upper_data_d; // @[Gpio.scala 54:42]
+ wire [15:0] _T_6 = _T_2 | _T_5; // @[Gpio.scala 53:73]
+ wire [31:0] _T_7 = {_T_6,16'h0}; // @[Cat.scala 29:58]
+ wire [15:0] reg2hw_masked_out_lower_data_q = gpioRegTop_io_reg2hw_masked_out_lower_data_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] reg2hw_masked_out_lower_mask_q = gpioRegTop_io_reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] _T_8 = reg2hw_masked_out_lower_data_q & reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 63:66]
+ wire [15:0] _T_9 = ~reg2hw_masked_out_lower_mask_q; // @[Gpio.scala 64:36]
+ wire [15:0] _T_11 = _T_9 & hw2reg_masked_out_lower_data_d; // @[Gpio.scala 64:68]
+ wire [15:0] _T_12 = _T_8 | _T_11; // @[Gpio.scala 63:100]
+ wire [31:0] _T_13 = {16'h0,_T_12}; // @[Cat.scala 29:58]
+ wire reg2hw_masked_out_lower_data_qe = gpioRegTop_io_reg2hw_masked_out_lower_data_qe; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire reg2hw_masked_out_upper_data_qe = gpioRegTop_io_reg2hw_masked_out_upper_data_qe; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire reg2hw_direct_out_qe = gpioRegTop_io_reg2hw_direct_out_qe; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [31:0] reg2hw_direct_out_q = gpioRegTop_io_reg2hw_direct_out_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] hw2reg_masked_oe_upper_data_d = cio_gpio_en_q[31:16]; // @[Gpio.scala 69:49]
+ wire [15:0] hw2reg_masked_oe_lower_data_d = cio_gpio_en_q[15:0]; // @[Gpio.scala 71:49]
+ wire [15:0] reg2hw_masked_oe_upper_data_q = gpioRegTop_io_reg2hw_masked_oe_upper_data_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] reg2hw_masked_oe_upper_mask_q = gpioRegTop_io_reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] _T_16 = reg2hw_masked_oe_upper_data_q & reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 77:57]
+ wire [15:0] _T_17 = ~reg2hw_masked_oe_upper_mask_q; // @[Gpio.scala 78:28]
+ wire [15:0] _T_19 = _T_17 & hw2reg_masked_oe_upper_data_d; // @[Gpio.scala 78:59]
+ wire [15:0] _T_20 = _T_16 | _T_19; // @[Gpio.scala 77:90]
+ wire [31:0] _T_21 = {_T_20,16'h0}; // @[Cat.scala 29:58]
+ wire [15:0] reg2hw_masked_oe_lower_data_q = gpioRegTop_io_reg2hw_masked_oe_lower_data_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] reg2hw_masked_oe_lower_mask_q = gpioRegTop_io_reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [15:0] _T_22 = reg2hw_masked_oe_lower_data_q & reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 80:68]
+ wire [15:0] _T_23 = ~reg2hw_masked_oe_lower_mask_q; // @[Gpio.scala 81:38]
+ wire [15:0] _T_25 = _T_23 & hw2reg_masked_oe_lower_data_d; // @[Gpio.scala 81:69]
+ wire [15:0] _T_26 = _T_22 | _T_25; // @[Gpio.scala 80:101]
+ wire [31:0] _T_27 = {16'h0,_T_26}; // @[Cat.scala 29:58]
+ wire reg2hw_masked_oe_lower_data_qe = gpioRegTop_io_reg2hw_masked_oe_lower_data_qe; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire reg2hw_masked_oe_upper_data_qe = gpioRegTop_io_reg2hw_masked_oe_upper_data_qe; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire reg2hw_direct_oe_qe = gpioRegTop_io_reg2hw_direct_oe_qe; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [31:0] reg2hw_direct_oe_q = gpioRegTop_io_reg2hw_direct_oe_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [31:0] _T_28 = ~data_in_q; // @[Gpio.scala 91:23]
+ wire [31:0] _T_29 = _T_28 & io_cio_gpio_i; // @[Gpio.scala 91:34]
+ wire [31:0] reg2hw_intr_ctrl_en_rising_q = gpioRegTop_io_reg2hw_intr_ctrl_en_rising_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [31:0] event_intr_rise = _T_29 & reg2hw_intr_ctrl_en_rising_q; // @[Gpio.scala 91:47]
+ wire [31:0] _T_31 = ~io_cio_gpio_i; // @[Gpio.scala 95:35]
+ wire [31:0] _T_32 = data_in_q & _T_31; // @[Gpio.scala 95:33]
+ wire [31:0] reg2hw_intr_ctrl_en_falling_q = gpioRegTop_io_reg2hw_intr_ctrl_en_falling_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [31:0] event_intr_fall = _T_32 & reg2hw_intr_ctrl_en_falling_q; // @[Gpio.scala 95:47]
+ wire [31:0] reg2hw_intr_ctrl_en_lvlHigh_q = gpioRegTop_io_reg2hw_intr_ctrl_en_lvlHigh_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [31:0] event_intr_acthigh = io_cio_gpio_i & reg2hw_intr_ctrl_en_lvlHigh_q; // @[Gpio.scala 101:35]
+ wire [31:0] reg2hw_intr_ctrl_en_lvlLow_q = gpioRegTop_io_reg2hw_intr_ctrl_en_lvlLow_q; // @[Gpio.scala 18:20 Gpio.scala 24:10]
+ wire [31:0] event_intr_actlow = _T_31 & reg2hw_intr_ctrl_en_lvlLow_q; // @[Gpio.scala 107:35]
+ wire [31:0] _T_37 = event_intr_rise | event_intr_fall; // @[Gpio.scala 109:42]
+ wire [31:0] _T_38 = _T_37 | event_intr_acthigh; // @[Gpio.scala 109:60]
+ GpioRegTop gpioRegTop ( // @[Gpio.scala 21:26]
+ .clock(clock),
+ .reset(reset),
+ .io_tl_i_a_valid(gpioRegTop_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(gpioRegTop_io_tl_i_a_opcode),
+ .io_tl_i_a_address(gpioRegTop_io_tl_i_a_address),
+ .io_tl_i_a_mask(gpioRegTop_io_tl_i_a_mask),
+ .io_tl_i_a_data(gpioRegTop_io_tl_i_a_data),
+ .io_tl_o_d_valid(gpioRegTop_io_tl_o_d_valid),
+ .io_tl_o_d_data(gpioRegTop_io_tl_o_d_data),
+ .io_tl_o_a_ready(gpioRegTop_io_tl_o_a_ready),
+ .io_reg2hw_intr_state_q(gpioRegTop_io_reg2hw_intr_state_q),
+ .io_reg2hw_intr_enable_q(gpioRegTop_io_reg2hw_intr_enable_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 111:23]
+ .clock(clock),
+ .reset(reset),
+ .io_event_intr_i(intr_hw_io_event_intr_i),
+ .io_reg2hw_intr_enable_q_i(intr_hw_io_reg2hw_intr_enable_q_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),
+ .io_intr_o(intr_hw_io_intr_o)
+ );
+ assign io_tl_o_d_valid = gpioRegTop_io_tl_o_d_valid; // @[Gpio.scala 23:11]
+ assign io_tl_o_d_data = gpioRegTop_io_tl_o_d_data; // @[Gpio.scala 23:11]
+ assign io_tl_o_a_ready = gpioRegTop_io_tl_o_a_ready; // @[Gpio.scala 23:11]
+ assign io_cio_gpio_o = cio_gpio_q; // @[Gpio.scala 40:17]
+ assign io_cio_gpio_en_o = cio_gpio_en_q; // @[Gpio.scala 41:20]
+ assign io_intr_gpio_o = intr_hw_io_intr_o; // @[Gpio.scala 119:18]
+ //assign gpioRegTop_clock = clock;
+ // assign gpioRegTopreset = reset;
+ assign gpioRegTop_io_tl_i_a_valid = io_tl_i_a_valid; // @[Gpio.scala 22:22]
+ assign gpioRegTop_io_tl_i_a_opcode = io_tl_i_a_opcode; // @[Gpio.scala 22:22]
+ assign gpioRegTop_io_tl_i_a_address = io_tl_i_a_address; // @[Gpio.scala 22:22]
+ assign gpioRegTop_io_tl_i_a_mask = io_tl_i_a_mask; // @[Gpio.scala 22:22]
+ assign gpioRegTop_io_tl_i_a_data = io_tl_i_a_data; // @[Gpio.scala 22:22]
+ assign gpioRegTop_io_hw2reg_intr_state_d = intr_hw_io_hw2reg_intr_state_d_o; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_intr_state_de = intr_hw_io_hw2reg_intr_state_de_o; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_data_in_d = io_cio_gpio_i; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_direct_out_d = cio_gpio_q; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_masked_out_lower_data_d = cio_gpio_q[15:0]; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_masked_out_upper_data_d = cio_gpio_q[31:16]; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_direct_oe_d = cio_gpio_en_q; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_masked_oe_lower_data_d = cio_gpio_en_q[15:0]; // @[Gpio.scala 25:24]
+ assign gpioRegTop_io_hw2reg_masked_oe_upper_data_d = cio_gpio_en_q[31:16]; // @[Gpio.scala 25:24]
+ // assign intr_hw_clock = clock;
+ // assign intr_hwreset = reset;
+ assign intr_hw_io_event_intr_i = _T_38 | event_intr_actlow; // @[Gpio.scala 112:27]
+ assign intr_hw_io_reg2hw_intr_enable_q_i = gpioRegTop_io_reg2hw_intr_enable_q; // @[Gpio.scala 113:37]
+ assign intr_hw_io_reg2hw_intr_test_q_i = gpioRegTop_io_reg2hw_intr_test_q; // @[Gpio.scala 114:35]
+ assign intr_hw_io_reg2hw_intr_test_qe_i = gpioRegTop_io_reg2hw_intr_test_qe; // @[Gpio.scala 115:36]
+ assign intr_hw_io_reg2hw_intr_state_q_i = gpioRegTop_io_reg2hw_intr_state_q; // @[Gpio.scala 116:36]
+`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
+ always @(posedge clock) begin
+ if (reset) begin
+ cio_gpio_q <= 32'h0;
+ end else if (reg2hw_direct_out_qe) begin
+ cio_gpio_q <= reg2hw_direct_out_q;
+ end else if (reg2hw_masked_out_upper_data_qe) begin
+ cio_gpio_q <= _T_7;
+ end else if (reg2hw_masked_out_lower_data_qe) begin
+ cio_gpio_q <= _T_13;
+ end
+ if (reset) begin
+ cio_gpio_en_q <= 32'h0;
+ end else if (reg2hw_direct_oe_qe) begin
+ cio_gpio_en_q <= reg2hw_direct_oe_q;
+ end else if (reg2hw_masked_oe_upper_data_qe) begin
+ cio_gpio_en_q <= _T_21;
+ end else if (reg2hw_masked_oe_lower_data_qe) begin
+ cio_gpio_en_q <= _T_27;
+ end
+ if (reset) begin
+ data_in_q <= 32'h0;
+ end else begin
+ data_in_q <= io_cio_gpio_i;
+ end
+ end
+endmodule
+module TL_HostAdapter(
+ input io_req_i,
+ output io_gnt_o,
+ input [31:0] io_addr_i,
+ input io_we_i,
+ input [31:0] io_wdata_i,
+ input [3:0] io_be_i,
+ output io_valid_o,
+ output [31:0] io_rdata_o,
+ output io_tl_o_a_valid,
+ output [2:0] io_tl_o_a_opcode,
+ output [31:0] io_tl_o_a_address,
+ output [3:0] io_tl_o_a_mask,
+ output [31:0] io_tl_o_a_data,
+ input io_tl_i_d_valid,
+ input [31:0] io_tl_i_d_data,
+ input io_tl_i_a_ready
+);
+ wire _T_3 = &io_be_i; // @[TL_HostAdapter.scala 35:48]
+ wire [2:0] _T_4 = _T_3 ? 3'h0 : 3'h1; // @[TL_HostAdapter.scala 35:39]
+ assign io_gnt_o = io_tl_i_a_ready; // @[TL_HostAdapter.scala 44:12]
+ assign io_valid_o = io_tl_i_d_valid; // @[TL_HostAdapter.scala 45:14]
+ assign io_rdata_o = io_tl_i_d_data; // @[TL_HostAdapter.scala 46:14]
+ assign io_tl_o_a_valid = io_req_i; // @[TL_HostAdapter.scala 24:21 TL_HostAdapter.scala 34:19]
+ assign io_tl_o_a_opcode = io_we_i ? _T_4 : 3'h4; // @[TL_HostAdapter.scala 35:20]
+ assign io_tl_o_a_address = {io_addr_i[31:2],2'h0}; // @[TL_HostAdapter.scala 40:21]
+ assign io_tl_o_a_mask = io_we_i ? io_be_i : 4'hf; // @[TL_HostAdapter.scala 38:18]
+ assign io_tl_o_a_data = io_wdata_i; // @[TL_HostAdapter.scala 41:18]
+endmodule
+module TL_SramAdapter(
+ input clock,
+ input reset,
+ input io_tl_i_a_valid,
+ input [2:0] io_tl_i_a_opcode,
+ input [31:0] io_tl_i_a_address,
+ input [3:0] io_tl_i_a_mask,
+ output io_tl_o_d_valid,
+ output [31:0] io_tl_o_d_data,
+ output io_tl_o_a_ready,
+ output [5:0] io_addr_o,
+ input [31:0] io_rdata_i
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ wire tlErr_io_tl_i_a_valid; // @[TL_SramAdapter.scala 102:21]
+ wire [2:0] tlErr_io_tl_i_a_opcode; // @[TL_SramAdapter.scala 102:21]
+ wire [31:0] tlErr_io_tl_i_a_address; // @[TL_SramAdapter.scala 102:21]
+ wire [3:0] tlErr_io_tl_i_a_mask; // @[TL_SramAdapter.scala 102:21]
+ wire tlErr_io_err_o; // @[TL_SramAdapter.scala 102:21]
+ reg outstanding; // @[TL_SramAdapter.scala 42:28]
+ wire a_ack = io_tl_i_a_valid & io_tl_o_a_ready; // @[TL_SramAdapter.scala 45:28]
+ wire _GEN_4 = io_tl_o_d_valid ? 1'h0 : outstanding; // @[TL_SramAdapter.scala 73:22]
+ wire _GEN_5 = a_ack | _GEN_4; // @[TL_SramAdapter.scala 67:15]
+ TL_Err tlErr ( // @[TL_SramAdapter.scala 102:21]
+ .io_tl_i_a_valid(tlErr_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(tlErr_io_tl_i_a_opcode),
+ .io_tl_i_a_address(tlErr_io_tl_i_a_address),
+ .io_tl_i_a_mask(tlErr_io_tl_i_a_mask),
+ .io_err_o(tlErr_io_err_o)
+ );
+ assign io_tl_o_d_valid = outstanding; // @[TL_SramAdapter.scala 84:19]
+ assign io_tl_o_d_data = io_rdata_i; // @[TL_SramAdapter.scala 90:18]
+ assign io_tl_o_a_ready = 1'h1; // @[TL_SramAdapter.scala 83:19]
+ assign io_addr_o = io_tl_i_a_address[7:2]; // @[TL_SramAdapter.scala 53:13]
+ assign tlErr_io_tl_i_a_valid = io_tl_i_a_valid; // @[TL_SramAdapter.scala 103:17]
+ assign tlErr_io_tl_i_a_opcode = io_tl_i_a_opcode; // @[TL_SramAdapter.scala 103:17]
+ assign tlErr_io_tl_i_a_address = io_tl_i_a_address; // @[TL_SramAdapter.scala 103:17]
+ assign tlErr_io_tl_i_a_mask = io_tl_i_a_mask; // @[TL_SramAdapter.scala 103:17]
+`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}};
+ outstanding = _RAND_0[0:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ outstanding <= 1'h0;
+ end else begin
+ outstanding <= _GEN_5;
+ end
+ end
+endmodule
+module TL_SramAdapter_1(
+ input clock,
+ input reset,
+ input io_tl_i_a_valid,
+ input [2:0] io_tl_i_a_opcode,
+ input [31:0] io_tl_i_a_address,
+ input [3:0] io_tl_i_a_mask,
+ input [31:0] io_tl_i_a_data,
+ output io_tl_o_d_valid,
+ output [31:0] io_tl_o_d_data,
+ output io_tl_o_a_ready,
+ output io_we_o_0,
+ output io_we_o_1,
+ output io_we_o_2,
+ output io_we_o_3,
+ output [5:0] io_addr_o,
+ output [31:0] io_wdata_o,
+ input [31:0] io_rdata_i
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+ reg [31:0] _RAND_1;
+`endif // RANDOMIZE_REG_INIT
+ wire tlErr_io_tl_i_a_valid; // @[TL_SramAdapter.scala 102:21]
+ wire [2:0] tlErr_io_tl_i_a_opcode; // @[TL_SramAdapter.scala 102:21]
+ wire [31:0] tlErr_io_tl_i_a_address; // @[TL_SramAdapter.scala 102:21]
+ wire [3:0] tlErr_io_tl_i_a_mask; // @[TL_SramAdapter.scala 102:21]
+ wire tlErr_io_err_o; // @[TL_SramAdapter.scala 102:21]
+ reg error; // @[TL_SramAdapter.scala 29:22]
+ reg outstanding; // @[TL_SramAdapter.scala 42:28]
+ wire a_ack = io_tl_i_a_valid & io_tl_o_a_ready; // @[TL_SramAdapter.scala 45:28]
+ wire _T_2 = io_tl_i_a_opcode == 3'h0; // @[TL_SramAdapter.scala 48:41]
+ wire _T_3 = io_tl_i_a_opcode == 3'h1; // @[TL_SramAdapter.scala 48:91]
+ wire _T_4 = _T_2 | _T_3; // @[TL_SramAdapter.scala 48:70]
+ wire wr_req = a_ack & _T_4; // @[TL_SramAdapter.scala 48:19]
+ wire _T_29 = |io_tl_i_a_address[1:0]; // @[TL_SramAdapter.scala 96:46]
+ wire addr_align_err = wr_req & _T_29; // @[TL_SramAdapter.scala 95:16]
+ wire tl_err = tlErr_io_err_o; // @[TL_SramAdapter.scala 33:20 TL_SramAdapter.scala 104:10]
+ wire err_internal = addr_align_err | tl_err; // @[TL_SramAdapter.scala 93:34]
+ wire _T_9 = ~err_internal; // @[TL_SramAdapter.scala 57:18]
+ wire _T_10 = wr_req & _T_9; // @[TL_SramAdapter.scala 57:15]
+ wire _GEN_4 = io_tl_o_d_valid ? 1'h0 : outstanding; // @[TL_SramAdapter.scala 73:22]
+ wire _GEN_5 = a_ack | _GEN_4; // @[TL_SramAdapter.scala 67:15]
+ wire [31:0] _T_23 = error ? 32'hffffffff : io_rdata_i; // @[TL_SramAdapter.scala 78:17]
+ TL_Err tlErr ( // @[TL_SramAdapter.scala 102:21]
+ .io_tl_i_a_valid(tlErr_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(tlErr_io_tl_i_a_opcode),
+ .io_tl_i_a_address(tlErr_io_tl_i_a_address),
+ .io_tl_i_a_mask(tlErr_io_tl_i_a_mask),
+ .io_err_o(tlErr_io_err_o)
+ );
+ assign io_tl_o_d_valid = outstanding; // @[TL_SramAdapter.scala 84:19]
+ assign io_tl_o_d_data = outstanding ? _T_23 : 32'h0; // @[TL_SramAdapter.scala 90:18]
+ assign io_tl_o_a_ready = ~outstanding; // @[TL_SramAdapter.scala 83:19]
+ assign io_we_o_0 = _T_10 & io_tl_i_a_mask[0]; // @[TL_SramAdapter.scala 59:18 TL_SramAdapter.scala 63:18]
+ assign io_we_o_1 = _T_10 & io_tl_i_a_mask[1]; // @[TL_SramAdapter.scala 59:18 TL_SramAdapter.scala 63:18]
+ assign io_we_o_2 = _T_10 & io_tl_i_a_mask[2]; // @[TL_SramAdapter.scala 59:18 TL_SramAdapter.scala 63:18]
+ assign io_we_o_3 = _T_10 & io_tl_i_a_mask[3]; // @[TL_SramAdapter.scala 59:18 TL_SramAdapter.scala 63:18]
+ assign io_addr_o = io_tl_i_a_address[7:2]; // @[TL_SramAdapter.scala 53:13]
+ assign io_wdata_o = io_tl_i_a_data; // @[TL_SramAdapter.scala 54:14]
+ assign tlErr_io_tl_i_a_valid = io_tl_i_a_valid; // @[TL_SramAdapter.scala 103:17]
+ assign tlErr_io_tl_i_a_opcode = io_tl_i_a_opcode; // @[TL_SramAdapter.scala 103:17]
+ assign tlErr_io_tl_i_a_address = io_tl_i_a_address; // @[TL_SramAdapter.scala 103:17]
+ assign tlErr_io_tl_i_a_mask = io_tl_i_a_mask; // @[TL_SramAdapter.scala 103:17]
+`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}};
+ error = _RAND_0[0:0];
+ _RAND_1 = {1{`RANDOM}};
+ outstanding = _RAND_1[0:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ error <= 1'h0;
+ end else if (a_ack) begin
+ error <= err_internal;
+ end
+ if (reset) begin
+ outstanding <= 1'h0;
+ end else begin
+ outstanding <= _GEN_5;
+ end
+ end
+endmodule
+module TL_ErrResp(
+ input clock,
+ input reset,
+ input io_tl_h_i_a_valid,
+ output io_tl_d_o_d_valid,
+ output io_tl_d_o_a_ready
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+`endif // RANDOMIZE_REG_INIT
+ reg err_reqPending; // @[TL_ErrResp.scala 15:31]
+ wire _T = io_tl_h_i_a_valid & io_tl_d_o_a_ready; // @[TL_ErrResp.scala 18:26]
+ assign io_tl_d_o_d_valid = err_reqPending; // @[TL_ErrResp.scala 39:21]
+ assign io_tl_d_o_a_ready = 1'h1; // @[TL_ErrResp.scala 38:21]
+`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}};
+ err_reqPending = _RAND_0[0:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ err_reqPending <= 1'h0;
+ end else begin
+ err_reqPending <= _T;
+ end
+ end
+endmodule
+module TLSocket1_N(
+ input clock,
+ input reset,
+ input io_tl_h_i_a_valid,
+ input [2:0] io_tl_h_i_a_opcode,
+ input [31:0] io_tl_h_i_a_address,
+ input [3:0] io_tl_h_i_a_mask,
+ input [31:0] io_tl_h_i_a_data,
+ output io_tl_h_o_d_valid,
+ output [31:0] io_tl_h_o_d_data,
+ output io_tl_h_o_a_ready,
+ output io_tl_d_o_0_a_valid,
+ output [2:0] io_tl_d_o_0_a_opcode,
+ output [31:0] io_tl_d_o_0_a_address,
+ output [3:0] io_tl_d_o_0_a_mask,
+ output [31:0] io_tl_d_o_0_a_data,
+ output io_tl_d_o_1_a_valid,
+ output [2:0] io_tl_d_o_1_a_opcode,
+ output [31:0] io_tl_d_o_1_a_address,
+ output [3:0] io_tl_d_o_1_a_mask,
+ output [31:0] io_tl_d_o_1_a_data,
+ input io_tl_d_i_0_d_valid,
+ input [31:0] io_tl_d_i_0_d_data,
+ input io_tl_d_i_0_a_ready,
+ input io_tl_d_i_1_d_valid,
+ input [31:0] io_tl_d_i_1_d_data,
+ input io_tl_d_i_1_a_ready,
+ input [1:0] io_dev_sel
+);
+ // wire tl_errResp_clock; // @[TLSocket1_N.scala 72:26]
+ // wire tl_errRespreset; // @[TLSocket1_N.scala 72:26]
+ wire tl_errResp_io_tl_h_i_a_valid; // @[TLSocket1_N.scala 72:26]
+ wire tl_errResp_io_tl_d_o_d_valid; // @[TLSocket1_N.scala 72:26]
+ wire tl_errResp_io_tl_d_o_a_ready; // @[TLSocket1_N.scala 72:26]
+ wire _T = io_dev_sel == 2'h0; // @[TLSocket1_N.scala 29:62]
+ wire _T_2 = io_dev_sel == 2'h1; // @[TLSocket1_N.scala 29:62]
+ wire _GEN_0 = _T ? io_tl_d_i_0_a_ready : 1'h1; // @[TLSocket1_N.scala 46:36]
+ wire tl_err_d_i_d_valid = tl_errResp_io_tl_d_o_d_valid; // @[TLSocket1_N.scala 21:24 TLSocket1_N.scala 74:14]
+ wire _GEN_1 = _T ? io_tl_d_i_0_d_valid : tl_err_d_i_d_valid; // @[TLSocket1_N.scala 46:36]
+ wire [31:0] _GEN_7 = _T ? io_tl_d_i_0_d_data : 32'hffffffff; // @[TLSocket1_N.scala 46:36]
+ wire _T_6 = io_dev_sel == 2'h2; // @[TLSocket1_N.scala 62:58]
+ TL_ErrResp tl_errResp ( // @[TLSocket1_N.scala 72:26]
+ .clock(clock),
+ .reset(reset),
+ .io_tl_h_i_a_valid(tl_errResp_io_tl_h_i_a_valid),
+ .io_tl_d_o_d_valid(tl_errResp_io_tl_d_o_d_valid),
+ .io_tl_d_o_a_ready(tl_errResp_io_tl_d_o_a_ready)
+ );
+ assign io_tl_h_o_d_valid = _T_2 ? io_tl_d_i_1_d_valid : _GEN_1; // @[TLSocket1_N.scala 26:13 TLSocket1_N.scala 49:25 TLSocket1_N.scala 49:25]
+ assign io_tl_h_o_d_data = _T_2 ? io_tl_d_i_1_d_data : _GEN_7; // @[TLSocket1_N.scala 26:13 TLSocket1_N.scala 55:24 TLSocket1_N.scala 55:24]
+ assign io_tl_h_o_a_ready = _T_2 ? io_tl_d_i_1_a_ready : _GEN_0; // @[TLSocket1_N.scala 26:13 TLSocket1_N.scala 48:25 TLSocket1_N.scala 48:25]
+ assign io_tl_d_o_0_a_valid = io_tl_h_i_a_valid & _T; // @[TLSocket1_N.scala 29:26]
+ assign io_tl_d_o_0_a_opcode = io_tl_h_i_a_opcode; // @[TLSocket1_N.scala 30:27]
+ assign io_tl_d_o_0_a_address = io_tl_h_i_a_address; // @[TLSocket1_N.scala 34:28]
+ assign io_tl_d_o_0_a_mask = io_tl_h_i_a_mask; // @[TLSocket1_N.scala 35:25]
+ assign io_tl_d_o_0_a_data = io_tl_h_i_a_data; // @[TLSocket1_N.scala 36:25]
+ assign io_tl_d_o_1_a_valid = io_tl_h_i_a_valid & _T_2; // @[TLSocket1_N.scala 29:26]
+ assign io_tl_d_o_1_a_opcode = io_tl_h_i_a_opcode; // @[TLSocket1_N.scala 30:27]
+ assign io_tl_d_o_1_a_address = io_tl_h_i_a_address; // @[TLSocket1_N.scala 34:28]
+ assign io_tl_d_o_1_a_mask = io_tl_h_i_a_mask; // @[TLSocket1_N.scala 35:25]
+ assign io_tl_d_o_1_a_data = io_tl_h_i_a_data; // @[TLSocket1_N.scala 36:25]
+ //assign tl_errResp_clock = clock;
+ // assign tl_errRespreset = reset;
+ assign tl_errResp_io_tl_h_i_a_valid = io_tl_h_i_a_valid & _T_6; // @[TLSocket1_N.scala 73:24]
+endmodule
+module Ibtida_top(
+ input clock,
+ input reset,
+ input io_rx_i,
+ input [15:0] io_CLK_PER_BIT,
+ input [31:0] io_gpio_i,
+ output [31:0] io_gpio_o,
+ output [31:0] io_gpio_en_o,
+ output io_iccm_we_o_0,
+ output io_iccm_we_o_1,
+ output io_iccm_we_o_2,
+ output io_iccm_we_o_3,
+ output [31:0] io_iccm_wdata_o,
+ output [7:0] io_iccm_addr_o,
+ input [31:0] io_iccm_rdata_i,
+ output io_dccm_we_o_0,
+ output io_dccm_we_o_1,
+ output io_dccm_we_o_2,
+ output io_dccm_we_o_3,
+ output [31:0] io_dccm_wdata_o,
+ output [7:0] io_dccm_addr_o,
+ input [31:0] io_dccm_rdata_i
+);
+`ifdef RANDOMIZE_REG_INIT
+ reg [31:0] _RAND_0;
+ reg [31:0] _RAND_1;
+ reg [31:0] _RAND_2;
+ reg [31:0] _RAND_3;
+`endif // RANDOMIZE_REG_INIT
+ //wire uart_ctrl_clock; // @[Ibtida_top.scala 30:25]
+ // wire uart_ctrlreset; // @[Ibtida_top.scala 30:25]
+ wire uart_ctrl_io_isStalled; // @[Ibtida_top.scala 30:25]
+ wire [31:0] uart_ctrl_io_rx_data_o; // @[Ibtida_top.scala 30:25]
+ wire [7:0] uart_ctrl_io_addr_o; // @[Ibtida_top.scala 30:25]
+ wire [15:0] uart_ctrl_io_CLK_PER_BIT; // @[Ibtida_top.scala 30:25]
+ wire uart_ctrl_io_rxd; // @[Ibtida_top.scala 30:25]
+ wire uart_ctrl_io_valid; // @[Ibtida_top.scala 30:25]
+ wire uart_ctrl_io_done; // @[Ibtida_top.scala 30:25]
+ //wire core_clock; // @[Ibtida_top.scala 33:51]
+ // wire corereset; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_gnt_i; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_rvalid_i; // @[Ibtida_top.scala 33:51]
+ wire [31:0] core_io_data_rdata_i; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_req_o; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_we_o; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_be_o_0; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_be_o_1; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_be_o_2; // @[Ibtida_top.scala 33:51]
+ wire core_io_data_be_o_3; // @[Ibtida_top.scala 33:51]
+ wire [31:0] core_io_data_addr_o; // @[Ibtida_top.scala 33:51]
+ wire [7:0] core_io_data_wdata_o_0; // @[Ibtida_top.scala 33:51]
+ wire [7:0] core_io_data_wdata_o_1; // @[Ibtida_top.scala 33:51]
+ wire [7:0] core_io_data_wdata_o_2; // @[Ibtida_top.scala 33:51]
+ wire [7:0] core_io_data_wdata_o_3; // @[Ibtida_top.scala 33:51]
+ wire core_io_instr_gnt_i; // @[Ibtida_top.scala 33:51]
+ wire core_io_instr_rvalid_i; // @[Ibtida_top.scala 33:51]
+ wire [31:0] core_io_instr_rdata_i; // @[Ibtida_top.scala 33:51]
+ wire core_io_instr_req_o; // @[Ibtida_top.scala 33:51]
+ wire [31:0] core_io_instr_addr_o; // @[Ibtida_top.scala 33:51]
+ wire core_io_stall_core_i; // @[Ibtida_top.scala 33:51]
+ wire core_io_irq_external_i; // @[Ibtida_top.scala 33:51]
+ //wire gpio_clock; // @[Ibtida_top.scala 36:51]
+ // wire gpioreset; // @[Ibtida_top.scala 36:51]
+ wire gpio_io_tl_i_a_valid; // @[Ibtida_top.scala 36:51]
+ wire [2:0] gpio_io_tl_i_a_opcode; // @[Ibtida_top.scala 36:51]
+ wire [31:0] gpio_io_tl_i_a_address; // @[Ibtida_top.scala 36:51]
+ wire [3:0] gpio_io_tl_i_a_mask; // @[Ibtida_top.scala 36:51]
+ wire [31:0] gpio_io_tl_i_a_data; // @[Ibtida_top.scala 36:51]
+ wire gpio_io_tl_o_d_valid; // @[Ibtida_top.scala 36:51]
+ wire [31:0] gpio_io_tl_o_d_data; // @[Ibtida_top.scala 36:51]
+ wire gpio_io_tl_o_a_ready; // @[Ibtida_top.scala 36:51]
+ wire [31:0] gpio_io_cio_gpio_i; // @[Ibtida_top.scala 36:51]
+ wire [31:0] gpio_io_cio_gpio_o; // @[Ibtida_top.scala 36:51]
+ wire [31:0] gpio_io_cio_gpio_en_o; // @[Ibtida_top.scala 36:51]
+ wire [31:0] gpio_io_intr_gpio_o; // @[Ibtida_top.scala 36:51]
+ wire core_iccm_tl_host_io_req_i; // @[Ibtida_top.scala 37:51]
+ wire core_iccm_tl_host_io_gnt_o; // @[Ibtida_top.scala 37:51]
+ wire [31:0] core_iccm_tl_host_io_addr_i; // @[Ibtida_top.scala 37:51]
+ wire core_iccm_tl_host_io_we_i; // @[Ibtida_top.scala 37:51]
+ wire [31:0] core_iccm_tl_host_io_wdata_i; // @[Ibtida_top.scala 37:51]
+ wire [3:0] core_iccm_tl_host_io_be_i; // @[Ibtida_top.scala 37:51]
+ wire core_iccm_tl_host_io_valid_o; // @[Ibtida_top.scala 37:51]
+ wire [31:0] core_iccm_tl_host_io_rdata_o; // @[Ibtida_top.scala 37:51]
+ wire core_iccm_tl_host_io_tl_o_a_valid; // @[Ibtida_top.scala 37:51]
+ wire [2:0] core_iccm_tl_host_io_tl_o_a_opcode; // @[Ibtida_top.scala 37:51]
+ wire [31:0] core_iccm_tl_host_io_tl_o_a_address; // @[Ibtida_top.scala 37:51]
+ wire [3:0] core_iccm_tl_host_io_tl_o_a_mask; // @[Ibtida_top.scala 37:51]
+ wire [31:0] core_iccm_tl_host_io_tl_o_a_data; // @[Ibtida_top.scala 37:51]
+ wire core_iccm_tl_host_io_tl_i_d_valid; // @[Ibtida_top.scala 37:51]
+ wire [31:0] core_iccm_tl_host_io_tl_i_d_data; // @[Ibtida_top.scala 37:51]
+ wire core_iccm_tl_host_io_tl_i_a_ready; // @[Ibtida_top.scala 37:51]
+ wire core_loadStore_tl_host_io_req_i; // @[Ibtida_top.scala 38:51]
+ wire core_loadStore_tl_host_io_gnt_o; // @[Ibtida_top.scala 38:51]
+ wire [31:0] core_loadStore_tl_host_io_addr_i; // @[Ibtida_top.scala 38:51]
+ wire core_loadStore_tl_host_io_we_i; // @[Ibtida_top.scala 38:51]
+ wire [31:0] core_loadStore_tl_host_io_wdata_i; // @[Ibtida_top.scala 38:51]
+ wire [3:0] core_loadStore_tl_host_io_be_i; // @[Ibtida_top.scala 38:51]
+ wire core_loadStore_tl_host_io_valid_o; // @[Ibtida_top.scala 38:51]
+ wire [31:0] core_loadStore_tl_host_io_rdata_o; // @[Ibtida_top.scala 38:51]
+ wire core_loadStore_tl_host_io_tl_o_a_valid; // @[Ibtida_top.scala 38:51]
+ wire [2:0] core_loadStore_tl_host_io_tl_o_a_opcode; // @[Ibtida_top.scala 38:51]
+ wire [31:0] core_loadStore_tl_host_io_tl_o_a_address; // @[Ibtida_top.scala 38:51]
+ wire [3:0] core_loadStore_tl_host_io_tl_o_a_mask; // @[Ibtida_top.scala 38:51]
+ wire [31:0] core_loadStore_tl_host_io_tl_o_a_data; // @[Ibtida_top.scala 38:51]
+ wire core_loadStore_tl_host_io_tl_i_d_valid; // @[Ibtida_top.scala 38:51]
+ wire [31:0] core_loadStore_tl_host_io_tl_i_d_data; // @[Ibtida_top.scala 38:51]
+ wire core_loadStore_tl_host_io_tl_i_a_ready; // @[Ibtida_top.scala 38:51]
+ //wire iccm_tl_device_clock; // @[Ibtida_top.scala 39:51]
+ // wire iccm_tl_devicereset; // @[Ibtida_top.scala 39:51]
+ wire iccm_tl_device_io_tl_i_a_valid; // @[Ibtida_top.scala 39:51]
+ wire [2:0] iccm_tl_device_io_tl_i_a_opcode; // @[Ibtida_top.scala 39:51]
+ wire [31:0] iccm_tl_device_io_tl_i_a_address; // @[Ibtida_top.scala 39:51]
+ wire [3:0] iccm_tl_device_io_tl_i_a_mask; // @[Ibtida_top.scala 39:51]
+ wire iccm_tl_device_io_tl_o_d_valid; // @[Ibtida_top.scala 39:51]
+ wire [31:0] iccm_tl_device_io_tl_o_d_data; // @[Ibtida_top.scala 39:51]
+ wire iccm_tl_device_io_tl_o_a_ready; // @[Ibtida_top.scala 39:51]
+ wire [5:0] iccm_tl_device_io_addr_o; // @[Ibtida_top.scala 39:51]
+ wire [31:0] iccm_tl_device_io_rdata_i; // @[Ibtida_top.scala 39:51]
+ // wire dccm_tl_device_clock; // @[Ibtida_top.scala 40:51]
+ // wire dccm_tl_devicereset; // @[Ibtida_top.scala 40:51]
+ wire dccm_tl_device_io_tl_i_a_valid; // @[Ibtida_top.scala 40:51]
+ wire [2:0] dccm_tl_device_io_tl_i_a_opcode; // @[Ibtida_top.scala 40:51]
+ wire [31:0] dccm_tl_device_io_tl_i_a_address; // @[Ibtida_top.scala 40:51]
+ wire [3:0] dccm_tl_device_io_tl_i_a_mask; // @[Ibtida_top.scala 40:51]
+ wire [31:0] dccm_tl_device_io_tl_i_a_data; // @[Ibtida_top.scala 40:51]
+ wire dccm_tl_device_io_tl_o_d_valid; // @[Ibtida_top.scala 40:51]
+ wire [31:0] dccm_tl_device_io_tl_o_d_data; // @[Ibtida_top.scala 40:51]
+ wire dccm_tl_device_io_tl_o_a_ready; // @[Ibtida_top.scala 40:51]
+ wire dccm_tl_device_io_we_o_0; // @[Ibtida_top.scala 40:51]
+ wire dccm_tl_device_io_we_o_1; // @[Ibtida_top.scala 40:51]
+ wire dccm_tl_device_io_we_o_2; // @[Ibtida_top.scala 40:51]
+ wire dccm_tl_device_io_we_o_3; // @[Ibtida_top.scala 40:51]
+ wire [5:0] dccm_tl_device_io_addr_o; // @[Ibtida_top.scala 40:51]
+ wire [31:0] dccm_tl_device_io_wdata_o; // @[Ibtida_top.scala 40:51]
+ wire [31:0] dccm_tl_device_io_rdata_i; // @[Ibtida_top.scala 40:51]
+ // wire tl_switch_1to2_clock; // @[Ibtida_top.scala 41:51]
+ // wire tl_switch_1to2reset; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_h_i_a_valid; // @[Ibtida_top.scala 41:51]
+ wire [2:0] tl_switch_1to2_io_tl_h_i_a_opcode; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_h_i_a_address; // @[Ibtida_top.scala 41:51]
+ wire [3:0] tl_switch_1to2_io_tl_h_i_a_mask; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_h_i_a_data; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_h_o_d_valid; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_h_o_d_data; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_h_o_a_ready; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_d_o_0_a_valid; // @[Ibtida_top.scala 41:51]
+ wire [2:0] tl_switch_1to2_io_tl_d_o_0_a_opcode; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_d_o_0_a_address; // @[Ibtida_top.scala 41:51]
+ wire [3:0] tl_switch_1to2_io_tl_d_o_0_a_mask; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_d_o_0_a_data; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_d_o_1_a_valid; // @[Ibtida_top.scala 41:51]
+ wire [2:0] tl_switch_1to2_io_tl_d_o_1_a_opcode; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_d_o_1_a_address; // @[Ibtida_top.scala 41:51]
+ wire [3:0] tl_switch_1to2_io_tl_d_o_1_a_mask; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_d_o_1_a_data; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_d_i_0_d_valid; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_d_i_0_d_data; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_d_i_0_a_ready; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_d_i_1_d_valid; // @[Ibtida_top.scala 41:51]
+ wire [31:0] tl_switch_1to2_io_tl_d_i_1_d_data; // @[Ibtida_top.scala 41:51]
+ wire tl_switch_1to2_io_tl_d_i_1_a_ready; // @[Ibtida_top.scala 41:51]
+ wire [1:0] tl_switch_1to2_io_dev_sel; // @[Ibtida_top.scala 41:51]
+ reg [31:0] rx_data_reg; // @[Ibtida_top.scala 49:52]
+ reg [31:0] rx_addr_reg; // @[Ibtida_top.scala 50:52]
+ reg reset_reg; // @[Ibtida_top.scala 51:52]
+ reg [1:0] state_reg; // @[Ibtida_top.scala 55:52]
+ wire _T_1 = state_reg == 2'h0; // @[Ibtida_top.scala 59:18]
+ wire _T_4 = ~reset; // @[Ibtida_top.scala 61:49]
+ wire _T_5 = reset_reg & _T_4; // @[Ibtida_top.scala 61:31]
+ wire _T_6 = state_reg == 2'h1; // @[Ibtida_top.scala 78:25]
+ wire [7:0] _T_8 = uart_ctrl_io_valid ? uart_ctrl_io_addr_o : 8'h0; // @[Ibtida_top.scala 112:48]
+ wire _T_9 = state_reg == 2'h2; // @[Ibtida_top.scala 114:25]
+ wire _T_10 = state_reg == 2'h3; // @[Ibtida_top.scala 138:25]
+ wire [5:0] _GEN_4 = iccm_tl_device_io_addr_o; // @[Ibtida_top.scala 138:42]
+ wire [31:0] _GEN_10 = _T_9 ? rx_addr_reg : {{26'd0}, _GEN_4}; // @[Ibtida_top.scala 114:41]
+ wire _GEN_13 = _T_6 ? 1'h0 : _T_9; // @[Ibtida_top.scala 78:40]
+ wire _GEN_16 = _T_6 | _T_9; // @[Ibtida_top.scala 78:40]
+ wire [31:0] instr_addr = _T_1 ? {{26'd0}, iccm_tl_device_io_addr_o} : _GEN_10; // @[Ibtida_top.scala 59:28]
+ wire [31:0] _T_12 = core_loadStore_tl_host_io_tl_o_a_address & 32'hfffff000; // @[Ibtida_top.scala 172:14]
+ wire _T_13 = _T_12 == 32'h40010000; // @[Ibtida_top.scala 172:44]
+ wire [31:0] _T_15 = core_loadStore_tl_host_io_tl_o_a_address & 32'hffffff03; // @[Ibtida_top.scala 176:20]
+ wire _T_16 = _T_15 == 32'h10000000; // @[Ibtida_top.scala 176:50]
+ wire [1:0] _GEN_26 = _T_16 ? 2'h0 : 2'h2; // @[Ibtida_top.scala 176:82]
+ wire [15:0] _T_22 = {core_io_data_wdata_o_1,core_io_data_wdata_o_0}; // @[Ibtida_top.scala 253:72]
+ wire [15:0] _T_23 = {core_io_data_wdata_o_3,core_io_data_wdata_o_2}; // @[Ibtida_top.scala 253:72]
+ wire [1:0] _T_25 = {core_io_data_be_o_1,core_io_data_be_o_0}; // @[Cat.scala 29:58]
+ wire [1:0] _T_26 = {core_io_data_be_o_3,core_io_data_be_o_2}; // @[Cat.scala 29:58]
+ wire [3:0] _T_34 = {io_dccm_rdata_i[3],io_dccm_rdata_i[2],io_dccm_rdata_i[1],io_dccm_rdata_i[0]}; // @[Cat.scala 29:58]
+ UartController uart_ctrl ( // @[Ibtida_top.scala 30:25]
+ .clock(clock),
+ .reset(reset),
+ .io_isStalled(uart_ctrl_io_isStalled),
+ .io_rx_data_o(uart_ctrl_io_rx_data_o),
+ .io_addr_o(uart_ctrl_io_addr_o),
+ .io_CLK_PER_BIT(uart_ctrl_io_CLK_PER_BIT),
+ .io_rxd(uart_ctrl_io_rxd),
+ .io_valid(uart_ctrl_io_valid),
+ .io_done(uart_ctrl_io_done)
+ );
+ Core core ( // @[Ibtida_top.scala 33:51]
+ .clock(clock),
+ .reset(reset),
+ .io_data_gnt_i(core_io_data_gnt_i),
+ .io_data_rvalid_i(core_io_data_rvalid_i),
+ .io_data_rdata_i(core_io_data_rdata_i),
+ .io_data_req_o(core_io_data_req_o),
+ .io_data_we_o(core_io_data_we_o),
+ .io_data_be_o_0(core_io_data_be_o_0),
+ .io_data_be_o_1(core_io_data_be_o_1),
+ .io_data_be_o_2(core_io_data_be_o_2),
+ .io_data_be_o_3(core_io_data_be_o_3),
+ .io_data_addr_o(core_io_data_addr_o),
+ .io_data_wdata_o_0(core_io_data_wdata_o_0),
+ .io_data_wdata_o_1(core_io_data_wdata_o_1),
+ .io_data_wdata_o_2(core_io_data_wdata_o_2),
+ .io_data_wdata_o_3(core_io_data_wdata_o_3),
+ .io_instr_gnt_i(core_io_instr_gnt_i),
+ .io_instr_rvalid_i(core_io_instr_rvalid_i),
+ .io_instr_rdata_i(core_io_instr_rdata_i),
+ .io_instr_req_o(core_io_instr_req_o),
+ .io_instr_addr_o(core_io_instr_addr_o),
+ .io_stall_core_i(core_io_stall_core_i),
+ .io_irq_external_i(core_io_irq_external_i)
+ );
+ Gpio gpio ( // @[Ibtida_top.scala 36:51]
+ .clock(clock),
+ .reset(reset),
+ .io_tl_i_a_valid(gpio_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(gpio_io_tl_i_a_opcode),
+ .io_tl_i_a_address(gpio_io_tl_i_a_address),
+ .io_tl_i_a_mask(gpio_io_tl_i_a_mask),
+ .io_tl_i_a_data(gpio_io_tl_i_a_data),
+ .io_tl_o_d_valid(gpio_io_tl_o_d_valid),
+ .io_tl_o_d_data(gpio_io_tl_o_d_data),
+ .io_tl_o_a_ready(gpio_io_tl_o_a_ready),
+ .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),
+ .io_intr_gpio_o(gpio_io_intr_gpio_o)
+ );
+ TL_HostAdapter core_iccm_tl_host ( // @[Ibtida_top.scala 37:51]
+ .io_req_i(core_iccm_tl_host_io_req_i),
+ .io_gnt_o(core_iccm_tl_host_io_gnt_o),
+ .io_addr_i(core_iccm_tl_host_io_addr_i),
+ .io_we_i(core_iccm_tl_host_io_we_i),
+ .io_wdata_i(core_iccm_tl_host_io_wdata_i),
+ .io_be_i(core_iccm_tl_host_io_be_i),
+ .io_valid_o(core_iccm_tl_host_io_valid_o),
+ .io_rdata_o(core_iccm_tl_host_io_rdata_o),
+ .io_tl_o_a_valid(core_iccm_tl_host_io_tl_o_a_valid),
+ .io_tl_o_a_opcode(core_iccm_tl_host_io_tl_o_a_opcode),
+ .io_tl_o_a_address(core_iccm_tl_host_io_tl_o_a_address),
+ .io_tl_o_a_mask(core_iccm_tl_host_io_tl_o_a_mask),
+ .io_tl_o_a_data(core_iccm_tl_host_io_tl_o_a_data),
+ .io_tl_i_d_valid(core_iccm_tl_host_io_tl_i_d_valid),
+ .io_tl_i_d_data(core_iccm_tl_host_io_tl_i_d_data),
+ .io_tl_i_a_ready(core_iccm_tl_host_io_tl_i_a_ready)
+ );
+ TL_HostAdapter core_loadStore_tl_host ( // @[Ibtida_top.scala 38:51]
+ .io_req_i(core_loadStore_tl_host_io_req_i),
+ .io_gnt_o(core_loadStore_tl_host_io_gnt_o),
+ .io_addr_i(core_loadStore_tl_host_io_addr_i),
+ .io_we_i(core_loadStore_tl_host_io_we_i),
+ .io_wdata_i(core_loadStore_tl_host_io_wdata_i),
+ .io_be_i(core_loadStore_tl_host_io_be_i),
+ .io_valid_o(core_loadStore_tl_host_io_valid_o),
+ .io_rdata_o(core_loadStore_tl_host_io_rdata_o),
+ .io_tl_o_a_valid(core_loadStore_tl_host_io_tl_o_a_valid),
+ .io_tl_o_a_opcode(core_loadStore_tl_host_io_tl_o_a_opcode),
+ .io_tl_o_a_address(core_loadStore_tl_host_io_tl_o_a_address),
+ .io_tl_o_a_mask(core_loadStore_tl_host_io_tl_o_a_mask),
+ .io_tl_o_a_data(core_loadStore_tl_host_io_tl_o_a_data),
+ .io_tl_i_d_valid(core_loadStore_tl_host_io_tl_i_d_valid),
+ .io_tl_i_d_data(core_loadStore_tl_host_io_tl_i_d_data),
+ .io_tl_i_a_ready(core_loadStore_tl_host_io_tl_i_a_ready)
+ );
+ TL_SramAdapter iccm_tl_device ( // @[Ibtida_top.scala 39:51]
+ .clock(clock),
+ .reset(reset),
+ .io_tl_i_a_valid(iccm_tl_device_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(iccm_tl_device_io_tl_i_a_opcode),
+ .io_tl_i_a_address(iccm_tl_device_io_tl_i_a_address),
+ .io_tl_i_a_mask(iccm_tl_device_io_tl_i_a_mask),
+ .io_tl_o_d_valid(iccm_tl_device_io_tl_o_d_valid),
+ .io_tl_o_d_data(iccm_tl_device_io_tl_o_d_data),
+ .io_tl_o_a_ready(iccm_tl_device_io_tl_o_a_ready),
+ .io_addr_o(iccm_tl_device_io_addr_o),
+ .io_rdata_i(iccm_tl_device_io_rdata_i)
+ );
+ TL_SramAdapter_1 dccm_tl_device ( // @[Ibtida_top.scala 40:51]
+ .clock(clock),
+ .reset(reset),
+ .io_tl_i_a_valid(dccm_tl_device_io_tl_i_a_valid),
+ .io_tl_i_a_opcode(dccm_tl_device_io_tl_i_a_opcode),
+ .io_tl_i_a_address(dccm_tl_device_io_tl_i_a_address),
+ .io_tl_i_a_mask(dccm_tl_device_io_tl_i_a_mask),
+ .io_tl_i_a_data(dccm_tl_device_io_tl_i_a_data),
+ .io_tl_o_d_valid(dccm_tl_device_io_tl_o_d_valid),
+ .io_tl_o_d_data(dccm_tl_device_io_tl_o_d_data),
+ .io_tl_o_a_ready(dccm_tl_device_io_tl_o_a_ready),
+ .io_we_o_0(dccm_tl_device_io_we_o_0),
+ .io_we_o_1(dccm_tl_device_io_we_o_1),
+ .io_we_o_2(dccm_tl_device_io_we_o_2),
+ .io_we_o_3(dccm_tl_device_io_we_o_3),
+ .io_addr_o(dccm_tl_device_io_addr_o),
+ .io_wdata_o(dccm_tl_device_io_wdata_o),
+ .io_rdata_i(dccm_tl_device_io_rdata_i)
+ );
+ TLSocket1_N tl_switch_1to2 ( // @[Ibtida_top.scala 41:51]
+ .clock(clock),
+ .reset(reset),
+ .io_tl_h_i_a_valid(tl_switch_1to2_io_tl_h_i_a_valid),
+ .io_tl_h_i_a_opcode(tl_switch_1to2_io_tl_h_i_a_opcode),
+ .io_tl_h_i_a_address(tl_switch_1to2_io_tl_h_i_a_address),
+ .io_tl_h_i_a_mask(tl_switch_1to2_io_tl_h_i_a_mask),
+ .io_tl_h_i_a_data(tl_switch_1to2_io_tl_h_i_a_data),
+ .io_tl_h_o_d_valid(tl_switch_1to2_io_tl_h_o_d_valid),
+ .io_tl_h_o_d_data(tl_switch_1to2_io_tl_h_o_d_data),
+ .io_tl_h_o_a_ready(tl_switch_1to2_io_tl_h_o_a_ready),
+ .io_tl_d_o_0_a_valid(tl_switch_1to2_io_tl_d_o_0_a_valid),
+ .io_tl_d_o_0_a_opcode(tl_switch_1to2_io_tl_d_o_0_a_opcode),
+ .io_tl_d_o_0_a_address(tl_switch_1to2_io_tl_d_o_0_a_address),
+ .io_tl_d_o_0_a_mask(tl_switch_1to2_io_tl_d_o_0_a_mask),
+ .io_tl_d_o_0_a_data(tl_switch_1to2_io_tl_d_o_0_a_data),
+ .io_tl_d_o_1_a_valid(tl_switch_1to2_io_tl_d_o_1_a_valid),
+ .io_tl_d_o_1_a_opcode(tl_switch_1to2_io_tl_d_o_1_a_opcode),
+ .io_tl_d_o_1_a_address(tl_switch_1to2_io_tl_d_o_1_a_address),
+ .io_tl_d_o_1_a_mask(tl_switch_1to2_io_tl_d_o_1_a_mask),
+ .io_tl_d_o_1_a_data(tl_switch_1to2_io_tl_d_o_1_a_data),
+ .io_tl_d_i_0_d_valid(tl_switch_1to2_io_tl_d_i_0_d_valid),
+ .io_tl_d_i_0_d_data(tl_switch_1to2_io_tl_d_i_0_d_data),
+ .io_tl_d_i_0_a_ready(tl_switch_1to2_io_tl_d_i_0_a_ready),
+ .io_tl_d_i_1_d_valid(tl_switch_1to2_io_tl_d_i_1_d_valid),
+ .io_tl_d_i_1_d_data(tl_switch_1to2_io_tl_d_i_1_d_data),
+ .io_tl_d_i_1_a_ready(tl_switch_1to2_io_tl_d_i_1_a_ready),
+ .io_dev_sel(tl_switch_1to2_io_dev_sel)
+ );
+ assign io_gpio_o = gpio_io_cio_gpio_o; // @[Ibtida_top.scala 281:36]
+ assign io_gpio_en_o = ~gpio_io_cio_gpio_en_o; // @[Ibtida_top.scala 282:36]
+ assign io_iccm_we_o_0 = _T_1 ? 1'h0 : _GEN_13; // @[Ibtida_top.scala 232:36]
+ assign io_iccm_we_o_1 = _T_1 ? 1'h0 : _GEN_13; // @[Ibtida_top.scala 232:36]
+ assign io_iccm_we_o_2 = _T_1 ? 1'h0 : _GEN_13; // @[Ibtida_top.scala 232:36]
+ assign io_iccm_we_o_3 = _T_1 ? 1'h0 : _GEN_13; // @[Ibtida_top.scala 232:36]
+ assign io_iccm_wdata_o = rx_data_reg; // @[Ibtida_top.scala 234:36]
+ assign io_iccm_addr_o = instr_addr[7:0]; // @[Ibtida_top.scala 233:36]
+ assign io_dccm_we_o_0 = dccm_tl_device_io_we_o_0; // @[Ibtida_top.scala 266:36]
+ assign io_dccm_we_o_1 = dccm_tl_device_io_we_o_1; // @[Ibtida_top.scala 266:36]
+ assign io_dccm_we_o_2 = dccm_tl_device_io_we_o_2; // @[Ibtida_top.scala 266:36]
+ assign io_dccm_we_o_3 = dccm_tl_device_io_we_o_3; // @[Ibtida_top.scala 266:36]
+ assign io_dccm_wdata_o = dccm_tl_device_io_wdata_o; // @[Ibtida_top.scala 265:36]
+ assign io_dccm_addr_o = {{2'd0}, dccm_tl_device_io_addr_o}; // @[Ibtida_top.scala 264:36]
+ // assign uart_ctrl_clock = clock;
+ // assign uart_ctrlreset = reset;
+ assign uart_ctrl_io_isStalled = _T_1 ? 1'h0 : _GEN_16; // @[Ibtida_top.scala 77:36 Ibtida_top.scala 104:36 Ibtida_top.scala 136:36 Ibtida_top.scala 146:36]
+ assign uart_ctrl_io_CLK_PER_BIT = io_CLK_PER_BIT; // @[Ibtida_top.scala 31:28]
+ assign uart_ctrl_io_rxd = io_rx_i; // @[Ibtida_top.scala 53:36]
+ // assign core_clock = clock;
+ //assign corereset = reset;
+ assign core_io_data_gnt_i = core_loadStore_tl_host_io_gnt_o; // @[Ibtida_top.scala 286:36]
+ assign core_io_data_rvalid_i = core_loadStore_tl_host_io_valid_o; // @[Ibtida_top.scala 287:36]
+ assign core_io_data_rdata_i = core_loadStore_tl_host_io_rdata_o; // @[Ibtida_top.scala 288:36]
+ assign core_io_instr_gnt_i = core_iccm_tl_host_io_gnt_o; // @[Ibtida_top.scala 244:36]
+ assign core_io_instr_rvalid_i = core_iccm_tl_host_io_valid_o; // @[Ibtida_top.scala 245:36]
+ assign core_io_instr_rdata_i = core_iccm_tl_host_io_rdata_o; // @[Ibtida_top.scala 243:36]
+ assign core_io_stall_core_i = _T_1 ? 1'h0 : _GEN_16; // @[Ibtida_top.scala 76:36 Ibtida_top.scala 103:36 Ibtida_top.scala 135:36 Ibtida_top.scala 145:36]
+ assign core_io_irq_external_i = |gpio_io_intr_gpio_o; // @[Ibtida_top.scala 285:36]
+ // assign gpio_clock = clock;
+ // assign gpioreset = reset;
+ assign gpio_io_tl_i_a_valid = tl_switch_1to2_io_tl_d_o_1_a_valid; // @[Ibtida_top.scala 213:36]
+ assign gpio_io_tl_i_a_opcode = tl_switch_1to2_io_tl_d_o_1_a_opcode; // @[Ibtida_top.scala 213:36]
+ assign gpio_io_tl_i_a_address = tl_switch_1to2_io_tl_d_o_1_a_address; // @[Ibtida_top.scala 213:36]
+ assign gpio_io_tl_i_a_mask = tl_switch_1to2_io_tl_d_o_1_a_mask; // @[Ibtida_top.scala 213:36]
+ assign gpio_io_tl_i_a_data = tl_switch_1to2_io_tl_d_o_1_a_data; // @[Ibtida_top.scala 213:36]
+ assign gpio_io_cio_gpio_i = io_gpio_i; // @[Ibtida_top.scala 279:36]
+ assign core_iccm_tl_host_io_req_i = core_io_instr_req_o; // @[Ibtida_top.scala 222:36]
+ assign core_iccm_tl_host_io_addr_i = core_io_instr_addr_o; // @[Ibtida_top.scala 223:36]
+ assign core_iccm_tl_host_io_we_i = 1'h0; // @[Ibtida_top.scala 224:36]
+ assign core_iccm_tl_host_io_wdata_i = 32'h0; // @[Ibtida_top.scala 225:36]
+ assign core_iccm_tl_host_io_be_i = 4'hf; // @[Ibtida_top.scala 226:36]
+ assign core_iccm_tl_host_io_tl_i_d_valid = iccm_tl_device_io_tl_o_d_valid; // @[Ibtida_top.scala 229:36]
+ assign core_iccm_tl_host_io_tl_i_d_data = iccm_tl_device_io_tl_o_d_data; // @[Ibtida_top.scala 229:36]
+ assign core_iccm_tl_host_io_tl_i_a_ready = 1'h1; // @[Ibtida_top.scala 229:36]
+ assign core_loadStore_tl_host_io_req_i = core_io_data_req_o; // @[Ibtida_top.scala 250:36]
+ assign core_loadStore_tl_host_io_addr_i = core_io_data_addr_o; // @[Ibtida_top.scala 251:36]
+ assign core_loadStore_tl_host_io_we_i = core_io_data_we_o; // @[Ibtida_top.scala 252:36]
+ assign core_loadStore_tl_host_io_wdata_i = {_T_23,_T_22}; // @[Ibtida_top.scala 253:36]
+ assign core_loadStore_tl_host_io_be_i = {_T_26,_T_25}; // @[Ibtida_top.scala 254:36]
+ assign core_loadStore_tl_host_io_tl_i_d_valid = tl_switch_1to2_io_tl_h_o_d_valid; // @[Ibtida_top.scala 199:36]
+ assign core_loadStore_tl_host_io_tl_i_d_data = tl_switch_1to2_io_tl_h_o_d_data; // @[Ibtida_top.scala 199:36]
+ assign core_loadStore_tl_host_io_tl_i_a_ready = tl_switch_1to2_io_tl_h_o_a_ready; // @[Ibtida_top.scala 199:36]
+ //assign iccm_tl_device_clock = clock;
+ // assign iccm_tl_devicereset = reset;
+ assign iccm_tl_device_io_tl_i_a_valid = core_iccm_tl_host_io_tl_o_a_valid; // @[Ibtida_top.scala 228:36]
+ assign iccm_tl_device_io_tl_i_a_opcode = core_iccm_tl_host_io_tl_o_a_opcode; // @[Ibtida_top.scala 228:36]
+ assign iccm_tl_device_io_tl_i_a_address = core_iccm_tl_host_io_tl_o_a_address; // @[Ibtida_top.scala 228:36]
+ assign iccm_tl_device_io_tl_i_a_mask = core_iccm_tl_host_io_tl_o_a_mask; // @[Ibtida_top.scala 228:36]
+ assign iccm_tl_device_io_rdata_i = io_iccm_rdata_i; // @[Ibtida_top.scala 241:36]
+ // assign dccm_tl_device_clock = clock;
+ // assign dccm_tl_devicereset = reset;
+ assign dccm_tl_device_io_tl_i_a_valid = tl_switch_1to2_io_tl_d_o_0_a_valid; // @[Ibtida_top.scala 204:36]
+ assign dccm_tl_device_io_tl_i_a_opcode = tl_switch_1to2_io_tl_d_o_0_a_opcode; // @[Ibtida_top.scala 204:36]
+ assign dccm_tl_device_io_tl_i_a_address = tl_switch_1to2_io_tl_d_o_0_a_address; // @[Ibtida_top.scala 204:36]
+ assign dccm_tl_device_io_tl_i_a_mask = tl_switch_1to2_io_tl_d_o_0_a_mask; // @[Ibtida_top.scala 204:36]
+ assign dccm_tl_device_io_tl_i_a_data = tl_switch_1to2_io_tl_d_o_0_a_data; // @[Ibtida_top.scala 204:36]
+ assign dccm_tl_device_io_rdata_i = {{28'd0}, _T_34}; // @[Ibtida_top.scala 260:36]
+ // assign tl_switch_1to2_clock = clock;
+ // assign tl_switch_1to2reset = reset;
+ assign tl_switch_1to2_io_tl_h_i_a_valid = core_loadStore_tl_host_io_tl_o_a_valid; // @[Ibtida_top.scala 195:36]
+ assign tl_switch_1to2_io_tl_h_i_a_opcode = core_loadStore_tl_host_io_tl_o_a_opcode; // @[Ibtida_top.scala 195:36]
+ assign tl_switch_1to2_io_tl_h_i_a_address = core_loadStore_tl_host_io_tl_o_a_address; // @[Ibtida_top.scala 195:36]
+ assign tl_switch_1to2_io_tl_h_i_a_mask = core_loadStore_tl_host_io_tl_o_a_mask; // @[Ibtida_top.scala 195:36]
+ assign tl_switch_1to2_io_tl_h_i_a_data = core_loadStore_tl_host_io_tl_o_a_data; // @[Ibtida_top.scala 195:36]
+ assign tl_switch_1to2_io_tl_d_i_0_d_valid = dccm_tl_device_io_tl_o_d_valid; // @[Ibtida_top.scala 208:36]
+ assign tl_switch_1to2_io_tl_d_i_0_d_data = dccm_tl_device_io_tl_o_d_data; // @[Ibtida_top.scala 208:36]
+ assign tl_switch_1to2_io_tl_d_i_0_a_ready = dccm_tl_device_io_tl_o_a_ready; // @[Ibtida_top.scala 208:36]
+ assign tl_switch_1to2_io_tl_d_i_1_d_valid = gpio_io_tl_o_d_valid; // @[Ibtida_top.scala 217:36]
+ assign tl_switch_1to2_io_tl_d_i_1_d_data = gpio_io_tl_o_d_data; // @[Ibtida_top.scala 217:36]
+ assign tl_switch_1to2_io_tl_d_i_1_a_ready = gpio_io_tl_o_a_ready; // @[Ibtida_top.scala 217:36]
+ assign tl_switch_1to2_io_dev_sel = _T_13 ? 2'h1 : _GEN_26; // @[Ibtida_top.scala 191:36]
+`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}};
+ rx_data_reg = _RAND_0[31:0];
+ _RAND_1 = {1{`RANDOM}};
+ rx_addr_reg = _RAND_1[31:0];
+ _RAND_2 = {1{`RANDOM}};
+ reset_reg = _RAND_2[0:0];
+ _RAND_3 = {1{`RANDOM}};
+ state_reg = _RAND_3[1:0];
+`endif // RANDOMIZE_REG_INIT
+ `endif // RANDOMIZE
+end // initial
+`ifdef FIRRTL_AFTER_INITIAL
+`FIRRTL_AFTER_INITIAL
+`endif
+`endif // SYNTHESIS
+ always @(posedge clock) begin
+ if (reset) begin
+ rx_data_reg <= 32'h0;
+ end else if (!(_T_1)) begin
+ if (_T_6) begin
+ if (uart_ctrl_io_valid) begin
+ rx_data_reg <= uart_ctrl_io_rx_data_o;
+ end else begin
+ rx_data_reg <= 32'h0;
+ end
+ end
+ end
+ if (reset) begin
+ rx_addr_reg <= 32'h0;
+ end else if (!(_T_1)) begin
+ if (_T_6) begin
+ rx_addr_reg <= {{24'd0}, _T_8};
+ end
+ end
+ reset_reg <= reset;
+ if (reset) begin
+ state_reg <= 2'h0;
+ end else if (_T_1) begin
+ if (_T_5) begin
+ state_reg <= 2'h1;
+ end else begin
+ state_reg <= 2'h0;
+ end
+ end else if (_T_6) begin
+ if (uart_ctrl_io_valid) begin
+ state_reg <= 2'h2;
+ end else if (uart_ctrl_io_done) begin
+ state_reg <= 2'h3;
+ end else begin
+ state_reg <= 2'h1;
+ end
+ end else if (_T_9) begin
+ if (uart_ctrl_io_done) begin
+ state_reg <= 2'h3;
+ end else begin
+ state_reg <= 2'h1;
+ end
+ end else if (_T_10) begin
+ state_reg <= 2'h0;
+ end
+ end
+endmodule
+
+module Ibtida_top_dffram_cv(
+ vdda1,
+ vdda2,
+ vssa1,
+ vssa2,
+ vccd1,
+ vccd2,
+ vssd1,
+ vssd2,
+ wb_clk_i,
+ wb_rst_i,
+ wbs_stb_i,
+ wbs_cyc_i,
+ wbs_we_i,
+ wbs_sel_i,
+ wbs_dat_i,
+ wbs_adr_i,
+ wbs_ack_o,
+ wbs_dat_o,
+ la_data_in,
+ la_data_out,
+ la_oen,
+ io_in,
+ io_out,
+ io_oeb
+
+ // input clock,
+ // input reset,
+ // input io_rx_i,
+ // input [15:0] io_CLK_PER_BIT,
+ // input [29:0] io_gpio_i,
+ // output [29:0] io_gpio_o,
+ // output [29:0] io_gpio_en_o
+);
+
+ inout vdda1;
+ inout vdda2;
+ inout vssa1;
+ inout vssa2;
+ inout vccd1;
+ inout vccd2;
+ inout vssd1;
+ inout vssd2;
+ input wb_clk_i;
+ input wb_rst_i;
+ input wbs_stb_i;
+ input wbs_cyc_i;
+ input wbs_we_i;
+ input [3:0] wbs_sel_i;
+ input [31:0] wbs_dat_i;
+ input [31:0] wbs_adr_i;
+ output wire wbs_ack_o;
+ output wire [31:0] wbs_dat_o;
+ input [127:0] la_data_in;
+ output wire [127:0] la_data_out;
+ input [127:0] la_oen;
+ input [37:0] io_in;
+ output wire [37:0] io_out;
+ output wire [37:0] io_oeb;
+
+ wire [29:0] io_gpio_i;
+ wire [15:0] io_CLK_PER_BIT;
+ wire io_rx_i;
+ wire reset;
+ wire clock;
+
+ wire [29:0] io_gpio_o;
+ wire [29:0] io_gpio_en_o;
+
+ assign clock = wb_clk_i;
+ assign reset = (~la_oen[0]) ? (la_data_in[0]) : wb_rst_i;
+ assign io_CLK_PER_BIT = la_data_in[47:32];
+ assign io_rx_i = io_in[5];
+ assign io_gpio_i = io_in[37:8];
+ assign io_out[37:8] = io_gpio_o;
+ assign io_oeb[37:8] = io_gpio_en_o;
+
+ //wire ibtidaTop_clock; // @[Ibtida_top_dffram_cv.scala 15:25]
+ // wire ibtidaTopreset; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_rx_i; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [15:0] ibtidaTop_io_CLK_PER_BIT; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [31:0] ibtidaTop_io_gpio_i; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [31:0] ibtidaTop_io_gpio_o; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [31:0] ibtidaTop_io_gpio_en_o; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_iccm_we_o_0; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_iccm_we_o_1; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_iccm_we_o_2; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_iccm_we_o_3; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [31:0] ibtidaTop_io_iccm_wdata_o; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [7:0] ibtidaTop_io_iccm_addr_o; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [31:0] ibtidaTop_io_iccm_rdata_i; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_dccm_we_o_0; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_dccm_we_o_1; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_dccm_we_o_2; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire ibtidaTop_io_dccm_we_o_3; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [31:0] ibtidaTop_io_dccm_wdata_o; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [7:0] ibtidaTop_io_dccm_addr_o; // @[Ibtida_top_dffram_cv.scala 15:25]
+ wire [31:0] ibtidaTop_io_dccm_rdata_i; // @[Ibtida_top_dffram_cv.scala 15:25]
+ //wire iccm_clock; // @[Ibtida_top_dffram_cv.scala 16:25]
+ wire iccm_io_we_i_0; // @[Ibtida_top_dffram_cv.scala 16:25]
+ wire iccm_io_we_i_1; // @[Ibtida_top_dffram_cv.scala 16:25]
+ wire iccm_io_we_i_2; // @[Ibtida_top_dffram_cv.scala 16:25]
+ wire iccm_io_we_i_3; // @[Ibtida_top_dffram_cv.scala 16:25]
+ wire [5:0] iccm_io_addr_i; // @[Ibtida_top_dffram_cv.scala 16:25]
+ wire [31:0] iccm_io_wdata_i; // @[Ibtida_top_dffram_cv.scala 16:25]
+ wire [31:0] iccm_io_rdata_o; // @[Ibtida_top_dffram_cv.scala 16:25]
+ // wire dccm_clock; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire dccm_io_we_i_0; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire dccm_io_we_i_1; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire dccm_io_we_i_2; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire dccm_io_we_i_3; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [5:0] dccm_io_addr_i; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_wdata_i_0; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_wdata_i_1; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_wdata_i_2; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_wdata_i_3; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_rdata_o_0; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_rdata_o_1; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_rdata_o_2; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [7:0] dccm_io_rdata_o_3; // @[Ibtida_top_dffram_cv.scala 17:25]
+ wire [15:0] _T_6 = {dccm_io_rdata_o_1,dccm_io_rdata_o_0}; // @[Ibtida_top_dffram_cv.scala 41:54]
+ wire [15:0] _T_7 = {dccm_io_rdata_o_3,dccm_io_rdata_o_2}; // @[Ibtida_top_dffram_cv.scala 41:54]
+ Ibtida_top ibtidaTop ( // @[Ibtida_top_dffram_cv.scala 15:25]
+ .clock(clock),
+ .reset(reset),
+ .io_rx_i(ibtidaTop_io_rx_i),
+ .io_CLK_PER_BIT(ibtidaTop_io_CLK_PER_BIT),
+ .io_gpio_i(ibtidaTop_io_gpio_i),
+ .io_gpio_o(ibtidaTop_io_gpio_o),
+ .io_gpio_en_o(ibtidaTop_io_gpio_en_o),
+ .io_iccm_we_o_0(ibtidaTop_io_iccm_we_o_0),
+ .io_iccm_we_o_1(ibtidaTop_io_iccm_we_o_1),
+ .io_iccm_we_o_2(ibtidaTop_io_iccm_we_o_2),
+ .io_iccm_we_o_3(ibtidaTop_io_iccm_we_o_3),
+ .io_iccm_wdata_o(ibtidaTop_io_iccm_wdata_o),
+ .io_iccm_addr_o(ibtidaTop_io_iccm_addr_o),
+ .io_iccm_rdata_i(ibtidaTop_io_iccm_rdata_i),
+ .io_dccm_we_o_0(ibtidaTop_io_dccm_we_o_0),
+ .io_dccm_we_o_1(ibtidaTop_io_dccm_we_o_1),
+ .io_dccm_we_o_2(ibtidaTop_io_dccm_we_o_2),
+ .io_dccm_we_o_3(ibtidaTop_io_dccm_we_o_3),
+ .io_dccm_wdata_o(ibtidaTop_io_dccm_wdata_o),
+ .io_dccm_addr_o(ibtidaTop_io_dccm_addr_o),
+ .io_dccm_rdata_i(ibtidaTop_io_dccm_rdata_i)
+ );
+
+// dffram for data memory
+
+ wire [31:0] dout;
+ assign dccm_io_rdata_o_3 = dout[31:24];
+ assign dccm_io_rdata_o_2 = dout[23:16];
+ assign dccm_io_rdata_o_1 = dout[15:8];
+ assign dccm_io_rdata_o_0 = dout[7:0];
+
+ wire [3:0] WE_DCCM;
+ wire EN = 1'b1;
+ wire [31:0] DCCM_di;
+ wire [5:0] DCCM_A;
+
+ assign DCCM_A = dccm_io_addr_i;
+ assign DCCM_di = {dccm_io_wdata_i_3, dccm_io_wdata_i_2, dccm_io_wdata_i_1, dccm_io_wdata_i_0};
+ assign WE_DCCM = {dccm_io_we_i_3, dccm_io_we_i_2, dccm_io_we_i_1, dccm_io_we_i_0};
+
+ DFFRAM #(1) DCCM(
+ `ifdef USE_POWER_PINS
+ .VPWR(vccd1),
+ .VGND(vssa1),
+ `endif
+ .CLK(clock),
+ .WE(WE_DCCM),
+ .EN(EN),
+ .Di(DCCM_di),
+ .Do(dout),
+ .A({2'd0, DCCM_A})
+ );
+
+ // dffram for instruction memory
+
+ wire [3:0] WE_ICCM;
+ wire [31:0] ICCM_di;
+ wire [5:0] ICCM_A;
+
+ assign ICCM_A = iccm_io_addr_i;
+ assign ICCM_di = iccm_io_wdata_i;
+ assign WE_ICCM = {iccm_io_we_i_3, iccm_io_we_i_2, iccm_io_we_i_1, iccm_io_we_i_0};
+
+ DFFRAM #(1) ICCM(
+ `ifdef USE_POWER_PINS
+ .VPWR(vccd1),
+ .VGND(vssa1),
+ `endif
+ .CLK(clock),
+ .WE(WE_ICCM),
+ .EN(EN),
+ .Di(ICCM_di),
+ .Do(iccm_io_rdata_o),
+ .A({2'd0,ICCM_A})
+ );
+
+
+ assign io_gpio_o = ibtidaTop_io_gpio_o[29:0]; // @[Ibtida_top_dffram_cv.scala 23:13]
+ assign io_gpio_en_o = ibtidaTop_io_gpio_en_o[29:0]; // @[Ibtida_top_dffram_cv.scala 24:16]
+ //assign ibtidaTop_clock = clock;
+ // assign ibtidaTopreset = reset;
+ assign ibtidaTop_io_rx_i = io_rx_i; // @[Ibtida_top_dffram_cv.scala 20:21]
+ assign ibtidaTop_io_CLK_PER_BIT = io_CLK_PER_BIT; // @[Ibtida_top_dffram_cv.scala 21:28]
+ assign ibtidaTop_io_gpio_i = {{2'd0}, io_gpio_i}; // @[Ibtida_top_dffram_cv.scala 22:23]
+ assign ibtidaTop_io_iccm_rdata_i = iccm_io_rdata_o; // @[Ibtida_top_dffram_cv.scala 31:29]
+ assign ibtidaTop_io_dccm_rdata_i = {_T_7,_T_6}; // @[Ibtida_top_dffram_cv.scala 41:29]
+ // assign iccm_clock = clock;
+ assign iccm_io_we_i_0 = ibtidaTop_io_iccm_we_o_0; // @[Ibtida_top_dffram_cv.scala 28:16]
+ assign iccm_io_we_i_1 = ibtidaTop_io_iccm_we_o_1; // @[Ibtida_top_dffram_cv.scala 28:16]
+ assign iccm_io_we_i_2 = ibtidaTop_io_iccm_we_o_2; // @[Ibtida_top_dffram_cv.scala 28:16]
+ assign iccm_io_we_i_3 = ibtidaTop_io_iccm_we_o_3; // @[Ibtida_top_dffram_cv.scala 28:16]
+ assign iccm_io_addr_i = ibtidaTop_io_iccm_addr_o[5:0]; // @[Ibtida_top_dffram_cv.scala 29:18]
+ assign iccm_io_wdata_i = ibtidaTop_io_iccm_wdata_o; // @[Ibtida_top_dffram_cv.scala 30:19]
+ // assign dccm_clock = clock;
+ assign dccm_io_we_i_0 = ibtidaTop_io_dccm_we_o_0; // @[Ibtida_top_dffram_cv.scala 35:16]
+ assign dccm_io_we_i_1 = ibtidaTop_io_dccm_we_o_1; // @[Ibtida_top_dffram_cv.scala 35:16]
+ assign dccm_io_we_i_2 = ibtidaTop_io_dccm_we_o_2; // @[Ibtida_top_dffram_cv.scala 35:16]
+ assign dccm_io_we_i_3 = ibtidaTop_io_dccm_we_o_3; // @[Ibtida_top_dffram_cv.scala 35:16]
+ assign dccm_io_addr_i = ibtidaTop_io_dccm_addr_o[5:0]; // @[Ibtida_top_dffram_cv.scala 36:18]
+ assign dccm_io_wdata_i_0 = ibtidaTop_io_dccm_wdata_o[7:0]; // @[Ibtida_top_dffram_cv.scala 37:36]
+ assign dccm_io_wdata_i_1 = ibtidaTop_io_dccm_wdata_o[15:8]; // @[Ibtida_top_dffram_cv.scala 38:36]
+ assign dccm_io_wdata_i_2 = ibtidaTop_io_dccm_wdata_o[23:16]; // @[Ibtida_top_dffram_cv.scala 39:36]
+ assign dccm_io_wdata_i_3 = ibtidaTop_io_dccm_wdata_o[31:24]; // @[Ibtida_top_dffram_cv.scala 40:36]
+endmodule
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/src/gds/DFFRAM.gds b/openlane/ibtida_dffram_synthesized_no_corering/src/gds/DFFRAM.gds
new file mode 100644
index 0000000..921462a
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/src/gds/DFFRAM.gds
Binary files differ
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/src/lef/DFFRAM.lef b/openlane/ibtida_dffram_synthesized_no_corering/src/lef/DFFRAM.lef
new file mode 100644
index 0000000..51bbfc2
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/src/lef/DFFRAM.lef
@@ -0,0 +1,696 @@
+VERSION 5.7 ;
+ NOWIREEXTENSIONATPIN ON ;
+ DIVIDERCHAR "/" ;
+ BUSBITCHARS "[]" ;
+MACRO DFFRAM
+ CLASS BLOCK ;
+ FOREIGN DFFRAM ;
+ ORIGIN 0.000 0.000 ;
+ SIZE 1012.325 BY 1023.045 ;
+ PIN A[0]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 575.090 1019.045 575.370 1023.045 ;
+ END
+ END A[0]
+ PIN A[1]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 965.170 1019.045 965.450 1023.045 ;
+ END
+ END A[1]
+ PIN A[2]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 259.800 4.000 260.400 ;
+ END
+ END A[2]
+ PIN A[3]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 140.850 1019.045 141.130 1023.045 ;
+ END
+ END A[3]
+ PIN A[4]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 697.720 1012.325 698.320 ;
+ END
+ END A[4]
+ PIN A[5]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 392.930 0.000 393.210 4.000 ;
+ END
+ END A[5]
+ PIN A[6]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 479.410 0.000 479.690 4.000 ;
+ END
+ END A[6]
+ PIN A[7]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 825.560 1012.325 826.160 ;
+ END
+ END A[7]
+ PIN CLK
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 618.330 1019.045 618.610 1023.045 ;
+ END
+ END CLK
+ PIN Di[0]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 131.960 4.000 132.560 ;
+ END
+ END Di[0]
+ PIN Di[10]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 956.890 0.000 957.170 4.000 ;
+ END
+ END Di[10]
+ PIN Di[11]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 835.450 1019.045 835.730 1023.045 ;
+ END
+ END Di[11]
+ PIN Di[12]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 523.570 0.000 523.850 4.000 ;
+ END
+ END Di[12]
+ PIN Di[13]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 357.970 1019.045 358.250 1023.045 ;
+ END
+ END Di[13]
+ PIN Di[14]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 632.440 1012.325 633.040 ;
+ END
+ END Di[14]
+ PIN Di[15]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 89.330 0.000 89.610 4.000 ;
+ END
+ END Di[15]
+ PIN Di[16]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 323.720 4.000 324.320 ;
+ END
+ END Di[16]
+ PIN Di[17]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 661.570 1019.045 661.850 1023.045 ;
+ END
+ END Di[17]
+ PIN Di[18]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 827.170 0.000 827.450 4.000 ;
+ END
+ END Di[18]
+ PIN Di[19]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 119.720 1012.325 120.320 ;
+ END
+ END Di[19]
+ PIN Di[1]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 580.760 4.000 581.360 ;
+ END
+ END Di[1]
+ PIN Di[20]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 1008.410 1019.045 1008.690 1023.045 ;
+ END
+ END Di[20]
+ PIN Di[21]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 401.210 1019.045 401.490 1023.045 ;
+ END
+ END Di[21]
+ PIN Di[22]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 653.290 0.000 653.570 4.000 ;
+ END
+ END Di[22]
+ PIN Di[23]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 195.880 4.000 196.480 ;
+ END
+ END Di[23]
+ PIN Di[24]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 219.050 0.000 219.330 4.000 ;
+ END
+ END Di[24]
+ PIN Di[25]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 889.480 1012.325 890.080 ;
+ END
+ END Di[25]
+ PIN Di[26]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 54.370 1019.045 54.650 1023.045 ;
+ END
+ END Di[26]
+ PIN Di[27]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 97.610 1019.045 97.890 1023.045 ;
+ END
+ END Di[27]
+ PIN Di[28]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 792.210 1019.045 792.490 1023.045 ;
+ END
+ END Di[28]
+ PIN Di[29]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 184.090 1019.045 184.370 1023.045 ;
+ END
+ END Di[29]
+ PIN Di[2]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 1001.050 0.000 1001.330 4.000 ;
+ END
+ END Di[2]
+ PIN Di[30]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 773.880 4.000 774.480 ;
+ END
+ END Di[30]
+ PIN Di[31]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 183.640 1012.325 184.240 ;
+ END
+ END Di[31]
+ PIN Di[3]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 10.210 1019.045 10.490 1023.045 ;
+ END
+ END Di[3]
+ PIN Di[4]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 175.810 0.000 176.090 4.000 ;
+ END
+ END Di[4]
+ PIN Di[5]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 132.570 0.000 132.850 4.000 ;
+ END
+ END Di[5]
+ PIN Di[6]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 566.810 0.000 567.090 4.000 ;
+ END
+ END Di[6]
+ PIN Di[7]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 68.040 4.000 68.640 ;
+ END
+ END Di[7]
+ PIN Di[8]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 349.690 0.000 349.970 4.000 ;
+ END
+ END Di[8]
+ PIN Di[9]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 263.210 0.000 263.490 4.000 ;
+ END
+ END Di[9]
+ PIN Do[0]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 704.810 1019.045 705.090 1023.045 ;
+ END
+ END Do[0]
+ PIN Do[10]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 46.090 0.000 46.370 4.000 ;
+ END
+ END Do[10]
+ PIN Do[11]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 568.520 1012.325 569.120 ;
+ END
+ END Do[11]
+ PIN Do[12]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 913.650 0.000 913.930 4.000 ;
+ END
+ END Do[12]
+ PIN Do[13]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 531.850 1019.045 532.130 1023.045 ;
+ END
+ END Do[13]
+ PIN Do[14]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 953.400 1012.325 954.000 ;
+ END
+ END Do[14]
+ PIN Do[15]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 504.600 1012.325 505.200 ;
+ END
+ END Do[15]
+ PIN Do[16]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 55.800 1012.325 56.400 ;
+ END
+ END Do[16]
+ PIN Do[17]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 389.000 4.000 389.600 ;
+ END
+ END Do[17]
+ PIN Do[18]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 270.570 1019.045 270.850 1023.045 ;
+ END
+ END Do[18]
+ PIN Do[19]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 440.680 1012.325 441.280 ;
+ END
+ END Do[19]
+ PIN Do[1]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 376.760 1012.325 377.360 ;
+ END
+ END Do[1]
+ PIN Do[20]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 487.690 1019.045 487.970 1023.045 ;
+ END
+ END Do[20]
+ PIN Do[21]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 921.930 1019.045 922.210 1023.045 ;
+ END
+ END Do[21]
+ PIN Do[22]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 644.680 4.000 645.280 ;
+ END
+ END Do[22]
+ PIN Do[23]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 2.850 0.000 3.130 4.000 ;
+ END
+ END Do[23]
+ PIN Do[24]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 837.800 4.000 838.400 ;
+ END
+ END Do[24]
+ PIN Do[25]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 306.450 0.000 306.730 4.000 ;
+ END
+ END Do[25]
+ PIN Do[26]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 965.640 4.000 966.240 ;
+ END
+ END Do[26]
+ PIN Do[27]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 901.720 4.000 902.320 ;
+ END
+ END Do[27]
+ PIN Do[28]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 610.050 0.000 610.330 4.000 ;
+ END
+ END Do[28]
+ PIN Do[29]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 783.930 0.000 784.210 4.000 ;
+ END
+ END Do[29]
+ PIN Do[2]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 748.050 1019.045 748.330 1023.045 ;
+ END
+ END Do[2]
+ PIN Do[30]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 452.920 4.000 453.520 ;
+ END
+ END Do[30]
+ PIN Do[31]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 247.560 1012.325 248.160 ;
+ END
+ END Do[31]
+ PIN Do[3]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 708.600 4.000 709.200 ;
+ END
+ END Do[3]
+ PIN Do[4]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 444.450 1019.045 444.730 1023.045 ;
+ END
+ END Do[4]
+ PIN Do[5]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 312.840 1012.325 313.440 ;
+ END
+ END Do[5]
+ PIN Do[6]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met3 ;
+ RECT 0.000 516.840 4.000 517.440 ;
+ END
+ END Do[6]
+ PIN Do[7]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 696.530 0.000 696.810 4.000 ;
+ END
+ END Do[7]
+ PIN Do[8]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 314.730 1019.045 315.010 1023.045 ;
+ END
+ END Do[8]
+ PIN Do[9]
+ DIRECTION OUTPUT TRISTATE ;
+ PORT
+ LAYER met2 ;
+ RECT 870.410 0.000 870.690 4.000 ;
+ END
+ END Do[9]
+ PIN EN
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 740.690 0.000 740.970 4.000 ;
+ END
+ END EN
+ PIN WE[0]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 878.690 1019.045 878.970 1023.045 ;
+ END
+ END WE[0]
+ PIN WE[1]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met3 ;
+ RECT 1008.325 761.640 1012.325 762.240 ;
+ END
+ END WE[1]
+ PIN WE[2]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 227.330 1019.045 227.610 1023.045 ;
+ END
+ END WE[2]
+ PIN WE[3]
+ DIRECTION INPUT ;
+ PORT
+ LAYER met2 ;
+ RECT 436.170 0.000 436.450 4.000 ;
+ END
+ END WE[3]
+ PIN VPWR
+ DIRECTION INPUT ;
+ USE POWER ;
+ PORT
+ LAYER met5 ;
+ RECT 5.520 26.490 1006.480 28.090 ;
+ END
+ END VPWR
+ PIN VGND
+ DIRECTION INPUT ;
+ USE GROUND ;
+ PORT
+ LAYER met5 ;
+ RECT 5.520 103.080 1006.480 104.680 ;
+ END
+ END VGND
+ OBS
+ LAYER li1 ;
+ RECT 5.520 10.795 1006.480 1011.925 ;
+ LAYER met1 ;
+ RECT 2.830 10.640 1008.710 1012.080 ;
+ LAYER met2 ;
+ RECT 2.860 1018.765 9.930 1019.050 ;
+ RECT 10.770 1018.765 54.090 1019.050 ;
+ RECT 54.930 1018.765 97.330 1019.050 ;
+ RECT 98.170 1018.765 140.570 1019.050 ;
+ RECT 141.410 1018.765 183.810 1019.050 ;
+ RECT 184.650 1018.765 227.050 1019.050 ;
+ RECT 227.890 1018.765 270.290 1019.050 ;
+ RECT 271.130 1018.765 314.450 1019.050 ;
+ RECT 315.290 1018.765 357.690 1019.050 ;
+ RECT 358.530 1018.765 400.930 1019.050 ;
+ RECT 401.770 1018.765 444.170 1019.050 ;
+ RECT 445.010 1018.765 487.410 1019.050 ;
+ RECT 488.250 1018.765 531.570 1019.050 ;
+ RECT 532.410 1018.765 574.810 1019.050 ;
+ RECT 575.650 1018.765 618.050 1019.050 ;
+ RECT 618.890 1018.765 661.290 1019.050 ;
+ RECT 662.130 1018.765 704.530 1019.050 ;
+ RECT 705.370 1018.765 747.770 1019.050 ;
+ RECT 748.610 1018.765 791.930 1019.050 ;
+ RECT 792.770 1018.765 835.170 1019.050 ;
+ RECT 836.010 1018.765 878.410 1019.050 ;
+ RECT 879.250 1018.765 921.650 1019.050 ;
+ RECT 922.490 1018.765 964.890 1019.050 ;
+ RECT 965.730 1018.765 1008.130 1019.050 ;
+ RECT 2.860 4.280 1008.680 1018.765 ;
+ RECT 3.410 4.000 45.810 4.280 ;
+ RECT 46.650 4.000 89.050 4.280 ;
+ RECT 89.890 4.000 132.290 4.280 ;
+ RECT 133.130 4.000 175.530 4.280 ;
+ RECT 176.370 4.000 218.770 4.280 ;
+ RECT 219.610 4.000 262.930 4.280 ;
+ RECT 263.770 4.000 306.170 4.280 ;
+ RECT 307.010 4.000 349.410 4.280 ;
+ RECT 350.250 4.000 392.650 4.280 ;
+ RECT 393.490 4.000 435.890 4.280 ;
+ RECT 436.730 4.000 479.130 4.280 ;
+ RECT 479.970 4.000 523.290 4.280 ;
+ RECT 524.130 4.000 566.530 4.280 ;
+ RECT 567.370 4.000 609.770 4.280 ;
+ RECT 610.610 4.000 653.010 4.280 ;
+ RECT 653.850 4.000 696.250 4.280 ;
+ RECT 697.090 4.000 740.410 4.280 ;
+ RECT 741.250 4.000 783.650 4.280 ;
+ RECT 784.490 4.000 826.890 4.280 ;
+ RECT 827.730 4.000 870.130 4.280 ;
+ RECT 870.970 4.000 913.370 4.280 ;
+ RECT 914.210 4.000 956.610 4.280 ;
+ RECT 957.450 4.000 1000.770 4.280 ;
+ RECT 1001.610 4.000 1008.680 4.280 ;
+ LAYER met3 ;
+ RECT 4.000 966.640 1008.325 1012.005 ;
+ RECT 4.400 965.240 1008.325 966.640 ;
+ RECT 4.000 954.400 1008.325 965.240 ;
+ RECT 4.000 953.000 1007.925 954.400 ;
+ RECT 4.000 902.720 1008.325 953.000 ;
+ RECT 4.400 901.320 1008.325 902.720 ;
+ RECT 4.000 890.480 1008.325 901.320 ;
+ RECT 4.000 889.080 1007.925 890.480 ;
+ RECT 4.000 838.800 1008.325 889.080 ;
+ RECT 4.400 837.400 1008.325 838.800 ;
+ RECT 4.000 826.560 1008.325 837.400 ;
+ RECT 4.000 825.160 1007.925 826.560 ;
+ RECT 4.000 774.880 1008.325 825.160 ;
+ RECT 4.400 773.480 1008.325 774.880 ;
+ RECT 4.000 762.640 1008.325 773.480 ;
+ RECT 4.000 761.240 1007.925 762.640 ;
+ RECT 4.000 709.600 1008.325 761.240 ;
+ RECT 4.400 708.200 1008.325 709.600 ;
+ RECT 4.000 698.720 1008.325 708.200 ;
+ RECT 4.000 697.320 1007.925 698.720 ;
+ RECT 4.000 645.680 1008.325 697.320 ;
+ RECT 4.400 644.280 1008.325 645.680 ;
+ RECT 4.000 633.440 1008.325 644.280 ;
+ RECT 4.000 632.040 1007.925 633.440 ;
+ RECT 4.000 581.760 1008.325 632.040 ;
+ RECT 4.400 580.360 1008.325 581.760 ;
+ RECT 4.000 569.520 1008.325 580.360 ;
+ RECT 4.000 568.120 1007.925 569.520 ;
+ RECT 4.000 517.840 1008.325 568.120 ;
+ RECT 4.400 516.440 1008.325 517.840 ;
+ RECT 4.000 505.600 1008.325 516.440 ;
+ RECT 4.000 504.200 1007.925 505.600 ;
+ RECT 4.000 453.920 1008.325 504.200 ;
+ RECT 4.400 452.520 1008.325 453.920 ;
+ RECT 4.000 441.680 1008.325 452.520 ;
+ RECT 4.000 440.280 1007.925 441.680 ;
+ RECT 4.000 390.000 1008.325 440.280 ;
+ RECT 4.400 388.600 1008.325 390.000 ;
+ RECT 4.000 377.760 1008.325 388.600 ;
+ RECT 4.000 376.360 1007.925 377.760 ;
+ RECT 4.000 324.720 1008.325 376.360 ;
+ RECT 4.400 323.320 1008.325 324.720 ;
+ RECT 4.000 313.840 1008.325 323.320 ;
+ RECT 4.000 312.440 1007.925 313.840 ;
+ RECT 4.000 260.800 1008.325 312.440 ;
+ RECT 4.400 259.400 1008.325 260.800 ;
+ RECT 4.000 248.560 1008.325 259.400 ;
+ RECT 4.000 247.160 1007.925 248.560 ;
+ RECT 4.000 196.880 1008.325 247.160 ;
+ RECT 4.400 195.480 1008.325 196.880 ;
+ RECT 4.000 184.640 1008.325 195.480 ;
+ RECT 4.000 183.240 1007.925 184.640 ;
+ RECT 4.000 132.960 1008.325 183.240 ;
+ RECT 4.400 131.560 1008.325 132.960 ;
+ RECT 4.000 120.720 1008.325 131.560 ;
+ RECT 4.000 119.320 1007.925 120.720 ;
+ RECT 4.000 69.040 1008.325 119.320 ;
+ RECT 4.400 67.640 1008.325 69.040 ;
+ RECT 4.000 56.800 1008.325 67.640 ;
+ RECT 4.000 55.400 1007.925 56.800 ;
+ RECT 4.000 10.715 1008.325 55.400 ;
+ LAYER met4 ;
+ RECT 21.040 10.640 944.240 1012.080 ;
+ LAYER met5 ;
+ RECT 5.520 179.670 1006.480 947.170 ;
+ END
+END DFFRAM
+END LIBRARY
+
diff --git a/openlane/ibtida_dffram_synthesized_no_corering/src/syn.sdc b/openlane/ibtida_dffram_synthesized_no_corering/src/syn.sdc
new file mode 100755
index 0000000..8ad5dd3
--- /dev/null
+++ b/openlane/ibtida_dffram_synthesized_no_corering/src/syn.sdc
@@ -0,0 +1,16 @@
+set_cmd_units -time ns -capacitance pF -current mA -voltage V -resistance kOhm -distance um
+#set SCL /home/merlproj/backend-tools/pdks/sky130A/libs.ref/sky130_fd_sc_hd/verilog/
+set SCL /home/merlproj/backend-tools/openlane_rc4/designs/aireen_dffram/syn/sky130_fd_sc_hd__tt_025C_1v80.lib
+set IO_PCT 0.2
+set CLOCK_PERIOD 80
+create_clock [get_ports CLK] -name clk -period $CLOCK_PERIOD
+set input_delay_value [expr $CLOCK_PERIOD * $IO_PCT]
+set output_delay_value [expr $CLOCK_PERIOD * $IO_PCT]
+
+set_input_delay $input_delay_value -clock clk [get_port A]
+set_input_delay $input_delay_value -clock clk [get_port EN]
+set_input_delay $input_delay_value -clock clk [get_port Di]
+set_input_delay $input_delay_value -clock clk [get_port WE]
+
+set_load 0.0136390000 [all_outputs]
+