rocketchip: break infinite Config loops
This commit is contained in:
		@@ -122,19 +122,19 @@ class WithNCores(n: Int) extends Config(
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithNBanksPerMemChannel(n: Int) extends Config(
 | 
					class WithNBanksPerMemChannel(n: Int) extends Config(
 | 
				
			||||||
  (pname, site, here) => pname match {
 | 
					  (pname, site, here, up) => pname match {
 | 
				
			||||||
    case BankedL2Config => site(BankedL2Config).copy(nBanksPerChannel = n)
 | 
					    case BankedL2Config => up(BankedL2Config).copy(nBanksPerChannel = n)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithNTrackersPerBank(n: Int) extends Config(
 | 
					class WithNTrackersPerBank(n: Int) extends Config(
 | 
				
			||||||
  (pname, site, here) => pname match {
 | 
					  (pname, site, here, up) => pname match {
 | 
				
			||||||
    case BroadcastConfig => site(BroadcastConfig).copy(nTrackers = n)
 | 
					    case BroadcastConfig => up(BroadcastConfig).copy(nTrackers = n)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithDataScratchpad(n: Int) extends Config(
 | 
					class WithDataScratchpad(n: Int) extends Config(
 | 
				
			||||||
  (pname,site,here) => pname match {
 | 
					  (pname,site,here,up) => pname match {
 | 
				
			||||||
    case DataScratchpadSize => n
 | 
					    case DataScratchpadSize => n
 | 
				
			||||||
    case CacheName("L1D") => site(CacheName("L1D")).copy(nSets = n / site(CacheBlockBytes))
 | 
					    case CacheName("L1D") => up(CacheName("L1D")).copy(nSets = n / site(CacheBlockBytes))
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -152,8 +152,8 @@ class WithL2Cache extends Config(
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithBufferlessBroadcastHub extends Config(
 | 
					class WithBufferlessBroadcastHub extends Config(
 | 
				
			||||||
  (pname, site, here) => pname match {
 | 
					  (pname, site, here, up) => pname match {
 | 
				
			||||||
    case BroadcastConfig => site(BroadcastConfig).copy(bufferless = true)
 | 
					    case BroadcastConfig => up(BroadcastConfig).copy(bufferless = true)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
/**
 | 
					/**
 | 
				
			||||||
@@ -169,12 +169,12 @@ class WithBufferlessBroadcastHub extends Config(
 | 
				
			|||||||
 * DO NOT use this configuration.
 | 
					 * DO NOT use this configuration.
 | 
				
			||||||
 */
 | 
					 */
 | 
				
			||||||
class WithStatelessBridge extends Config(
 | 
					class WithStatelessBridge extends Config(
 | 
				
			||||||
  (pname,site,here) => pname match {
 | 
					  (pname,site,here,up) => pname match {
 | 
				
			||||||
    case BankedL2Config => site(BankedL2Config).copy(coherenceManager = { case (_, _) =>
 | 
					    case BankedL2Config => up(BankedL2Config).copy(coherenceManager = { case (_, _) =>
 | 
				
			||||||
      val pass = LazyModule(new TLBuffer(0))
 | 
					      val pass = LazyModule(new TLBuffer(0))
 | 
				
			||||||
      (pass.node, pass.node)
 | 
					      (pass.node, pass.node)
 | 
				
			||||||
    })
 | 
					    })
 | 
				
			||||||
    case DCacheKey => site(DCacheKey).copy(nMSHRs = 0)
 | 
					    case DCacheKey => up(DCacheKey).copy(nMSHRs = 0)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -189,8 +189,8 @@ class WithL2Capacity(size_kb: Int) extends Config(
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithNL2Ways(n: Int) extends Config(
 | 
					class WithNL2Ways(n: Int) extends Config(
 | 
				
			||||||
  (pname,site,here) => pname match {
 | 
					  (pname,site,here,up) => pname match {
 | 
				
			||||||
    case CacheName("L2") => site(CacheName("L2")).copy(nWays = n)
 | 
					    case CacheName("L2") => up(CacheName("L2")).copy(nWays = n)
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithRV32 extends Config(
 | 
					class WithRV32 extends Config(
 | 
				
			||||||
@@ -201,21 +201,21 @@ class WithRV32 extends Config(
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithBlockingL1 extends Config(
 | 
					class WithBlockingL1 extends Config(
 | 
				
			||||||
  (pname,site,here) => pname match {
 | 
					  (pname,site,here,up) => pname match {
 | 
				
			||||||
    case DCacheKey => site(DCacheKey).copy(nMSHRs = 0)
 | 
					    case DCacheKey => up(DCacheKey).copy(nMSHRs = 0)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithSmallCores extends Config(
 | 
					class WithSmallCores extends Config(
 | 
				
			||||||
  (pname,site,here) => pname match {
 | 
					  (pname,site,here,up) => pname match {
 | 
				
			||||||
    case MulDivKey => Some(MulDivConfig())
 | 
					    case MulDivKey => Some(MulDivConfig())
 | 
				
			||||||
    case FPUKey => None
 | 
					    case FPUKey => None
 | 
				
			||||||
    case UseVM => false
 | 
					    case UseVM => false
 | 
				
			||||||
    case BtbKey => BtbParameters(nEntries = 0)
 | 
					    case BtbKey => BtbParameters(nEntries = 0)
 | 
				
			||||||
    case NAcquireTransactors => 2
 | 
					    case NAcquireTransactors => 2
 | 
				
			||||||
    case CacheName("L1D") => site(CacheName("L1D")).copy(nSets = 64, nWays = 1, nTLBEntries = 4)
 | 
					    case CacheName("L1D") => up(CacheName("L1D")).copy(nSets = 64, nWays = 1, nTLBEntries = 4)
 | 
				
			||||||
    case CacheName("L1I") => site(CacheName("L1I")).copy(nSets = 64, nWays = 1, nTLBEntries = 4)
 | 
					    case CacheName("L1I") => up(CacheName("L1I")).copy(nSets = 64, nWays = 1, nTLBEntries = 4)
 | 
				
			||||||
    case DCacheKey => site(DCacheKey).copy(nMSHRs = 0)
 | 
					    case DCacheKey => up(DCacheKey).copy(nMSHRs = 0)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -121,8 +121,8 @@ class WithAtomics extends Config(
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithPrefetches extends Config(
 | 
					class WithPrefetches extends Config(
 | 
				
			||||||
  (pname, site, here) => pname match {
 | 
					  (pname, site, here, up) => pname match {
 | 
				
			||||||
    case ComparatorKey => site(ComparatorKey).copy(prefetches = true)
 | 
					    case ComparatorKey => up(ComparatorKey).copy(prefetches = true)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -182,7 +182,7 @@ class WithCacheRegressionTest extends Config(
 | 
				
			|||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithTraceGen extends Config(
 | 
					class WithTraceGen extends Config(
 | 
				
			||||||
  (pname, site, here) => pname match {
 | 
					  (pname, site, here, up) => pname match {
 | 
				
			||||||
    case GroundTestKey => Seq.fill(site(NTiles)) {
 | 
					    case GroundTestKey => Seq.fill(site(NTiles)) {
 | 
				
			||||||
      GroundTestTileSettings(uncached = 1, cached = 1)
 | 
					      GroundTestTileSettings(uncached = 1, cached = 1)
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
@@ -201,6 +201,6 @@ class WithTraceGen extends Config(
 | 
				
			|||||||
      }.flatten
 | 
					      }.flatten
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    case UseAtomics => true
 | 
					    case UseAtomics => true
 | 
				
			||||||
    case CacheName("L1D") => site(CacheName("L1D")).copy(nSets = 16, nWays = 1)
 | 
					    case CacheName("L1D") => up(CacheName("L1D")).copy(nSets = 16, nWays = 1)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -55,15 +55,15 @@ class DefaultL2FPGAConfig extends Config(
 | 
				
			|||||||
class PLRUL2Config extends Config(new WithPLRU ++ new DefaultL2Config)
 | 
					class PLRUL2Config extends Config(new WithPLRU ++ new DefaultL2Config)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithNMemoryChannels(n: Int) extends Config(
 | 
					class WithNMemoryChannels(n: Int) extends Config(
 | 
				
			||||||
  (pname,site,here) => pname match {
 | 
					  (pname,site,here,up) => pname match {
 | 
				
			||||||
    case BankedL2Config => site(BankedL2Config).copy(nMemoryChannels = n)
 | 
					    case BankedL2Config => up(BankedL2Config).copy(nMemoryChannels = n)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithExtMemSize(n: Long) extends Config(
 | 
					class WithExtMemSize(n: Long) extends Config(
 | 
				
			||||||
  (pname,site,here) => pname match {
 | 
					  (pname,site,here,up) => pname match {
 | 
				
			||||||
    case ExtMem => site(ExtMem).copy(size = n)
 | 
					    case ExtMem => up(ExtMem).copy(size = n)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  }
 | 
					  }
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -93,8 +93,8 @@ class DualChannelDualBankL2Config extends Config(
 | 
				
			|||||||
class RoccExampleConfig extends Config(new WithRoccExample ++ new BaseConfig)
 | 
					class RoccExampleConfig extends Config(new WithRoccExample ++ new BaseConfig)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
class WithEdgeDataBits(dataBits: Int) extends Config(
 | 
					class WithEdgeDataBits(dataBits: Int) extends Config(
 | 
				
			||||||
  (pname, site, here) => pname match {
 | 
					  (pname, site, here, up) => pname match {
 | 
				
			||||||
    case ExtMem => site(ExtMem).copy(beatBytes = dataBits/8)
 | 
					    case ExtMem => up(ExtMem).copy(beatBytes = dataBits/8)
 | 
				
			||||||
    case _ => throw new CDEMatchError
 | 
					    case _ => throw new CDEMatchError
 | 
				
			||||||
  })
 | 
					  })
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user