Skip to content

Commit 7cabe35

Browse files
committed
examples: convert to async simulator syntax.
1 parent d189510 commit 7cabe35

File tree

2 files changed

+40
-41
lines changed

2 files changed

+40
-41
lines changed

examples/basic/ctr_en.py

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -22,13 +22,13 @@ def elaborate(self, platform):
2222

2323
sim = Simulator(ctr)
2424
sim.add_clock(1e-6)
25-
def ce_proc():
26-
yield Tick(); yield Tick(); yield Tick()
27-
yield ctr.en.eq(1)
28-
yield Tick(); yield Tick(); yield Tick()
29-
yield ctr.en.eq(0)
30-
yield Tick(); yield Tick(); yield Tick()
31-
yield ctr.en.eq(1)
32-
sim.add_testbench(ce_proc)
25+
async def testbench_ce(ctx):
26+
await ctx.tick().repeat(3)
27+
ctx.set(ctr.en, 1)
28+
await ctx.tick().repeat(3)
29+
ctx.set(ctr.en, 0)
30+
await ctx.tick().repeat(3)
31+
ctx.set(ctr.en,1)
32+
sim.add_testbench(testbench_ce)
3333
with sim.write_vcd("ctrl.vcd", "ctrl.gtkw", traces=[ctr.en, ctr.v, ctr.o]):
34-
sim.run_until(100e-6, run_passive=True)
34+
sim.run_until(100e-6)

examples/basic/uart.py

Lines changed: 31 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -110,38 +110,37 @@ def elaborate(self, platform):
110110
sim = Simulator(uart)
111111
sim.add_clock(1e-6)
112112

113-
def loopback_proc():
114-
yield Passive()
115-
while True:
116-
yield uart.rx_i.eq((yield uart.tx_o))
117-
yield
118-
sim.add_sync_process(loopback_proc)
119-
120-
def transmit_proc():
121-
assert (yield uart.tx_ack)
122-
assert not (yield uart.rx_rdy)
123-
124-
yield uart.tx_data.eq(0x5A)
125-
yield uart.tx_rdy.eq(1)
126-
yield
127-
yield uart.tx_rdy.eq(0)
128-
yield
129-
assert not (yield uart.tx_ack)
130-
131-
for _ in range(uart.divisor * 12): yield
132-
133-
assert (yield uart.tx_ack)
134-
assert (yield uart.rx_rdy)
135-
assert not (yield uart.rx_err)
136-
assert (yield uart.rx_data) == 0x5A
137-
138-
yield uart.rx_ack.eq(1)
139-
yield
140-
yield uart.rx_ack.eq(0)
141-
yield
142-
assert not (yield uart.rx_rdy)
143-
144-
sim.add_sync_process(transmit_proc)
113+
async def testbench_loopback(ctx):
114+
async for val in ctx.changed(uart.tx_o):
115+
ctx.set(uart.rx_i, val)
116+
117+
sim.add_testbench(testbench_loopback, background=True)
118+
119+
async def testbench_transmit(ctx):
120+
assert ctx.get(uart.tx_ack)
121+
assert not ctx.get(uart.rx_rdy)
122+
123+
ctx.set(uart.tx_data, 0x5A)
124+
ctx.set(uart.tx_rdy, 1)
125+
await ctx.tick()
126+
ctx.set(uart.tx_rdy, 0)
127+
await ctx.tick()
128+
assert not ctx.get(uart.tx_ack)
129+
130+
await ctx.tick().repeat(uart.divisor * 12)
131+
132+
assert ctx.get(uart.tx_ack)
133+
assert ctx.get(uart.rx_rdy)
134+
assert not ctx.get(uart.rx_err)
135+
assert ctx.get(uart.rx_data) == 0x5A
136+
137+
ctx.set(uart.rx_ack, 1)
138+
await ctx.tick()
139+
ctx.set(uart.rx_ack, 0)
140+
await ctx.tick()
141+
assert not ctx.get(uart.rx_rdy)
142+
143+
sim.add_testbench(testbench_transmit)
145144

146145
with sim.write_vcd("uart.vcd", "uart.gtkw"):
147146
sim.run()

0 commit comments

Comments
 (0)