mirror of
				https://github.com/openhwgroup/cvw
				synced 2025-02-11 06:05:49 +00:00 
			
		
		
		
	Renamed signal in pmachecker.
This commit is contained in:
		
							parent
							
								
									69653e5faa
								
							
						
					
					
						commit
						9a24a5d957
					
				| @ -30,17 +30,17 @@ | ||||
| 
 | ||||
| module adrdecs import cvw::*;  #(parameter cvw_t P) ( | ||||
|   input  logic [P.PA_BITS-1:0] PhysicalAddress, | ||||
|   input  logic                 AccessRW, AccessRX, AccessRWXZ, AccessRWZ, AccessRXZ, | ||||
|   input  logic                 AccessRW, AccessRX, AccessRWXZ, AccessRWC, AccessRXC, | ||||
|   input  logic [1:0]           Size, | ||||
|   output logic [11:0]          SelRegions | ||||
| ); | ||||
| 
 | ||||
|   localparam logic [3:0]       SUPPORTED_SIZE = (P.LLEN == 32 ? 4'b0111 : 4'b1111); | ||||
|  // Determine which region of physical memory (if any) is being accessed
 | ||||
|   adrdec #(P.PA_BITS) dtimdec(PhysicalAddress, P.DTIM_BASE[P.PA_BITS-1:0], P.DTIM_RANGE[P.PA_BITS-1:0], P.DTIM_SUPPORTED, AccessRWZ, Size, SUPPORTED_SIZE, SelRegions[11]);   | ||||
|   adrdec #(P.PA_BITS) iromdec(PhysicalAddress, P.IROM_BASE[P.PA_BITS-1:0], P.IROM_RANGE[P.PA_BITS-1:0], P.IROM_SUPPORTED, AccessRXZ, Size, SUPPORTED_SIZE, SelRegions[10]);   | ||||
|   adrdec #(P.PA_BITS) dtimdec(PhysicalAddress, P.DTIM_BASE[P.PA_BITS-1:0], P.DTIM_RANGE[P.PA_BITS-1:0], P.DTIM_SUPPORTED, AccessRWC, Size, SUPPORTED_SIZE, SelRegions[11]);   | ||||
|   adrdec #(P.PA_BITS) iromdec(PhysicalAddress, P.IROM_BASE[P.PA_BITS-1:0], P.IROM_RANGE[P.PA_BITS-1:0], P.IROM_SUPPORTED, AccessRXC, Size, SUPPORTED_SIZE, SelRegions[10]);   | ||||
|   adrdec #(P.PA_BITS) ddr4dec(PhysicalAddress, P.EXT_MEM_BASE[P.PA_BITS-1:0], P.EXT_MEM_RANGE[P.PA_BITS-1:0], P.EXT_MEM_SUPPORTED, AccessRWXZ, Size, SUPPORTED_SIZE, SelRegions[9]);   | ||||
|   adrdec #(P.PA_BITS) bootromdec(PhysicalAddress, P.BOOTROM_BASE[P.PA_BITS-1:0], P.BOOTROM_RANGE[P.PA_BITS-1:0], P.BOOTROM_SUPPORTED, AccessRXZ, Size, SUPPORTED_SIZE, SelRegions[8]); | ||||
|   adrdec #(P.PA_BITS) bootromdec(PhysicalAddress, P.BOOTROM_BASE[P.PA_BITS-1:0], P.BOOTROM_RANGE[P.PA_BITS-1:0], P.BOOTROM_SUPPORTED, AccessRXC, Size, SUPPORTED_SIZE, SelRegions[8]); | ||||
|   adrdec #(P.PA_BITS) uncoreramdec(PhysicalAddress, P.UNCORE_RAM_BASE[P.PA_BITS-1:0], P.UNCORE_RAM_RANGE[P.PA_BITS-1:0], P.UNCORE_RAM_SUPPORTED, AccessRWXZ, Size, SUPPORTED_SIZE, SelRegions[7]); | ||||
|   adrdec #(P.PA_BITS) clintdec(PhysicalAddress, P.CLINT_BASE[P.PA_BITS-1:0], P.CLINT_RANGE[P.PA_BITS-1:0], P.CLINT_SUPPORTED, AccessRW, Size, SUPPORTED_SIZE, SelRegions[6]); | ||||
|   adrdec #(P.PA_BITS) gpiodec(PhysicalAddress, P.GPIO_BASE[P.PA_BITS-1:0], P.GPIO_RANGE[P.PA_BITS-1:0], P.GPIO_SUPPORTED, AccessRW, Size, 4'b0100, SelRegions[5]); | ||||
|  | ||||
| @ -44,20 +44,20 @@ module pmachecker import cvw::*;  #(parameter cvw_t P) ( | ||||
| ); | ||||
| 
 | ||||
|   logic                        PMAAccessFault; | ||||
|   logic                        AccessRW, AccessRWXZ, AccessRX, AccessRWZ, AccessRXZ; | ||||
|   logic                        AccessRW, AccessRWXZ, AccessRX, AccessRWC, AccessRXC; | ||||
|   logic [11:0]                 SelRegions; | ||||
|   logic                        AtomicAllowed; | ||||
|   logic                        CacheableRegion, IdempotentRegion; | ||||
| 
 | ||||
|   // Determine what type of access is being made
 | ||||
|   assign AccessRW  = ReadAccessM | WriteAccessM; | ||||
|   assign AccessRWZ  = AccessRW | (P.ZICBOM_SUPPORTED & (|CMOp[2:0])); | ||||
|   assign AccessRWC  = AccessRW | (P.ZICBOM_SUPPORTED & (|CMOp[2:0])); | ||||
|   assign AccessRWXZ = ReadAccessM | WriteAccessM | ExecuteAccessF | (P.ZICBOM_SUPPORTED & (|CMOp[2:0])) | (P.ZICBOZ_SUPPORTED & (CMOp[3])); | ||||
|   assign AccessRX  = ReadAccessM | ExecuteAccessF; | ||||
|   assign AccessRXZ  = AccessRX | (P.ZICBOM_SUPPORTED & (|CMOp[2:0])); | ||||
|   assign AccessRXC  = AccessRX | (P.ZICBOM_SUPPORTED & (|CMOp[2:0])); | ||||
| 
 | ||||
|   // Determine which region of physical memory (if any) is being accessed
 | ||||
|   adrdecs #(P) adrdecs(PhysicalAddress, AccessRW, AccessRX, AccessRWXZ, AccessRWZ, AccessRXZ, Size, SelRegions); | ||||
|   adrdecs #(P) adrdecs(PhysicalAddress, AccessRW, AccessRX, AccessRWXZ, AccessRWC, AccessRXC, Size, SelRegions); | ||||
| 
 | ||||
|   // Only non-core RAM/ROM memory regions are cacheable. PBMT can override cachable; NC and IO are uncachable
 | ||||
|   assign CacheableRegion = SelRegions[9] | SelRegions[8] | SelRegions[7];  // exclusion-tag: unused-cachable
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user