public void VGASyncModule_VSyncTest() { var sim = new RTLInstanceSimulator <VGASyncModule, VGASyncModuleInputs>(new VGASyncModule(480, 10, 2, 33)); sim.TraceToVCD(VCDOutputPath()); var tl = sim.TopLevel; Action assertSingleFlag = () => { var flags = new[] { tl.OutVisible, tl.OutFP, tl.OutSP, tl.OutBP }; var set = flags.Where(f => f); Assert.IsTrue(set.Count() == 1, "Multiple flags are set"); }; for (var i = 0; i <= 525; i++) { assertSingleFlag(); sim.ClockCycle(new VGASyncModuleInputs() { Enabled = true }); } assertSingleFlag(); }
public void BoardTimerModuleTest() { var container = new QuokkaContainer(); var runtimeConfig = container.Resolve <RuntimeConfiguration>(); uint testClock = 10; runtimeConfig.Initialize(new QuokkaConfig() { Configurations = new List <BoardConfigAttribute>() { new BoardConfigAttribute() { Name = "Test", ClockFrequency = testClock } } }); var moduleInstance = container.Resolve <BoardTimerModule>(); var sim = new RTLInstanceSimulator <BoardTimerModule, BoardTimerModuleInputs>(moduleInstance, true); sim.TraceToVCD(VCDOutputPath()); var topLevel = sim.TopLevel; for (var i = 1; i <= testClock * 10; i++) { Assert.AreEqual(i % testClock == 0, topLevel.OutActive10); Assert.AreEqual(i % (testClock * 2) == 0, topLevel.OutActive20); sim.ClockCycle(new BoardTimerModuleInputs()); } var tb = sim.TBAdapter(RTLVerilogConfig); tb.PostSynthTimingSimulation(); }