summaryrefslogtreecommitdiff
path: root/tb
diff options
context:
space:
mode:
Diffstat (limited to 'tb')
-rw-r--r--tb/soc/irq/tb_pimc.cpp35
1 files changed, 35 insertions, 0 deletions
diff --git a/tb/soc/irq/tb_pimc.cpp b/tb/soc/irq/tb_pimc.cpp
new file mode 100644
index 0000000..8dd0186
--- /dev/null
+++ b/tb/soc/irq/tb_pimc.cpp
@@ -0,0 +1,35 @@
+#include <stdlib.h>
+#include <iostream>
+#include <verilated.h>
+#include <verilated_vcd_c.h>
+#include "Vpimc.h"
+#include "Vpimc___024root.h"
+
+#define MAX_SIM_ITER 100
+
+int main(int argc, char** argv, char** env) {
+ Vpimc *pimc = new Vpimc;
+
+ Verilated::traceEverOn(true);
+ VerilatedVcdC *m_trace = new VerilatedVcdC;
+ pimc->trace(m_trace, 5);
+ m_trace->open("waveform.vcd");
+
+ pimc->notify = 1;
+ pimc->irq_in = 0b00000010; /* Pulse IRQ line high */
+
+ for (int i = 0; i < MAX_SIM_ITER; ++i) {
+ if (i == 5) {
+ pimc->irq_in = 0b00000000;
+ }
+
+ pimc->clk ^= 1;
+ pimc->eval();
+ m_trace->dump(i);
+ }
+
+ m_trace->close();
+ delete pimc;
+ exit(EXIT_SUCCESS);
+}
+