The decorators that appear in MyHDL have been organized from Reference.
instance() The most common decorator. Create a generator automatically.
def ClkDriver(clk, period=20):
lowTime = int(period/2)
highTime = period - lowTime
@instance
def driveClk():
while True:
yield delay(lowTime)
clk.next = 1
yield delay(highTime)
clk.next = 0
return driveClk
always() A decorator used in a fixed pattern. An example of a circuit that operates at the rising edge of a clock
@always(clk.posedge)
def write():
if we:
mem[addr].next = din
always_comb() A decorator that describes a combinational circuit.
@always_comb
def read():
dout.next = mem[addr]
always_seq() A decorator that describes a sequential circuit.
def Inc(count, enable, clock, reset):
@always_seq(clock.posedge, reset=reset)
def incLogic():
if enable:
count.next = count + 1
return incLogic