Bus-buffer testing start
This commit is contained in:
		
							parent
							
								
									cdd9ae6de0
								
							
						
					
					
						commit
						cb13a0ef8f
					
				|  | @ -1,4 +1,23 @@ | |||
| [ | ||||
|   { | ||||
|     "class":"firrtl.transforms.CombinationalPath", | ||||
|     "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_wdata_in", | ||||
|     "sources":[ | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ldst_dual_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_no_dword_merge_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_addr_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_end_addr_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_pkt_r_store", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_busreq_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_pkt_r_load", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_no_word_merge_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_store_data_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_dec_tlu_wb_coalescing_disable", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_pkt_r_word", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_pkt_r_by", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_pkt_r_half" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "class":"firrtl.transforms.CombinationalPath", | ||||
|     "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ld_fwddata_buf_lo", | ||||
|  | @ -71,6 +90,15 @@ | |||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_nonblock_load_data_error" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "class":"firrtl.transforms.CombinationalPath", | ||||
|     "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_WrPtr1_m", | ||||
|     "sources":[ | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_ldst_dual_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_busreq_r", | ||||
|       "~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_busreq_m" | ||||
|     ] | ||||
|   }, | ||||
|   { | ||||
|     "class":"firrtl.transforms.CombinationalPath", | ||||
|     "sink":"~el2_lsu_bus_buffer|el2_lsu_bus_buffer>io_lsu_imprecise_error_addr_any", | ||||
|  |  | |||
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							
							
								
								
									
										3447
									
								
								el2_lsu_bus_buffer.v
								
								
								
								
							
							
						
						
									
										3447
									
								
								el2_lsu_bus_buffer.v
								
								
								
								
							
										
											
												File diff suppressed because it is too large
												Load Diff
											
										
									
								
							|  | @ -112,6 +112,8 @@ class  el2_lsu_bus_buffer extends Module with RequireAsyncReset with el2_lib { | |||
|     val Cmdptr0 = Output(UInt()) | ||||
|     val Cmdptr1 = Output(UInt()) | ||||
|     val WrPtr1_r = Output(UInt()) | ||||
|     val WrPtr1_m = Output(UInt()) | ||||
|     val wdata_in = Output(UInt()) | ||||
|   }) | ||||
|   def indexing(in : UInt, index : UInt) = Mux1H((0 until math.pow(2, index.getWidth).asInstanceOf[Int]).map(i=>(index===i.U)->in(i))) | ||||
|   def indexing(in : Vec[UInt], index : UInt) = Mux1H((0 until math.pow(2, index.getWidth).asInstanceOf[Int]).map(i=>(index===i.U)->in(i))) | ||||
|  | @ -370,6 +372,7 @@ class  el2_lsu_bus_buffer extends Module with RequireAsyncReset with el2_lib { | |||
|     Mux(indexing(buf_addr, Cmdptr1)(2).asBool(), Cat(indexing(buf_data, Cmdptr1), 0.U(32.W)), Cat(0.U(32.W),indexing(buf_data, Cmdptr1)))) | ||||
|   val obuf_byteen_in = (0 until 8).map(i=>(obuf_byteen0_in(i) | (obuf_merge_en & obuf_byteen1_in(i))).asUInt).reverse.reduce(Cat(_,_)) | ||||
|   val obuf_data_in = (0 until 8).map(i=>Mux(obuf_merge_en & obuf_byteen1_in(i), obuf_data1_in((8*i)+7, 8*i), obuf_data0_in((8*i)+7, 8*i))).reverse.reduce(Cat(_,_)) | ||||
|   io.wdata_in := obuf_data_in | ||||
|   val buf_dualhi = Wire(Vec(DEPTH, Bool())) | ||||
|   buf_dualhi := buf_dualhi.map(i=> false.B) | ||||
|   obuf_merge_en := ((Cmdptr0 =/= Cmdptr1) & found_cmdptr0 & found_cmdptr1 & (indexing(buf_state, Cmdptr0) === cmd_C) & (indexing(buf_state, Cmdptr1) === cmd_C) & | ||||
|  | @ -403,7 +406,7 @@ class  el2_lsu_bus_buffer extends Module with RequireAsyncReset with el2_lib { | |||
|   val found_array2 = (0 until DEPTH).map(i=>((buf_state(i)===idle_C) & !((ibuf_valid & (ibuf_tag===i.U)) | | ||||
|     (io.lsu_busreq_m & (WrPtr0_m===i.U)) | (io.lsu_busreq_r & (WrPtr0_r === i.U)) | (io.ldst_dual_r & (WrPtr1_r===i.U))))->i.U) | ||||
|   val WrPtr1_m = MuxCase(0.U, found_array2) | ||||
| 
 | ||||
|   io.WrPtr1_m := WrPtr1_m | ||||
|   val buf_age = Wire(Vec(DEPTH, UInt(DEPTH.W))) | ||||
|   buf_age := buf_age.map(i=> 0.U) | ||||
| 
 | ||||
|  |  | |||
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
										
											Binary file not shown.
										
									
								
							
		Loading…
	
		Reference in New Issue