Esempio n. 1
0
        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();
        }