Clk enable removed from predictor
This commit is contained in:
		
							parent
							
								
									c1491ee7dd
								
							
						
					
					
						commit
						714376af0a
					
				
							
								
								
									
										12478
									
								
								el2_ifu_bp_ctl.fir
								
								
								
								
							
							
						
						
									
										12478
									
								
								el2_ifu_bp_ctl.fir
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										5806
									
								
								el2_ifu_bp_ctl.v
								
								
								
								
							
							
						
						
									
										5806
									
								
								el2_ifu_bp_ctl.v
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -0,0 +1,18 @@ | |||
| [ | ||||
|   { | ||||
|     "class":"firrtl.EmitCircuitAnnotation", | ||||
|     "emitter":"firrtl.VerilogEmitter" | ||||
|   }, | ||||
|   { | ||||
|     "class":"firrtl.options.TargetDirAnnotation", | ||||
|     "directory":"." | ||||
|   }, | ||||
|   { | ||||
|     "class":"firrtl.options.OutputAnnotationFileAnnotation", | ||||
|     "file":"el2_ifu_mem_ctl" | ||||
|   }, | ||||
|   { | ||||
|     "class":"firrtl.transforms.BlackBoxTargetDirAnno", | ||||
|     "targetDir":"." | ||||
|   } | ||||
| ] | ||||
|  | @ -0,0 +1,83 @@ | |||
| ;buildInfoPackage: chisel3, version: 3.3.1, scalaVersion: 2.12.11, sbtVersion: 1.3.10 | ||||
| circuit el2_ifu_mem_ctl :  | ||||
|   module el2_ifu_mem_ctl :  | ||||
|     input clock : Clock | ||||
|     input reset : UInt<1> | ||||
|     output io : {flip free_clk : Clock, flip active_clk : Clock, flip exu_flush_final : UInt<1>, flip dec_tlu_flush_lower_wb : UInt<1>, flip dec_tlu_flush_err_wb : UInt<1>, flip dec_tlu_i0_commit_cmt : UInt<1>, flip dec_tlu_force_halt : UInt<1>, flip ifc_fetch_addr_bf : UInt<31>, flip ifc_fetch_uncacheable_bf : UInt<1>, flip ifc_fetch_req_bf : UInt<1>, flip ifc_fetch_req_bf_raw : UInt<1>, flip ifc_iccm_access_bf : UInt<1>, flip ifc_region_acc_fault_bf : UInt<1>, flip ifc_dma_access_ok : UInt<1>, flip dec_tlu_fence_i_wb : UInt<1>, flip ifu_bp_hit_taken_f : UInt<1>, flip ifu_bp_inst_mask_f : UInt<1>, ifu_miss_state_idle : UInt<1>, ifu_ic_mb_empty : UInt<1>, ic_dma_active : UInt<1>, ic_write_stall : UInt<1>, ifu_pmu_ic_miss : UInt<1>, ifu_pmu_ic_hit : UInt<1>, ifu_pmu_bus_error : UInt<1>, ifu_pmu_bus_busy : UInt<1>, ifu_pmu_bus_trxn : UInt<1>, ifu_axi_awvalid : UInt<1>, ifu_axi_awid : UInt<3>, ifu_axi_awaddr : UInt<32>, ifu_axi_awregion : UInt<4>, ifu_axi_awlen : UInt<8>, ifu_axi_awsize : UInt<3>, ifu_axi_awburst : UInt<2>, ifu_axi_awlock : UInt<1>, ifu_axi_awcache : UInt<4>, ifu_axi_awprot : UInt<3>, ifu_axi_awqos : UInt<4>, ifu_axi_wvalid : UInt<1>, ifu_axi_wdata : UInt<64>, ifu_axi_wstrb : UInt<8>, ifu_axi_wlast : UInt<1>, ifu_axi_bready : UInt<1>, ifu_axi_arvalid : UInt<1>, flip ifu_axi_arready : UInt<1>, ifu_axi_arid : UInt<3>, ifu_axi_araddr : UInt<32>, ifu_axi_arregion : UInt<4>, ifu_axi_arlen : UInt<8>, ifu_axi_arsize : UInt<3>, ifu_axi_arburst : UInt<2>, ifu_axi_arlock : UInt<1>, ifu_axi_arcache : UInt<4>, ifu_axi_arprot : UInt<3>, ifu_axi_arqos : UInt<4>, flip ifu_axi_rvalid : UInt<1>, ifu_axi_rready : UInt<1>, flip ifu_axi_rid : UInt<3>, flip ifu_axi_rdata : UInt<64>, flip ifu_axi_rresp : UInt<2>, flip ifu_bus_clk_en : UInt<1>, flip dma_iccm_req : UInt<1>, flip dma_mem_addr : UInt<32>, flip dma_mem_sz : UInt<3>, flip dma_mem_write : UInt<1>, flip dma_mem_wdata : UInt<64>, flip dma_mem_tag : UInt<3>, iccm_dma_ecc_error : UInt<1>, iccm_dma_rvalid : UInt<1>, iccm_dma_rdata : UInt<64>, iccm_dma_rtag : UInt<3>, iccm_ready : UInt<1>, ic_rw_addr : UInt<31>, ic_wr_en : UInt<2>, ic_rd_en : UInt<1>, ic_wr_data : UInt<71>[2], flip ic_rd_data : UInt<64>, flip ic_debug_rd_data : UInt<71>, flip ictag_debug_rd_data : UInt<26>, ic_debug_wr_data : UInt<71>, ifu_ic_debug_rd_data : UInt<71>, flip ic_eccerr : UInt<2>, flip ic_parerr : UInt<2>, ic_debug_addr : UInt<10>, ic_debug_rd_en : UInt<1>, ic_debug_wr_en : UInt<1>, ic_debug_tag_array : UInt<1>, ic_debug_way : UInt<2>, ic_tag_valid : UInt<2>, flip ic_rd_hit : UInt<2>, flip ic_tag_perr : UInt<1>, iccm_rw_addr : UInt<15>, iccm_wren : UInt<1>, iccm_rden : UInt<1>, iccm_wr_data : UInt<78>, iccm_wr_size : UInt<3>, flip iccm_rd_data : UInt<64>, flip iccm_rd_data_ecc : UInt<78>, flip ifu_fetch_val : UInt<2>, ic_hit_f : UInt<1>, ic_access_fault_f : UInt<1>, ic_access_fault_type_f : UInt<2>, iccm_rd_ecc_single_err : UInt<1>, iccm_rd_ecc_double_err : UInt<1>, ic_error_start : UInt<1>, ifu_async_error_start : UInt<1>, iccm_dma_sb_error : UInt<1>, ic_fetch_val_f : UInt<2>, ic_data_f : UInt<32>, ic_premux_data : UInt<64>, ic_sel_premux_data : UInt<1>, flip dec_tlu_ic_diag_pkt : {icache_wrdata : UInt<71>, icache_dicawics : UInt<17>, icache_rd_valid : UInt<1>, icache_wr_valid : UInt<1>}, flip dec_tlu_core_ecc_disable : UInt<1>, ifu_ic_debug_rd_data_valid : UInt<1>, iccm_buf_correct_ecc : UInt<1>, iccm_correction_state : UInt<1>} | ||||
|      | ||||
|     io.ic_debug_rd_en <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 126:20] | ||||
|     io.ic_debug_wr_en <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 127:20] | ||||
|     io.ic_debug_tag_array <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 128:24] | ||||
|     io.ifu_miss_state_idle <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 129:25] | ||||
|     io.ifu_ic_mb_empty <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 130:21] | ||||
|     io.ic_dma_active <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 131:19] | ||||
|     io.ic_write_stall <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 132:20] | ||||
|     io.ifu_pmu_ic_miss <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 133:21] | ||||
|     io.ifu_pmu_ic_hit <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 134:20] | ||||
|     io.ifu_pmu_bus_error <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 135:23] | ||||
|     io.ifu_pmu_bus_busy <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 136:22] | ||||
|     io.ifu_pmu_bus_trxn <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 137:22] | ||||
|     io.ifu_axi_awvalid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 138:21] | ||||
|     io.ifu_axi_awid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 139:18] | ||||
|     io.ifu_axi_awaddr <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 140:20] | ||||
|     io.ifu_axi_awlen <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 141:19] | ||||
|     io.ifu_axi_awsize <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 142:20] | ||||
|     io.ifu_axi_awburst <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 143:21] | ||||
|     io.ifu_axi_awlock <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 144:20] | ||||
|     io.ifu_axi_awcache <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 145:21] | ||||
|     io.ifu_axi_awprot <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 146:20] | ||||
|     io.ifu_axi_awqos <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 147:19] | ||||
|     io.ifu_axi_wvalid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 148:20] | ||||
|     io.ifu_axi_wdata <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 149:19] | ||||
|     io.ifu_axi_wstrb <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 150:19] | ||||
|     io.ifu_axi_wlast <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 151:19] | ||||
|     io.ifu_axi_bready <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 152:20] | ||||
|     io.ifu_axi_arvalid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 153:21] | ||||
|     io.ic_debug_addr <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 154:19] | ||||
|     io.ifu_axi_arid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 155:18] | ||||
|     io.ifu_axi_araddr <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 156:20] | ||||
|     io.ifu_axi_arregion <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 157:22] | ||||
|     io.ifu_axi_arlen <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 158:19] | ||||
|     io.ifu_axi_arsize <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 159:20] | ||||
|     io.ifu_axi_arburst <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 160:21] | ||||
|     io.ifu_axi_arlock <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 161:20] | ||||
|     io.ifu_axi_arcache <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 162:21] | ||||
|     io.ifu_axi_arprot <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 163:20] | ||||
|     io.ifu_axi_arqos <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 164:19] | ||||
|     io.ifu_axi_rready <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 165:20] | ||||
|     io.iccm_dma_ecc_error <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 166:24] | ||||
|     io.iccm_dma_rvalid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 167:21] | ||||
|     io.iccm_dma_rdata <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 168:20] | ||||
|     io.iccm_dma_rtag <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 169:19] | ||||
|     io.iccm_ready <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 170:16] | ||||
|     io.ic_rw_addr <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 171:16] | ||||
|     io.ic_wr_en <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 172:14] | ||||
|     io.ic_rd_en <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 173:14] | ||||
|     io.ic_wr_data[0] <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 174:16] | ||||
|     io.ic_wr_data[1] <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 174:16] | ||||
|     io.ic_debug_wr_data <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 175:22] | ||||
|     io.ifu_ic_debug_rd_data <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 176:26] | ||||
|     io.ic_tag_valid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 177:18] | ||||
|     io.iccm_rw_addr <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 178:18] | ||||
|     io.iccm_wren <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 179:15] | ||||
|     io.iccm_rden <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 180:15] | ||||
|     io.iccm_wr_data <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 181:18] | ||||
|     io.iccm_wr_size <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 182:18] | ||||
|     io.ic_hit_f <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 183:14] | ||||
|     io.ic_access_fault_f <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 184:23] | ||||
|     io.ic_access_fault_type_f <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 185:28] | ||||
|     io.iccm_rd_ecc_single_err <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 186:28] | ||||
|     io.iccm_rd_ecc_double_err <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 187:28] | ||||
|     io.ic_error_start <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 188:20] | ||||
|     io.ifu_async_error_start <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 189:27] | ||||
|     io.iccm_dma_sb_error <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 190:23] | ||||
|     io.ic_fetch_val_f <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 191:20] | ||||
|     io.ic_data_f <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 192:15] | ||||
|     io.ic_premux_data <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 193:20] | ||||
|     io.ic_sel_premux_data <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 194:24] | ||||
|     io.ifu_ic_debug_rd_data_valid <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 195:32] | ||||
|     io.iccm_buf_correct_ecc <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 196:26] | ||||
|     io.iccm_correction_state <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 197:27] | ||||
|     io.ic_debug_way <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 198:18] | ||||
|     io.ifu_axi_awregion <= UInt<1>("h00") @[el2_ifu_mem_ctl.scala 199:22] | ||||
|      | ||||
|  | @ -0,0 +1,199 @@ | |||
| module el2_ifu_mem_ctl( | ||||
|   input         clock, | ||||
|   input         reset, | ||||
|   input         io_free_clk, | ||||
|   input         io_active_clk, | ||||
|   input         io_exu_flush_final, | ||||
|   input         io_dec_tlu_flush_lower_wb, | ||||
|   input         io_dec_tlu_flush_err_wb, | ||||
|   input         io_dec_tlu_i0_commit_cmt, | ||||
|   input         io_dec_tlu_force_halt, | ||||
|   input  [30:0] io_ifc_fetch_addr_bf, | ||||
|   input         io_ifc_fetch_uncacheable_bf, | ||||
|   input         io_ifc_fetch_req_bf, | ||||
|   input         io_ifc_fetch_req_bf_raw, | ||||
|   input         io_ifc_iccm_access_bf, | ||||
|   input         io_ifc_region_acc_fault_bf, | ||||
|   input         io_ifc_dma_access_ok, | ||||
|   input         io_dec_tlu_fence_i_wb, | ||||
|   input         io_ifu_bp_hit_taken_f, | ||||
|   input         io_ifu_bp_inst_mask_f, | ||||
|   output        io_ifu_miss_state_idle, | ||||
|   output        io_ifu_ic_mb_empty, | ||||
|   output        io_ic_dma_active, | ||||
|   output        io_ic_write_stall, | ||||
|   output        io_ifu_pmu_ic_miss, | ||||
|   output        io_ifu_pmu_ic_hit, | ||||
|   output        io_ifu_pmu_bus_error, | ||||
|   output        io_ifu_pmu_bus_busy, | ||||
|   output        io_ifu_pmu_bus_trxn, | ||||
|   output        io_ifu_axi_awvalid, | ||||
|   output [2:0]  io_ifu_axi_awid, | ||||
|   output [31:0] io_ifu_axi_awaddr, | ||||
|   output [3:0]  io_ifu_axi_awregion, | ||||
|   output [7:0]  io_ifu_axi_awlen, | ||||
|   output [2:0]  io_ifu_axi_awsize, | ||||
|   output [1:0]  io_ifu_axi_awburst, | ||||
|   output        io_ifu_axi_awlock, | ||||
|   output [3:0]  io_ifu_axi_awcache, | ||||
|   output [2:0]  io_ifu_axi_awprot, | ||||
|   output [3:0]  io_ifu_axi_awqos, | ||||
|   output        io_ifu_axi_wvalid, | ||||
|   output [63:0] io_ifu_axi_wdata, | ||||
|   output [7:0]  io_ifu_axi_wstrb, | ||||
|   output        io_ifu_axi_wlast, | ||||
|   output        io_ifu_axi_bready, | ||||
|   output        io_ifu_axi_arvalid, | ||||
|   input         io_ifu_axi_arready, | ||||
|   output [2:0]  io_ifu_axi_arid, | ||||
|   output [31:0] io_ifu_axi_araddr, | ||||
|   output [3:0]  io_ifu_axi_arregion, | ||||
|   output [7:0]  io_ifu_axi_arlen, | ||||
|   output [2:0]  io_ifu_axi_arsize, | ||||
|   output [1:0]  io_ifu_axi_arburst, | ||||
|   output        io_ifu_axi_arlock, | ||||
|   output [3:0]  io_ifu_axi_arcache, | ||||
|   output [2:0]  io_ifu_axi_arprot, | ||||
|   output [3:0]  io_ifu_axi_arqos, | ||||
|   input         io_ifu_axi_rvalid, | ||||
|   output        io_ifu_axi_rready, | ||||
|   input  [2:0]  io_ifu_axi_rid, | ||||
|   input  [63:0] io_ifu_axi_rdata, | ||||
|   input  [1:0]  io_ifu_axi_rresp, | ||||
|   input         io_ifu_bus_clk_en, | ||||
|   input         io_dma_iccm_req, | ||||
|   input  [31:0] io_dma_mem_addr, | ||||
|   input  [2:0]  io_dma_mem_sz, | ||||
|   input         io_dma_mem_write, | ||||
|   input  [63:0] io_dma_mem_wdata, | ||||
|   input  [2:0]  io_dma_mem_tag, | ||||
|   output        io_iccm_dma_ecc_error, | ||||
|   output        io_iccm_dma_rvalid, | ||||
|   output [63:0] io_iccm_dma_rdata, | ||||
|   output [2:0]  io_iccm_dma_rtag, | ||||
|   output        io_iccm_ready, | ||||
|   output [30:0] io_ic_rw_addr, | ||||
|   output [1:0]  io_ic_wr_en, | ||||
|   output        io_ic_rd_en, | ||||
|   output [70:0] io_ic_wr_data_0, | ||||
|   output [70:0] io_ic_wr_data_1, | ||||
|   input  [63:0] io_ic_rd_data, | ||||
|   input  [70:0] io_ic_debug_rd_data, | ||||
|   input  [25:0] io_ictag_debug_rd_data, | ||||
|   output [70:0] io_ic_debug_wr_data, | ||||
|   output [70:0] io_ifu_ic_debug_rd_data, | ||||
|   input  [1:0]  io_ic_eccerr, | ||||
|   input  [1:0]  io_ic_parerr, | ||||
|   output [9:0]  io_ic_debug_addr, | ||||
|   output        io_ic_debug_rd_en, | ||||
|   output        io_ic_debug_wr_en, | ||||
|   output        io_ic_debug_tag_array, | ||||
|   output [1:0]  io_ic_debug_way, | ||||
|   output [1:0]  io_ic_tag_valid, | ||||
|   input  [1:0]  io_ic_rd_hit, | ||||
|   input         io_ic_tag_perr, | ||||
|   output [14:0] io_iccm_rw_addr, | ||||
|   output        io_iccm_wren, | ||||
|   output        io_iccm_rden, | ||||
|   output [77:0] io_iccm_wr_data, | ||||
|   output [2:0]  io_iccm_wr_size, | ||||
|   input  [63:0] io_iccm_rd_data, | ||||
|   input  [77:0] io_iccm_rd_data_ecc, | ||||
|   input  [1:0]  io_ifu_fetch_val, | ||||
|   output        io_ic_hit_f, | ||||
|   output        io_ic_access_fault_f, | ||||
|   output [1:0]  io_ic_access_fault_type_f, | ||||
|   output        io_iccm_rd_ecc_single_err, | ||||
|   output        io_iccm_rd_ecc_double_err, | ||||
|   output        io_ic_error_start, | ||||
|   output        io_ifu_async_error_start, | ||||
|   output        io_iccm_dma_sb_error, | ||||
|   output [1:0]  io_ic_fetch_val_f, | ||||
|   output [31:0] io_ic_data_f, | ||||
|   output [63:0] io_ic_premux_data, | ||||
|   output        io_ic_sel_premux_data, | ||||
|   input  [70:0] io_dec_tlu_ic_diag_pkt_icache_wrdata, | ||||
|   input  [16:0] io_dec_tlu_ic_diag_pkt_icache_dicawics, | ||||
|   input         io_dec_tlu_ic_diag_pkt_icache_rd_valid, | ||||
|   input         io_dec_tlu_ic_diag_pkt_icache_wr_valid, | ||||
|   input         io_dec_tlu_core_ecc_disable, | ||||
|   output        io_ifu_ic_debug_rd_data_valid, | ||||
|   output        io_iccm_buf_correct_ecc, | ||||
|   output        io_iccm_correction_state | ||||
| ); | ||||
|   assign io_ifu_miss_state_idle = 1'h0; // @[el2_ifu_mem_ctl.scala 129:25] | ||||
|   assign io_ifu_ic_mb_empty = 1'h0; // @[el2_ifu_mem_ctl.scala 130:21] | ||||
|   assign io_ic_dma_active = 1'h0; // @[el2_ifu_mem_ctl.scala 131:19] | ||||
|   assign io_ic_write_stall = 1'h0; // @[el2_ifu_mem_ctl.scala 132:20] | ||||
|   assign io_ifu_pmu_ic_miss = 1'h0; // @[el2_ifu_mem_ctl.scala 133:21] | ||||
|   assign io_ifu_pmu_ic_hit = 1'h0; // @[el2_ifu_mem_ctl.scala 134:20] | ||||
|   assign io_ifu_pmu_bus_error = 1'h0; // @[el2_ifu_mem_ctl.scala 135:23] | ||||
|   assign io_ifu_pmu_bus_busy = 1'h0; // @[el2_ifu_mem_ctl.scala 136:22] | ||||
|   assign io_ifu_pmu_bus_trxn = 1'h0; // @[el2_ifu_mem_ctl.scala 137:22] | ||||
|   assign io_ifu_axi_awvalid = 1'h0; // @[el2_ifu_mem_ctl.scala 138:21] | ||||
|   assign io_ifu_axi_awid = 3'h0; // @[el2_ifu_mem_ctl.scala 139:18] | ||||
|   assign io_ifu_axi_awaddr = 32'h0; // @[el2_ifu_mem_ctl.scala 140:20] | ||||
|   assign io_ifu_axi_awregion = 4'h0; // @[el2_ifu_mem_ctl.scala 199:22] | ||||
|   assign io_ifu_axi_awlen = 8'h0; // @[el2_ifu_mem_ctl.scala 141:19] | ||||
|   assign io_ifu_axi_awsize = 3'h0; // @[el2_ifu_mem_ctl.scala 142:20] | ||||
|   assign io_ifu_axi_awburst = 2'h0; // @[el2_ifu_mem_ctl.scala 143:21] | ||||
|   assign io_ifu_axi_awlock = 1'h0; // @[el2_ifu_mem_ctl.scala 144:20] | ||||
|   assign io_ifu_axi_awcache = 4'h0; // @[el2_ifu_mem_ctl.scala 145:21] | ||||
|   assign io_ifu_axi_awprot = 3'h0; // @[el2_ifu_mem_ctl.scala 146:20] | ||||
|   assign io_ifu_axi_awqos = 4'h0; // @[el2_ifu_mem_ctl.scala 147:19] | ||||
|   assign io_ifu_axi_wvalid = 1'h0; // @[el2_ifu_mem_ctl.scala 148:20] | ||||
|   assign io_ifu_axi_wdata = 64'h0; // @[el2_ifu_mem_ctl.scala 149:19] | ||||
|   assign io_ifu_axi_wstrb = 8'h0; // @[el2_ifu_mem_ctl.scala 150:19] | ||||
|   assign io_ifu_axi_wlast = 1'h0; // @[el2_ifu_mem_ctl.scala 151:19] | ||||
|   assign io_ifu_axi_bready = 1'h0; // @[el2_ifu_mem_ctl.scala 152:20] | ||||
|   assign io_ifu_axi_arvalid = 1'h0; // @[el2_ifu_mem_ctl.scala 153:21] | ||||
|   assign io_ifu_axi_arid = 3'h0; // @[el2_ifu_mem_ctl.scala 155:18] | ||||
|   assign io_ifu_axi_araddr = 32'h0; // @[el2_ifu_mem_ctl.scala 156:20] | ||||
|   assign io_ifu_axi_arregion = 4'h0; // @[el2_ifu_mem_ctl.scala 157:22] | ||||
|   assign io_ifu_axi_arlen = 8'h0; // @[el2_ifu_mem_ctl.scala 158:19] | ||||
|   assign io_ifu_axi_arsize = 3'h0; // @[el2_ifu_mem_ctl.scala 159:20] | ||||
|   assign io_ifu_axi_arburst = 2'h0; // @[el2_ifu_mem_ctl.scala 160:21] | ||||
|   assign io_ifu_axi_arlock = 1'h0; // @[el2_ifu_mem_ctl.scala 161:20] | ||||
|   assign io_ifu_axi_arcache = 4'h0; // @[el2_ifu_mem_ctl.scala 162:21] | ||||
|   assign io_ifu_axi_arprot = 3'h0; // @[el2_ifu_mem_ctl.scala 163:20] | ||||
|   assign io_ifu_axi_arqos = 4'h0; // @[el2_ifu_mem_ctl.scala 164:19] | ||||
|   assign io_ifu_axi_rready = 1'h0; // @[el2_ifu_mem_ctl.scala 165:20] | ||||
|   assign io_iccm_dma_ecc_error = 1'h0; // @[el2_ifu_mem_ctl.scala 166:24] | ||||
|   assign io_iccm_dma_rvalid = 1'h0; // @[el2_ifu_mem_ctl.scala 167:21] | ||||
|   assign io_iccm_dma_rdata = 64'h0; // @[el2_ifu_mem_ctl.scala 168:20] | ||||
|   assign io_iccm_dma_rtag = 3'h0; // @[el2_ifu_mem_ctl.scala 169:19] | ||||
|   assign io_iccm_ready = 1'h0; // @[el2_ifu_mem_ctl.scala 170:16] | ||||
|   assign io_ic_rw_addr = 31'h0; // @[el2_ifu_mem_ctl.scala 171:16] | ||||
|   assign io_ic_wr_en = 2'h0; // @[el2_ifu_mem_ctl.scala 172:14] | ||||
|   assign io_ic_rd_en = 1'h0; // @[el2_ifu_mem_ctl.scala 173:14] | ||||
|   assign io_ic_wr_data_0 = 71'h0; // @[el2_ifu_mem_ctl.scala 174:16] | ||||
|   assign io_ic_wr_data_1 = 71'h0; // @[el2_ifu_mem_ctl.scala 174:16] | ||||
|   assign io_ic_debug_wr_data = 71'h0; // @[el2_ifu_mem_ctl.scala 175:22] | ||||
|   assign io_ifu_ic_debug_rd_data = 71'h0; // @[el2_ifu_mem_ctl.scala 176:26] | ||||
|   assign io_ic_debug_addr = 10'h0; // @[el2_ifu_mem_ctl.scala 154:19] | ||||
|   assign io_ic_debug_rd_en = 1'h0; // @[el2_ifu_mem_ctl.scala 126:20] | ||||
|   assign io_ic_debug_wr_en = 1'h0; // @[el2_ifu_mem_ctl.scala 127:20] | ||||
|   assign io_ic_debug_tag_array = 1'h0; // @[el2_ifu_mem_ctl.scala 128:24] | ||||
|   assign io_ic_debug_way = 2'h0; // @[el2_ifu_mem_ctl.scala 198:18] | ||||
|   assign io_ic_tag_valid = 2'h0; // @[el2_ifu_mem_ctl.scala 177:18] | ||||
|   assign io_iccm_rw_addr = 15'h0; // @[el2_ifu_mem_ctl.scala 178:18] | ||||
|   assign io_iccm_wren = 1'h0; // @[el2_ifu_mem_ctl.scala 179:15] | ||||
|   assign io_iccm_rden = 1'h0; // @[el2_ifu_mem_ctl.scala 180:15] | ||||
|   assign io_iccm_wr_data = 78'h0; // @[el2_ifu_mem_ctl.scala 181:18] | ||||
|   assign io_iccm_wr_size = 3'h0; // @[el2_ifu_mem_ctl.scala 182:18] | ||||
|   assign io_ic_hit_f = 1'h0; // @[el2_ifu_mem_ctl.scala 183:14] | ||||
|   assign io_ic_access_fault_f = 1'h0; // @[el2_ifu_mem_ctl.scala 184:23] | ||||
|   assign io_ic_access_fault_type_f = 2'h0; // @[el2_ifu_mem_ctl.scala 185:28] | ||||
|   assign io_iccm_rd_ecc_single_err = 1'h0; // @[el2_ifu_mem_ctl.scala 186:28] | ||||
|   assign io_iccm_rd_ecc_double_err = 1'h0; // @[el2_ifu_mem_ctl.scala 187:28] | ||||
|   assign io_ic_error_start = 1'h0; // @[el2_ifu_mem_ctl.scala 188:20] | ||||
|   assign io_ifu_async_error_start = 1'h0; // @[el2_ifu_mem_ctl.scala 189:27] | ||||
|   assign io_iccm_dma_sb_error = 1'h0; // @[el2_ifu_mem_ctl.scala 190:23] | ||||
|   assign io_ic_fetch_val_f = 2'h0; // @[el2_ifu_mem_ctl.scala 191:20] | ||||
|   assign io_ic_data_f = 32'h0; // @[el2_ifu_mem_ctl.scala 192:15] | ||||
|   assign io_ic_premux_data = 64'h0; // @[el2_ifu_mem_ctl.scala 193:20] | ||||
|   assign io_ic_sel_premux_data = 1'h0; // @[el2_ifu_mem_ctl.scala 194:24] | ||||
|   assign io_ifu_ic_debug_rd_data_valid = 1'h0; // @[el2_ifu_mem_ctl.scala 195:32] | ||||
|   assign io_iccm_buf_correct_ecc = 1'h0; // @[el2_ifu_mem_ctl.scala 196:26] | ||||
|   assign io_iccm_correction_state = 1'h0; // @[el2_ifu_mem_ctl.scala 197:27] | ||||
| endmodule | ||||
|  | @ -393,7 +393,7 @@ class el2_ifu_bp_ctl extends Module with el2_lib { | |||
| 
 | ||||
|   val bht_bank_rd_data_out = Wire(Vec(2, Vec(BHT_ARRAY_DEPTH, UInt(2.W)))) | ||||
|   for(i<-0 until 2; k<-0 until BHT_ARRAY_DEPTH/NUM_BHT_LOOP; j<-0 until NUM_BHT_LOOP){ | ||||
|     bht_bank_rd_data_out(i)((16*k)+j) := RegEnable(bht_bank_wr_data(i)(j)(k), 0.U, bht_bank_sel(i)(j)(k)&bht_bank_clken(i)(k)) | ||||
|     bht_bank_rd_data_out(i)((16*k)+j) := RegEnable(bht_bank_wr_data(i)(j)(k), 0.U, bht_bank_sel(i)(j)(k)) | ||||
|   } | ||||
| 
 | ||||
|   bht_bank0_rd_data_f := Mux1H((0 until BHT_ARRAY_DEPTH).map(i=>(bht_rd_addr_f(BHT_ADDR_HI-BHT_ADDR_LO,0)===i.U).asBool->bht_bank_rd_data_out(0)(i))) | ||||
|  |  | |||
|  | @ -0,0 +1,205 @@ | |||
| package ifu | ||||
| import chisel3._ | ||||
| import chisel3.util._ | ||||
| import lib._ | ||||
| import include._ | ||||
| import scala.math.pow | ||||
| 
 | ||||
| class el2_ifu_mem_ctl extends Module with el2_lib { | ||||
|   val io = IO(new Bundle { | ||||
|     val free_clk = Input(Clock()) | ||||
|     val active_clk = Input(Clock()) | ||||
|     val exu_flush_final = Input(Bool()) | ||||
|     val dec_tlu_flush_lower_wb = Input(Bool()) | ||||
|     val dec_tlu_flush_err_wb = Input(Bool()) | ||||
|     val dec_tlu_i0_commit_cmt = Input(Bool()) | ||||
|     val dec_tlu_force_halt = Input(Bool()) | ||||
|     val ifc_fetch_addr_bf = Input(UInt(31.W)) | ||||
|     val ifc_fetch_uncacheable_bf = Input(Bool()) | ||||
|     val ifc_fetch_req_bf = Input(Bool()) | ||||
|     val ifc_fetch_req_bf_raw = Input(Bool()) | ||||
|     val ifc_iccm_access_bf = Input(Bool()) | ||||
|     val ifc_region_acc_fault_bf = Input(Bool()) | ||||
|     val ifc_dma_access_ok = Input(Bool()) | ||||
|     val dec_tlu_fence_i_wb = Input(Bool()) | ||||
|     val ifu_bp_hit_taken_f = Input(Bool()) | ||||
|     val ifu_bp_inst_mask_f = Input(Bool()) | ||||
|     val ifu_miss_state_idle = Output(Bool()) | ||||
|     val ifu_ic_mb_empty = Output(Bool()) | ||||
|     val ic_dma_active = Output(Bool()) | ||||
|     val ic_write_stall = Output(Bool()) | ||||
|     val ifu_pmu_ic_miss = Output(Bool()) | ||||
|     val ifu_pmu_ic_hit = Output(Bool()) | ||||
|     val ifu_pmu_bus_error = Output(Bool()) | ||||
|     val ifu_pmu_bus_busy = Output(Bool()) | ||||
|     val ifu_pmu_bus_trxn = Output(Bool()) | ||||
|     val ifu_axi_awvalid = Output(Bool()) | ||||
|     val ifu_axi_awid = Output(UInt(IFU_BUS_TAG.W)) | ||||
|     val ifu_axi_awaddr = Output(UInt(32.W)) | ||||
|     val ifu_axi_awregion = Output(UInt(4.W)) | ||||
|     val ifu_axi_awlen = Output(UInt(8.W)) | ||||
|     val ifu_axi_awsize = Output(UInt(3.W)) | ||||
|     val ifu_axi_awburst = Output(UInt(2.W)) | ||||
|     val ifu_axi_awlock = Output(Bool()) | ||||
|     val ifu_axi_awcache = Output(UInt(4.W)) | ||||
|     val ifu_axi_awprot = Output(UInt(3.W)) | ||||
|     val ifu_axi_awqos = Output(UInt(4.W)) | ||||
|     val ifu_axi_wvalid = Output(Bool()) | ||||
|     val ifu_axi_wdata = Output(UInt(64.W)) | ||||
|     val ifu_axi_wstrb = Output(UInt(8.W)) | ||||
|     val ifu_axi_wlast = Output(Bool()) | ||||
|     val ifu_axi_bready = Output(Bool()) | ||||
|     val ifu_axi_arvalid = Output(Bool()) | ||||
|     val ifu_axi_arready = Input(Bool()) | ||||
|     val ifu_axi_arid = Output(UInt(IFU_BUS_TAG.W)) | ||||
|     val ifu_axi_araddr = Output(UInt(32.W)) | ||||
|     val ifu_axi_arregion = Output(UInt(4.W)) | ||||
|     val ifu_axi_arlen = Output(UInt(8.W)) | ||||
|     val ifu_axi_arsize = Output(UInt(3.W)) | ||||
|     val ifu_axi_arburst = Output(UInt(2.W)) | ||||
|     val ifu_axi_arlock = Output(Bool()) | ||||
|     val ifu_axi_arcache = Output(UInt(4.W)) | ||||
|     val ifu_axi_arprot = Output(UInt(3.W)) | ||||
|     val ifu_axi_arqos = Output(UInt(4.W)) | ||||
|     val ifu_axi_rvalid = Input(Bool()) | ||||
|     val ifu_axi_rready = Output(Bool()) | ||||
|     val ifu_axi_rid = Input(UInt(IFU_BUS_TAG.W)) | ||||
|     val ifu_axi_rdata = Input(UInt(64.W)) | ||||
|     val ifu_axi_rresp = Input(UInt(2.W)) | ||||
|     val ifu_bus_clk_en = Input(Bool()) | ||||
|     val dma_iccm_req = Input(Bool()) | ||||
|     val dma_mem_addr = Input(UInt(32.W)) | ||||
|     val dma_mem_sz = Input(UInt(3.W)) | ||||
|     val dma_mem_write = Input(Bool()) | ||||
|     val dma_mem_wdata = Input(UInt(64.W)) | ||||
|     val dma_mem_tag = Input(UInt(3.W)) | ||||
|     val iccm_dma_ecc_error = Output(Bool()) | ||||
|     val iccm_dma_rvalid = Output(Bool()) | ||||
|     val iccm_dma_rdata = Output(UInt(64.W)) | ||||
|     val iccm_dma_rtag = Output(UInt(3.W)) | ||||
|     val iccm_ready = Output(Bool()) | ||||
|     val ic_rw_addr = Output(UInt(31.W)) | ||||
|     val ic_wr_en = Output(UInt(ICACHE_NUM_WAYS.W)) | ||||
|     val ic_rd_en = Output(Bool()) | ||||
|     val ic_wr_data = Output(Vec(ICACHE_BANKS_WAY, UInt(71.W))) | ||||
|     val ic_rd_data = Input(UInt(64.W)) | ||||
|     val ic_debug_rd_data = Input(UInt(71.W)) | ||||
|     val ictag_debug_rd_data = Input(UInt(26.W)) | ||||
|     val ic_debug_wr_data = Output(UInt(71.W)) | ||||
|     val ifu_ic_debug_rd_data = Output(UInt(71.W)) | ||||
|     val ic_eccerr = Input(UInt(ICACHE_BANKS_WAY.W)) | ||||
|     val ic_parerr = Input(UInt(ICACHE_BANKS_WAY.W)) | ||||
|     val ic_debug_addr = Output(UInt((ICACHE_INDEX_HI-2).W)) | ||||
|     val ic_debug_rd_en = Output(Bool()) | ||||
|     val ic_debug_wr_en = Output(Bool()) | ||||
|     val ic_debug_tag_array = Output(Bool()) | ||||
|     val ic_debug_way = Output(UInt(ICACHE_NUM_WAYS.W)) | ||||
|     val ic_tag_valid = Output(UInt(ICACHE_NUM_WAYS.W)) | ||||
|     val ic_rd_hit = Input(UInt(ICACHE_NUM_WAYS.W)) | ||||
|     val ic_tag_perr = Input(Bool()) | ||||
|     val iccm_rw_addr = Output(UInt((ICCM_BITS-1).W)) | ||||
|     val iccm_wren = Output(Bool()) | ||||
|     val iccm_rden = Output(Bool()) | ||||
|     val iccm_wr_data = Output(UInt(78.W)) | ||||
|     val iccm_wr_size = Output(UInt(3.W)) | ||||
|     val iccm_rd_data = Input(UInt(64.W)) | ||||
|     val iccm_rd_data_ecc = Input(UInt(78.W)) | ||||
|     val ifu_fetch_val = Input(UInt(2.W)) | ||||
|     val ic_hit_f = Output(Bool()) | ||||
|     val ic_access_fault_f = Output(Bool()) | ||||
|     val ic_access_fault_type_f = Output(UInt(2.W)) | ||||
|     val iccm_rd_ecc_single_err = Output(Bool()) | ||||
|     val iccm_rd_ecc_double_err = Output(Bool()) | ||||
|     val ic_error_start = Output(Bool()) | ||||
|     val ifu_async_error_start = Output(Bool()) | ||||
|     val iccm_dma_sb_error = Output(Bool()) | ||||
|     val ic_fetch_val_f = Output(UInt(2.W)) | ||||
|     val ic_data_f = Output(UInt(32.W)) | ||||
|     val ic_premux_data = Output(UInt(64.W)) | ||||
|     val ic_sel_premux_data = Output(Bool()) | ||||
|     val dec_tlu_ic_diag_pkt = Input(new el2_cache_debug_pkt_t) | ||||
|     val dec_tlu_core_ecc_disable = Input(Bool()) | ||||
|     val ifu_ic_debug_rd_data_valid = Output(Bool()) | ||||
|     val iccm_buf_correct_ecc = Output(Bool()) | ||||
|     val iccm_correction_state = Output(Bool()) | ||||
|   }) | ||||
|   io.ic_debug_rd_en:=0.U | ||||
|   io.ic_debug_wr_en:=0.U | ||||
|   io.ic_debug_tag_array:=0.U | ||||
|   io.ifu_miss_state_idle:=0.U | ||||
|   io.ifu_ic_mb_empty:=0.U | ||||
|   io.ic_dma_active:=0.U | ||||
|   io.ic_write_stall:=0.U | ||||
|   io.ifu_pmu_ic_miss:=0.U | ||||
|   io.ifu_pmu_ic_hit:=0.U | ||||
|   io.ifu_pmu_bus_error:=0.U | ||||
|   io.ifu_pmu_bus_busy:=0.U | ||||
|   io.ifu_pmu_bus_trxn:=0.U | ||||
|   io.ifu_axi_awvalid:=0.U | ||||
|   io.ifu_axi_awid:=0.U | ||||
|   io.ifu_axi_awaddr:=0.U | ||||
|   io.ifu_axi_awlen:=0.U | ||||
|   io.ifu_axi_awsize:=0.U | ||||
|   io.ifu_axi_awburst:=0.U | ||||
|   io.ifu_axi_awlock:=0.U | ||||
|   io.ifu_axi_awcache:=0.U | ||||
|   io.ifu_axi_awprot:=0.U | ||||
|   io.ifu_axi_awqos:=0.U | ||||
|   io.ifu_axi_wvalid:=0.U | ||||
|   io.ifu_axi_wdata:=0.U | ||||
|   io.ifu_axi_wstrb:=0.U | ||||
|   io.ifu_axi_wlast:=0.U | ||||
|   io.ifu_axi_bready:=0.U | ||||
|   io.ifu_axi_arvalid:=0.U | ||||
|   io.ic_debug_addr:=0.U | ||||
|   io.ifu_axi_arid:=0.U | ||||
|   io.ifu_axi_araddr:=0.U | ||||
|   io.ifu_axi_arregion:=0.U | ||||
|   io.ifu_axi_arlen:=0.U | ||||
|   io.ifu_axi_arsize:=0.U | ||||
|   io.ifu_axi_arburst:=0.U | ||||
|   io.ifu_axi_arlock:=0.U | ||||
|   io.ifu_axi_arcache:=0.U | ||||
|   io.ifu_axi_arprot:=0.U | ||||
|   io.ifu_axi_arqos:=0.U | ||||
|   io.ifu_axi_rready:=0.U | ||||
|   io.iccm_dma_ecc_error:=0.U | ||||
|   io.iccm_dma_rvalid:=0.U | ||||
|   io.iccm_dma_rdata:=0.U | ||||
|   io.iccm_dma_rtag:=0.U | ||||
|   io.iccm_ready:=0.U | ||||
|   io.ic_rw_addr:=0.U | ||||
|   io.ic_wr_en:=0.U | ||||
|   io.ic_rd_en:=0.U | ||||
|   io.ic_wr_data:=(0 until ICACHE_BANKS_WAY).map(i=>0.U) // TODO | ||||
|   io.ic_debug_wr_data:=0.U | ||||
|   io.ifu_ic_debug_rd_data:=0.U | ||||
|   io.ic_tag_valid:=0.U | ||||
|   io.iccm_rw_addr:=0.U | ||||
|   io.iccm_wren:=0.U | ||||
|   io.iccm_rden:=0.U | ||||
|   io.iccm_wr_data:=0.U | ||||
|   io.iccm_wr_size:=0.U | ||||
|   io.ic_hit_f:=0.U | ||||
|   io.ic_access_fault_f:=0.U | ||||
|   io.ic_access_fault_type_f:=0.U | ||||
|   io.iccm_rd_ecc_single_err:=0.U | ||||
|   io.iccm_rd_ecc_double_err:=0.U | ||||
|   io.ic_error_start:=0.U | ||||
|   io.ifu_async_error_start:=0.U | ||||
|   io.iccm_dma_sb_error:=0.U | ||||
|   io.ic_fetch_val_f:=0.U | ||||
|   io.ic_data_f:=0.U | ||||
|   io.ic_premux_data:=0.U | ||||
|   io.ic_sel_premux_data:=0.U | ||||
|   io.ifu_ic_debug_rd_data_valid:=0.U | ||||
|   io.iccm_buf_correct_ecc:=0.U | ||||
|   io.iccm_correction_state:=0.U | ||||
|   io.ic_debug_way:=0.U | ||||
|   io.ifu_axi_awregion:=0.U | ||||
| } | ||||
| 
 | ||||
| object ifu_mem extends App { | ||||
|   println((new chisel3.stage.ChiselStage).emitVerilog(new el2_ifu_mem_ctl())) | ||||
| } | ||||
| 
 | ||||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue