summaryrefslogtreecommitdiff
path: root/deprecated/hdl_lab/template.py
diff options
context:
space:
mode:
Diffstat (limited to 'deprecated/hdl_lab/template.py')
-rw-r--r--deprecated/hdl_lab/template.py69
1 files changed, 69 insertions, 0 deletions
diff --git a/deprecated/hdl_lab/template.py b/deprecated/hdl_lab/template.py
new file mode 100644
index 0000000..77eb18c
--- /dev/null
+++ b/deprecated/hdl_lab/template.py
@@ -0,0 +1,69 @@
+from typing import Callable
+from myhdl import *
+from myhdl_wrap import Myhdl_Wrapper
+
+import random
+from random import randint
+
+random.seed(63)
+
+class Template(Myhdl_Wrapper):
+ def __init__(self):
+ super().__init__()
+
+ # Main code, this is the actual logic
+ @staticmethod
+ @block
+ def Template(args): # this must be the same name as the class name
+
+ @instance
+ def logic():
+ while True:
+ ...
+
+ return logic
+
+
+ @block
+ def tb(self, func: Callable):
+ reset = Signal(False)
+ clk = Signal(False)
+ ...
+
+ dut = func(..., clk=clk, reset=reset)
+
+ @always(delay(...))
+ def clock_gen():
+ clk.next = not clk
+
+ @instance
+ def monitor():
+ while True:
+ ...
+
+ @instance
+ def stimulus():
+ ...
+
+ raise StopSimulation
+
+
+ return dut, clock_gen, monitor, stimulus
+
+ def export(self):
+ reset = Signal(False)
+ clk = Signal(False)
+ ...
+
+ # assigning signals, kargs only
+ self._export(..., clk=clk, reset=reset)
+
+
+def test_template_sim():
+ hdl = Template()
+ hdl.sim()
+
+def test_template_cosim():
+ hdl = Template()
+ hdl.export()
+ hdl.cosim()