summaryrefslogtreecommitdiff
path: root/hdl/utils.py
blob: 6aad95fe2d49090c6c42948c78839bd7f873cfdb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
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)