Les décorateurs qui apparaissent dans MyHDL ont été organisés à partir de Reference.
instance() Le décorateur le plus courant. Créez un générateur automatiquement.
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() Un décorateur utilisé dans un motif fixe. Exemple de circuit fonctionnant sur le front montant de l'horloge
@always(clk.posedge)
def write():
if we:
mem[addr].next = din
always_comb() Un décorateur qui décrit un circuit combiné.
@always_comb
def read():
dout.next = mem[addr]
always_seq() Un décorateur qui décrit un circuit séquentiel.
def Inc(count, enable, clock, reset):
@always_seq(clock.posedge, reset=reset)
def incLogic():
if enable:
count.next = count + 1
return incLogic