Merge pull request #31 from ss2783/fix-mockaon
authorShreesha Srinath <ss2783@cornell.edu>
Fri, 4 Aug 2017 18:46:06 +0000 (11:46 -0700)
committerGitHub <noreply@github.com>
Fri, 4 Aug 2017 18:46:06 +0000 (11:46 -0700)
mockaon: Adds logic to detect external rtc toggles

src/main/scala/devices/mockaon/MockAONPeriphery.scala

index 8b6303e2ffb32f03abe1e8cecfe88aef2548216c..3f0d3268b3485c7c0deb80e9ac9869b9f14ddb9b 100644 (file)
@@ -42,7 +42,12 @@ trait HasPeripheryMockAONModuleImp extends LazyMultiIOModuleImp with HasPeripher
   outer.aon.module.clock := Bool(false).asClock
   outer.aon.module.reset := Bool(true)
 
-  outer.clint.module.io.rtcTick := outer.aon.module.io.rtc.asUInt.toBool
+  // Synchronize the external toggle into the clint
+  val rtc_sync = ShiftRegister(outer.aon.module.io.rtc.asUInt.toBool, 3)
+  val rtc_last = Reg(init = Bool(false), next=rtc_sync)
+  val rtc_tick = Reg(init = Bool(false), next=(rtc_sync & (~rtc_last)))
+
+  outer.clint.module.io.rtcTick := rtc_tick
 
   outer.aon.module.io.ndreset := outer.debug.module.io.ctrl.ndreset
 }