import sys from typing import Callable from amaranth import Elaboratable from amaranth.back import verilog, cxxrtl def cmd(hdl, tb:Callable): if len(sys.argv) <= 1: exit() if sys.argv[1] == "sim": tb(sys.argv[0].replace('.py', '.vcd')) exit() if sys.argv[1] == "v": out = verilog.convert(hdl, ports=hdl.ports) with open(sys.argv[0].replace('.py', '.v'), 'w') as f: f.write(out) elif sys.argv[1] == "cc": out = cxxrtl.convert(hdl, ports=hdl.ports) with open(sys.argv[0].replace('.py', '.cc'), 'w') as f: f.write(out)