mirror of
https://github.com/myhdl/myhdl.git
synced 2025-01-24 21:52:56 +08:00
60 lines
1.1 KiB
Python
60 lines
1.1 KiB
Python
from myhdl import *
|
|
|
|
def dffa(q, d, clk, rst):
|
|
|
|
@always(clk.posedge, rst.negedge)
|
|
def logic():
|
|
if rst == 0:
|
|
q.next = 0
|
|
else:
|
|
q.next = d
|
|
|
|
return logic
|
|
|
|
|
|
from random import randrange
|
|
|
|
def test_dffa():
|
|
|
|
q, d, clk, rst = [Signal(bool(0)) for i in range(4)]
|
|
|
|
dffa_inst = dffa(q, d, clk, rst)
|
|
|
|
@always(delay(10))
|
|
def clkgen():
|
|
clk.next = not clk
|
|
|
|
@always(clk.negedge)
|
|
def stimulus():
|
|
d.next = randrange(2)
|
|
|
|
@instance
|
|
def rstgen():
|
|
yield delay(5)
|
|
rst.next = 1
|
|
while True:
|
|
yield delay(randrange(500, 1000))
|
|
rst.next = 0
|
|
yield delay(randrange(80, 140))
|
|
rst.next = 1
|
|
|
|
return dffa_inst, clkgen, stimulus, rstgen
|
|
|
|
def simulate(timesteps):
|
|
tb = traceSignals(test_dffa)
|
|
sim = Simulation(tb)
|
|
sim.run(timesteps)
|
|
|
|
simulate(20000)
|
|
|
|
def convert():
|
|
q, d, clk, rst = [Signal(bool(0)) for i in range(4)]
|
|
toVerilog(dffa, q, d, clk, rst)
|
|
conversion.analyze(dffa, q, d, clk, rst)
|
|
|
|
convert()
|
|
|
|
|
|
|
|
|