diff --git a/src/main/scala/Configs.scala b/src/main/scala/Configs.scala index 35991066..4332ac15 100644 --- a/src/main/scala/Configs.scala +++ b/src/main/scala/Configs.scala @@ -228,7 +228,8 @@ class DefaultConfig extends Config ( case BankIdLSB => 0 case CacheBlockBytes => Dump("CACHE_BLOCK_BYTES", 64) case CacheBlockOffsetBits => log2Up(here(CacheBlockBytes)) - case UseBackupMemoryPort => true + case UseBackupMemoryPort => false + case UseHtifClockDiv => true case MMIOBase => Dump("MEM_SIZE", BigInt(1L << 30)) // 1 GB case DeviceTree => makeDeviceTree() case GlobalAddrMap => { @@ -356,7 +357,7 @@ class ZscaleConfig extends Config(new WithZscale ++ new DefaultConfig) class FPGAConfig extends Config ( (pname,site,here) => pname match { case NAcquireTransactors => 4 - case UseBackupMemoryPort => false + case UseHtifClockDiv => false } ) diff --git a/src/main/scala/RocketChip.scala b/src/main/scala/RocketChip.scala index f823d935..e45189aa 100644 --- a/src/main/scala/RocketChip.scala +++ b/src/main/scala/RocketChip.scala @@ -27,6 +27,8 @@ case object BankIdLSB extends Field[Int] case object NOutstandingMemReqsPerChannel extends Field[Int] /** Whether to use the slow backup memory port [VLSI] */ case object UseBackupMemoryPort extends Field[Boolean] +/** Whether to divide HTIF clock */ +case object UseHtifClockDiv extends Field[Boolean] /** Function for building some kind of coherence manager agent */ case object BuildL2CoherenceManager extends Field[(Int, Parameters) => CoherenceAgent] /** Function for building some kind of tile connected to a reset signal */ @@ -120,6 +122,7 @@ class Top(topParams: Parameters) extends Module with HasTopLevelParameters { uncore.io.tiles_uncached <> tileList.map(_.io.uncached).flatten io.host <> uncore.io.host if (p(UseBackupMemoryPort)) { io.mem_backup_ctrl <> uncore.io.mem_backup_ctrl } + else { uncore.io.mem_backup_ctrl.en := Bool(false) } io.mem.zip(uncore.io.mem).foreach { case (outer, inner) => TopUtils.connectNasti(outer, inner) @@ -189,7 +192,7 @@ class Uncore(implicit val p: Parameters) extends Module // Wire the htif to the memory port(s) and host interface io.host.debug_stats_csr := htif.io.host.debug_stats_csr io.mem <> outmemsys.io.mem - if(p(UseBackupMemoryPort)) { + if(p(UseHtifClockDiv)) { outmemsys.io.mem_backup_en := io.mem_backup_ctrl.en VLSIUtils.padOutHTIFWithDividedClock(htif.io.host, scrFile.io.scr, outmemsys.io.mem_backup, io.mem_backup_ctrl, io.host, htifW) @@ -344,5 +347,8 @@ class OuterMemorySystem(implicit val p: Parameters) extends Module with HasTopLe "Backup memory port only works when 1 memory channel is enabled") require(channelConfigs.sortWith(_ < _)(0) == 1, "Backup memory port requires a single memory port mux config") - } else { io.mem <> mem_channels } + } else { + io.mem <> mem_channels + io.mem_backup.req.valid := Bool(false) + } }