mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	More optimizations for cclsm.
This commit is contained in:
		
							parent
							
								
									4d4790ecf9
								
							
						
					
					
						commit
						df85428041
					
				@ -37,7 +37,6 @@ module align import cvw::*;  #(parameter cvw_t P) (
 | 
			
		||||
  input logic [P.XLEN-1:0]        IEUAdrE, // The next IEUAdrM
 | 
			
		||||
  input logic [2:0]               Funct3M, // Size of memory operation
 | 
			
		||||
  input logic [1:0]               MemRWM, 
 | 
			
		||||
  input logic                     CacheableM,
 | 
			
		||||
  input logic [P.LLEN*2-1:0]      DCacheReadDataWordM, // Instruction from the IROM, I$, or bus. Used to check if the instruction if compressed
 | 
			
		||||
  input logic                     CacheBusHPWTStall, // I$ or bus are stalled. Transition to second fetch of spill after the first is fetched
 | 
			
		||||
  input logic                     DTLBMissM, // ITLB miss, ignore memory request
 | 
			
		||||
@ -54,7 +53,6 @@ module align import cvw::*;  #(parameter cvw_t P) (
 | 
			
		||||
  output logic [P.XLEN-1:0]       IEUAdrSpillE, // The next PCF for one of the two memory addresses of the spill
 | 
			
		||||
  output logic [P.XLEN-1:0]       IEUAdrSpillM, // IEUAdrM for one of the two memory addresses of the spill
 | 
			
		||||
  output logic                    SelSpillE, // During the transition between the two spill operations, the IFU should stall the pipeline
 | 
			
		||||
  output logic [1:0]              MemRWSpillM, 
 | 
			
		||||
  output logic                    SelStoreDelay, //*** this is bad.  really don't like moving this outside
 | 
			
		||||
  output logic [P.LLEN-1:0]       DCacheReadDataWordSpillM, // The final 32 bit instruction after merging the two spilled fetches into 1 instruction
 | 
			
		||||
  output logic                    SpillStallM);
 | 
			
		||||
@ -157,7 +155,6 @@ module align import cvw::*;  #(parameter cvw_t P) (
 | 
			
		||||
  assign SpillSaveM = (CurrState == STATE_READY) & ValidSpillM & ~FlushM;
 | 
			
		||||
  assign SelStoreDelay = (CurrState == STATE_STORE_DELAY);  // *** Can this be merged into the PreLSURWM logic?
 | 
			
		||||
  assign SpillStallM = SelSpillE | CurrState == STATE_STORE_DELAY;
 | 
			
		||||
  mux2 #(2) memrwmux(MemRWM, 2'b00, SelStoreDelay, MemRWSpillM);
 | 
			
		||||
 | 
			
		||||
  ////////////////////////////////////////////////////////////////////////////////////////////////////
 | 
			
		||||
  // Merge spilled data
 | 
			
		||||
 | 
			
		||||
@ -159,10 +159,10 @@ module lsu import cvw::*;  #(parameter cvw_t P) (
 | 
			
		||||
  if(MISALIGN_SUPPORT) begin : ziccslm_align
 | 
			
		||||
    logic [P.XLEN-1:0] IEUAdrSpillE, IEUAdrSpillM;
 | 
			
		||||
    align #(P) align(.clk, .reset, .StallM, .FlushM, .IEUAdrE, .IEUAdrM, .Funct3M,
 | 
			
		||||
                     .MemRWM, .CacheableM,
 | 
			
		||||
                     .MemRWM,
 | 
			
		||||
                     .DCacheReadDataWordM, .CacheBusHPWTStall, .DTLBMissM, .DataUpdateDAM, .SelHPTW,
 | 
			
		||||
                     .ByteMaskM, .ByteMaskExtendedM, .LSUWriteDataM, .ByteMaskSpillM, .LSUWriteDataSpillM,
 | 
			
		||||
                     .IEUAdrSpillE, .IEUAdrSpillM, .SelSpillE, .MemRWSpillM, .DCacheReadDataWordSpillM, .SpillStallM,
 | 
			
		||||
                     .IEUAdrSpillE, .IEUAdrSpillM, .SelSpillE, .DCacheReadDataWordSpillM, .SpillStallM,
 | 
			
		||||
                     .SelStoreDelay);
 | 
			
		||||
    assign IEUAdrExtM = {2'b00, IEUAdrSpillM}; 
 | 
			
		||||
    assign IEUAdrExtE = {2'b00, IEUAdrSpillE};
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user