mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Comments for dcache and icache refactoring.
This commit is contained in:
		
							parent
							
								
									ee5c2e6101
								
							
						
					
					
						commit
						45b38ea9fe
					
				| @ -115,6 +115,7 @@ module ifu ( | |||||||
|   endgenerate |   endgenerate | ||||||
| 
 | 
 | ||||||
|   assign PCFExt = {2'b00, PCF}; |   assign PCFExt = {2'b00, PCF}; | ||||||
|  |   //
 | ||||||
|   mmu #(.TLB_ENTRIES(`ITLB_ENTRIES), .IMMU(1)) |   mmu #(.TLB_ENTRIES(`ITLB_ENTRIES), .IMMU(1)) | ||||||
|   immu(.PAdr(PCFExt[`PA_BITS-1:0]), |   immu(.PAdr(PCFExt[`PA_BITS-1:0]), | ||||||
|        .VAdr(PCF), |        .VAdr(PCF), | ||||||
| @ -158,6 +159,10 @@ module ifu ( | |||||||
|   //assign InstrReadF = ~StallD; // *** & ICacheMissF; add later
 |   //assign InstrReadF = ~StallD; // *** & ICacheMissF; add later
 | ||||||
|   // assign InstrReadF = 1; // *** & ICacheMissF; add later
 |   // assign InstrReadF = 1; // *** & ICacheMissF; add later
 | ||||||
| 
 | 
 | ||||||
|  |   // conditional
 | ||||||
|  |   // 1. dtim // controlled by `MEM_IROM
 | ||||||
|  |   // 2. cache // `MEM_ICACHE
 | ||||||
|  |   // 3. wire pass-through
 | ||||||
|   icache icache(.clk, .reset, .StallF, .ExceptionM, .PendingInterruptM, .InstrInF, .InstrAckF, |   icache icache(.clk, .reset, .StallF, .ExceptionM, .PendingInterruptM, .InstrInF, .InstrAckF, | ||||||
|   .InstrPAdrF, .InstrReadF, .CompressedF, .ICacheStallF, .ITLBMissF, .ITLBWriteF, .FinalInstrRawF, |   .InstrPAdrF, .InstrReadF, .CompressedF, .ICacheStallF, .ITLBMissF, .ITLBWriteF, .FinalInstrRawF, | ||||||
| 
 | 
 | ||||||
|  | |||||||
| @ -129,6 +129,8 @@ module lsu | |||||||
| 
 | 
 | ||||||
|   assign AnyCPUReqM = (|MemRWM)  | (|AtomicM); |   assign AnyCPUReqM = (|MemRWM)  | (|AtomicM); | ||||||
| 
 | 
 | ||||||
|  |   // *** add generate to conditionally create hptw, lsuArb, and mmu
 | ||||||
|  |   // based on `MEM_VIRTMEM
 | ||||||
|   hptw hptw(.clk(clk), |   hptw hptw(.clk(clk), | ||||||
| 	    .reset(reset), | 	    .reset(reset), | ||||||
| 	    .SATP_REGW(SATP_REGW), | 	    .SATP_REGW(SATP_REGW), | ||||||
| @ -210,6 +212,7 @@ module lsu | |||||||
|        ); // *** the pma/pmp instruction access faults don't really matter here. is it possible to parameterize which outputs exist?
 |        ); // *** the pma/pmp instruction access faults don't really matter here. is it possible to parameterize which outputs exist?
 | ||||||
| 
 | 
 | ||||||
| 
 | 
 | ||||||
|  |   // Move generate from lrsc to outside this module.
 | ||||||
|   assign MemReadM = MemRWMtoLRSC[1] & ~(ExceptionM | PendingInterruptMtoDCache) & ~DTLBMissM; // & ~NonBusTrapM & ~DTLBMissM & CurrState != STATE_STALLED;
 |   assign MemReadM = MemRWMtoLRSC[1] & ~(ExceptionM | PendingInterruptMtoDCache) & ~DTLBMissM; // & ~NonBusTrapM & ~DTLBMissM & CurrState != STATE_STALLED;
 | ||||||
|   lrsc lrsc(.clk, .reset, .FlushW, .StallWtoDCache, .MemReadM, .MemRWMtoLRSC, .AtomicMtoDCache, .MemPAdrM, |   lrsc lrsc(.clk, .reset, .FlushW, .StallWtoDCache, .MemReadM, .MemRWMtoLRSC, .AtomicMtoDCache, .MemPAdrM, | ||||||
|             .SquashSCW, .MemRWMtoDCache); |             .SquashSCW, .MemRWMtoDCache); | ||||||
| @ -219,6 +222,7 @@ module lsu | |||||||
|    |    | ||||||
| 
 | 
 | ||||||
|   // Specify which type of page fault is occurring
 |   // Specify which type of page fault is occurring
 | ||||||
|  |   // *** `MEM_VIRTMEM
 | ||||||
|   assign DTLBLoadPageFaultM = DTLBPageFaultM & MemRWMtoLRSC[1]; |   assign DTLBLoadPageFaultM = DTLBPageFaultM & MemRWMtoLRSC[1]; | ||||||
|   assign DTLBStorePageFaultM = DTLBPageFaultM & MemRWMtoLRSC[0]; |   assign DTLBStorePageFaultM = DTLBPageFaultM & MemRWMtoLRSC[0]; | ||||||
| 
 | 
 | ||||||
| @ -235,6 +239,10 @@ module lsu | |||||||
|   assign LoadMisalignedFaultM = DataMisalignedMfromDCache & MemRWMtoLRSC[1]; |   assign LoadMisalignedFaultM = DataMisalignedMfromDCache & MemRWMtoLRSC[1]; | ||||||
|   assign StoreMisalignedFaultM = DataMisalignedMfromDCache & MemRWMtoLRSC[0]; |   assign StoreMisalignedFaultM = DataMisalignedMfromDCache & MemRWMtoLRSC[0]; | ||||||
| 
 | 
 | ||||||
|  |   // conditional
 | ||||||
|  |   // 1. dtim // controlled by `MEM_DTIM
 | ||||||
|  |   // 2. cache `MEM_DCACHE
 | ||||||
|  |   // 3. wire pass-through
 | ||||||
|   dcache dcache(.clk(clk), |   dcache dcache(.clk(clk), | ||||||
| 		.reset(reset), | 		.reset(reset), | ||||||
| 		.StallWtoDCache(StallWtoDCache), | 		.StallWtoDCache(StallWtoDCache), | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user