// See LICENSE.SiFive for license details. // See LICENSE.Berkeley for license details. package freechips.rocketchip.system import Chisel._ import freechips.rocketchip.config.Config import freechips.rocketchip.coreplex._ import freechips.rocketchip.devices.debug._ import freechips.rocketchip.devices.tilelink._ import freechips.rocketchip.diplomacy._ class BaseConfig extends Config(new BaseCoreplexConfig().alter((site,here,up) => { // DTS descriptive parameters case DTSModel => "freechips,rocketchip-unknown" case DTSCompat => Nil case DTSTimebase => BigInt(1000000) // 1 MHz case RTCPeriod => Some(1000) // Implies coreplex clock is DTSTimebase * RTCPeriod = 1 GHz // External port parameters case IncludeJtagDTM => false case JtagDTMKey => new JtagDTMKeyDefault() case NExtTopInterrupts => 2 case ExtMem => MasterPortParams( base = 0x80000000L, size = 0x10000000L, beatBytes = site(MemoryBusParams).beatBytes, idBits = 4) case ExtBus => MasterPortParams( base = 0x60000000L, size = 0x20000000L, beatBytes = site(MemoryBusParams).beatBytes, idBits = 4) case ExtIn => SlavePortParams(beatBytes = 8, idBits = 8, sourceBits = 4) // Additional device Parameters case ErrorParams => ErrorParams(Seq(AddressSet(0x3000, 0xfff))) case BootROMParams => BootROMParams(contentFileName = "./bootrom/bootrom.img") })) class DefaultConfig extends Config(new WithNBigCores(1) ++ new BaseConfig) class DefaultBufferlessConfig extends Config( new WithBufferlessBroadcastHub ++ new WithNBigCores(1) ++ new BaseConfig) class DefaultSmallConfig extends Config(new WithNSmallCores(1) ++ new BaseConfig) class DefaultRV32Config extends Config(new WithRV32 ++ new DefaultConfig) class DualBankConfig extends Config( new WithNBanksPerMemChannel(2) ++ new BaseConfig) class DualChannelConfig extends Config(new WithNMemoryChannels(2) ++ new BaseConfig) class DualChannelDualBankConfig extends Config( new WithNMemoryChannels(2) ++ new WithNBanksPerMemChannel(2) ++ new BaseConfig) class RoccExampleConfig extends Config(new WithRoccExample ++ new DefaultConfig) class Edge128BitConfig extends Config( new WithEdgeDataBits(128) ++ new BaseConfig) class Edge32BitConfig extends Config( new WithEdgeDataBits(32) ++ new BaseConfig) class SingleChannelBenchmarkConfig extends Config(new DefaultConfig) class DualChannelBenchmarkConfig extends Config(new WithNMemoryChannels(2) ++ new SingleChannelBenchmarkConfig) class QuadChannelBenchmarkConfig extends Config(new WithNMemoryChannels(4) ++ new SingleChannelBenchmarkConfig) class OctoChannelBenchmarkConfig extends Config(new WithNMemoryChannels(8) ++ new SingleChannelBenchmarkConfig) class EightChannelConfig extends Config(new WithNMemoryChannels(8) ++ new BaseConfig) class DualCoreConfig extends Config( new WithNBigCores(2) ++ new BaseConfig) class HeterogeneousDualCoreConfig extends Config( new WithNSmallCores(1) ++ new WithNBigCores(1) ++ new BaseConfig) class TinyConfig extends Config( new WithNMemoryChannels(0) ++ new WithStatelessBridge ++ new WithNTinyCores(1) ++ new BaseConfig) class DefaultFPGAConfig extends Config(new BaseConfig) class DefaultFPGASmallConfig extends Config(new WithNSmallCores(1) ++ new DefaultFPGAConfig)