diff options
author | jjsuperpower <jjs29356@gmail.com> | 2022-09-06 21:04:02 -0500 |
---|---|---|
committer | jjsuperpower <jjs29356@gmail.com> | 2022-09-06 21:04:02 -0500 |
commit | 6dd3e93f876fa9f8c8bcf5ca96a4e03df9848aeb (patch) | |
tree | 35dc2451bc8d1832f36ee754ed3203512cf93340 /hdl | |
parent | 62123027d85942dfb20cbbee9424ee917f111f01 (diff) |
updated template
Diffstat (limited to 'hdl')
-rw-r--r-- | hdl/template.py.txt | 49 |
1 files changed, 29 insertions, 20 deletions
diff --git a/hdl/template.py.txt b/hdl/template.py.txt index 64f0655..cc6bdac 100644 --- a/hdl/template.py.txt +++ b/hdl/template.py.txt @@ -1,36 +1,45 @@ from amaranth import * from amaranth.sim import Simulator, Settle, Delay +from enum import Enum, unique -from utils import cmd +from hdl.utils import cmd, step, sim +from hdl.lib.in_out_buff import InOutBuff # used for timing analysis -class Template(Elaboratable): - def __init__(self): - ... - self.ports = [...] +class HDL(Elaboratable): + def __init__(self, **kargs): + ... - def elaborate(self, platform): - m = Module() + ports_in = [] + ports_out = [] + self.ports = {'in': ports_in, 'out': ports_out} - ... + self.sim = kargs["sim"] if "sim" in kargs else False - return m + def elaborate(self, platform=None): + m = Module() -def test(filename="out.vcd"): - dut = ... + # dummy sync for simulation only needed if there is no other sequential logic + if self.sim == True: + dummy = Signal() + m.d.sync += dummy.eq(~dummy) - def proc1(): ... + + return m - sim = Simulator(dut) - sim.add_clock(1e-6) - sim.add_sync_process(proc1) - - with sim.write_vcd(filename): - sim.run() +# test addition +def test_hdl(): + dut = HDL(sim=True) + def proc(): + yield from step #step clock + yield Settle() #needed if for combinatorial logic + yield dut.something #read value + sim(dut, proc) + if __name__ == '__main__': - shift_reg = Template(...) - cmd(shift_reg, test)
\ No newline at end of file + hdl = InOutBuff(HDL()) + cmd(hdl) |