Skip to content

Instantly share code, notes, and snippets.

@srivatsan-ramesh
Created May 27, 2016 09:31
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save srivatsan-ramesh/7766cf8f70b9a2b5b3c58cb348c4f6ca to your computer and use it in GitHub Desktop.
Save srivatsan-ramesh/7766cf8f70b9a2b5b3c58cb348c4f6ca to your computer and use it in GitHub Desktop.
from myhdl import Signal, block, always, delay
class Test:
def __init__(self, clock, sig=Signal(bool(0))):
self.clock = clock
self.sig = sig
@block
def process(self, i):
@always(self.clock.posedge)
def test():
if i == 0:
self.sig.next = self.sig
else:
self.sig.next = not self.sig
return test
@block
def clock_driver(clock, d=1):
half_period = delay(d)
@always(half_period)
def drive_clock():
clock.next = not clock
return drive_clock
@block
def test_bench():
clock = Signal(bool(0))
clk_drive = clock_driver(clock)
a = Test(clock)
ap = a.process(0)
ap.name = 'a'
b = Test(clock)
bp = b.process(1)
bp.name = 'b'
return clk_drive, bp, ap
t = test_bench()
t.config_sim(trace=True)
t.run_sim(100)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment