hdl.ir: detect elaboratables that are created but not used.

Requres every elaboratable to inherit from Elaboratable, but still
accepts ones that do not, with a warning.

Fixes #3.
This commit is contained in:
whitequark 2019-04-21 08:52:57 +00:00
parent 85ae99c1b4
commit 44711b7d08
22 changed files with 79 additions and 45 deletions

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main
class ALU:
class ALU(Elaboratable):
def __init__(self, width):
self.sel = Signal(2)
self.a = Signal(width)

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main
class Adder:
class Adder(Elaboratable):
def __init__(self, width):
self.a = Signal(width)
self.b = Signal(width)
@ -14,7 +14,7 @@ class Adder:
return m
class Subtractor:
class Subtractor(Elaboratable):
def __init__(self, width):
self.a = Signal(width)
self.b = Signal(width)
@ -26,7 +26,7 @@ class Subtractor:
return m
class ALU:
class ALU(Elaboratable):
def __init__(self, width):
self.op = Signal()
self.a = Signal(width)

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main
class ClockDivisor:
class ClockDivisor(Elaboratable):
def __init__(self, factor):
self.v = Signal(factor)
self.o = Signal()

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main, pysim
class Counter:
class Counter(Elaboratable):
def __init__(self, width):
self.v = Signal(width, reset=2**width-1)
self.o = Signal()

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.back import rtlil, verilog, pysim
class Counter:
class Counter(Elaboratable):
def __init__(self, width):
self.v = Signal(width, reset=2**width-1)
self.o = Signal()

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main
class UARTReceiver:
class UARTReceiver(Elaboratable):
def __init__(self, divisor):
self.divisor = divisor

View file

@ -3,7 +3,7 @@ from nmigen import *
from nmigen.cli import main
class GPIO:
class GPIO(Elaboratable):
def __init__(self, pins, bus):
self.pins = pins
self.bus = bus

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main
class System:
class System(Elaboratable):
def __init__(self):
self.adr = Signal(16)
self.dat_r = Signal(8)

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main
class RegisterFile:
class RegisterFile(Elaboratable):
def __init__(self):
self.adr = Signal(4)
self.dat_r = Signal(8)

View file

@ -2,7 +2,7 @@ from nmigen import *
from nmigen.cli import main
class ParMux:
class ParMux(Elaboratable):
def __init__(self, width):
self.s = Signal(3)
self.a = Signal(width)