mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Revert "added priority circuit to attempt to remove delay due to rippling in pmpadrdec"
This reverts commit 9461fd9fbd51e17a416a7df6982379fbfa6b0974.
This commit is contained in:
		
							parent
							
								
									e4a9abc16c
								
							
						
					
					
						commit
						ab142300ef
					
				@ -34,10 +34,9 @@ module pmpadrdec (
 | 
			
		||||
  input  logic [7:0]       PMPCfg,
 | 
			
		||||
  input  logic [`XLEN-1:0] PMPAdr,
 | 
			
		||||
  input  logic             PAgePMPAdrIn,
 | 
			
		||||
//  input  logic             NoLowerMatchIn,
 | 
			
		||||
  input  logic             FirstMatch,
 | 
			
		||||
  input  logic             NoLowerMatchIn,
 | 
			
		||||
  output logic             PAgePMPAdrOut,
 | 
			
		||||
//  output logic             NoLowerMatchOut,
 | 
			
		||||
  output logic             NoLowerMatchOut,
 | 
			
		||||
  output logic             Match, Active, 
 | 
			
		||||
  output logic             L, X, W, R
 | 
			
		||||
);
 | 
			
		||||
@ -48,7 +47,7 @@ module pmpadrdec (
 | 
			
		||||
 | 
			
		||||
  logic TORMatch, NAMatch;
 | 
			
		||||
  logic PAltPMPAdr;
 | 
			
		||||
//  logic FirstMatch;
 | 
			
		||||
  logic FirstMatch;
 | 
			
		||||
  logic [`PA_BITS-1:0] CurrentAdrFull;
 | 
			
		||||
  logic [1:0] AdrMode;
 | 
			
		||||
 | 
			
		||||
@ -88,8 +87,8 @@ module pmpadrdec (
 | 
			
		||||
                 (AdrMode == NA4 || AdrMode == NAPOT) ? NAMatch :
 | 
			
		||||
                 0;
 | 
			
		||||
 | 
			
		||||
//  assign FirstMatch =      NoLowerMatchIn & Match;
 | 
			
		||||
//  assign NoLowerMatchOut = NoLowerMatchIn & ~Match;
 | 
			
		||||
  assign FirstMatch =      NoLowerMatchIn & Match;
 | 
			
		||||
  assign NoLowerMatchOut = NoLowerMatchIn & ~Match;
 | 
			
		||||
  assign L = PMPCfg[7] & FirstMatch;
 | 
			
		||||
  assign X = PMPCfg[2] & FirstMatch;
 | 
			
		||||
  assign W = PMPCfg[1] & FirstMatch;
 | 
			
		||||
 | 
			
		||||
@ -55,7 +55,7 @@ module pmpchecker (
 | 
			
		||||
  // Bit i is high when the address falls in PMP region i
 | 
			
		||||
  logic                    EnforcePMP;
 | 
			
		||||
  logic [7:0]              PMPCfg[`PMP_ENTRIES-1:0];
 | 
			
		||||
  logic [`PMP_ENTRIES-1:0] Match, FirstMatch;      // PMP Entry matches
 | 
			
		||||
  logic [`PMP_ENTRIES-1:0] Match;      // PMP Entry matches
 | 
			
		||||
  logic [`PMP_ENTRIES-1:0] Active;     // PMP register i is non-null
 | 
			
		||||
  logic [`PMP_ENTRIES-1:0] L, X, W, R; // PMP matches and has flag set
 | 
			
		||||
  // verilator lint_off UNOPTFLAT
 | 
			
		||||
@ -70,11 +70,9 @@ module pmpchecker (
 | 
			
		||||
    .PMPAdr(PMPADDR_ARRAY_REGW),
 | 
			
		||||
    .PAgePMPAdrIn({PAgePMPAdr[`PMP_ENTRIES-2:0], 1'b1}),
 | 
			
		||||
    .PAgePMPAdrOut(PAgePMPAdr),
 | 
			
		||||
//    .NoLowerMatchIn({NoLowerMatch[`PMP_ENTRIES-2:0], 1'b1}),
 | 
			
		||||
//    .NoLowerMatchOut(NoLowerMatch),
 | 
			
		||||
    .FirstMatch, .Match, .Active, .L, .X, .W, .R);
 | 
			
		||||
 | 
			
		||||
  prioritycircuit #(`PMP_ENTRIES) pmppriority(.a(Match), .y(FirstMatch)); // Take the ripple gates/signals out of the pmpadrdec and into another unit. *** seems like it won't actually help since there still needs to be a ripple of some kind with this logic.
 | 
			
		||||
    .NoLowerMatchIn({NoLowerMatch[`PMP_ENTRIES-2:0], 1'b1}),
 | 
			
		||||
    .NoLowerMatchOut(NoLowerMatch),
 | 
			
		||||
    .Match, .Active, .L, .X, .W, .R);
 | 
			
		||||
 | 
			
		||||
  // Only enforce PMP checking for S and U modes when at least one PMP is active or in Machine mode when L bit is set in selected region
 | 
			
		||||
  assign EnforcePMP = (PrivilegeModeW == `M_MODE) ? |L : |Active; 
 | 
			
		||||
 | 
			
		||||
@ -39,7 +39,7 @@ module tlblru #(parameter TLB_ENTRIES = 8) (
 | 
			
		||||
  logic                AllUsed;  // High if the next access causes all RU bits to be 1
 | 
			
		||||
 | 
			
		||||
  // Find the first line not recently used
 | 
			
		||||
  prioritycircuit #(TLB_ENTRIES) nru(~RUBits, WriteLines);
 | 
			
		||||
  tlbpriority #(TLB_ENTRIES) nru(~RUBits, WriteLines);
 | 
			
		||||
 | 
			
		||||
  // Track recently used lines, updating on a CAM Hit or TLB write
 | 
			
		||||
  assign WriteEnables = WriteLines & {(TLB_ENTRIES){TLBWrite}};
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,5 @@
 | 
			
		||||
///////////////////////////////////////////
 | 
			
		||||
// prioritycircuit.sv
 | 
			
		||||
// tlbpriority.sv
 | 
			
		||||
//
 | 
			
		||||
// Written: tfleming@hmc.edu & jtorrey@hmc.edu 7 April 2021
 | 
			
		||||
// Modified: Teo Ene 15 Apr 2021:
 | 
			
		||||
@ -30,7 +30,7 @@
 | 
			
		||||
 | 
			
		||||
`include "wally-config.vh"
 | 
			
		||||
 | 
			
		||||
module prioritycircuit #(parameter ENTRIES = 8) (
 | 
			
		||||
module tlbpriority #(parameter ENTRIES = 8) (
 | 
			
		||||
  input  logic  [ENTRIES-1:0] a,
 | 
			
		||||
  output logic  [ENTRIES-1:0] y
 | 
			
		||||
);
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user