tb: uart_rx: Export putchar

This function is useful for other testbenches. Export it.

Signed-off-by: Sean Anderson <seanga2@gmail.com>
This commit is contained in:
Sean Anderson 2023-03-04 14:29:31 -05:00
parent d89fd13238
commit 587a567188
1 changed files with 8 additions and 8 deletions

View File

@ -17,6 +17,11 @@ def as_bits(c):
yield c & 1 yield c & 1
c >>= 1 c >>= 1
async def putchar(rx, c):
for bit in (0, *as_bits(c), 1):
rx.value = bit
await Timer(BIT_STEPS)
@cocotb.test(timeout_time=1, timeout_unit='ms') @cocotb.test(timeout_time=1, timeout_unit='ms')
async def test_rx(uart): async def test_rx(uart):
uart.clk.value = BinaryValue('Z') uart.clk.value = BinaryValue('Z')
@ -30,11 +35,6 @@ async def test_rx(uart):
await cocotb.start(Clock(uart.clk, 8, units='ns').start()) await cocotb.start(Clock(uart.clk, 8, units='ns').start())
await FallingEdge(uart.clk) await FallingEdge(uart.clk)
async def putchar(c):
for bit in (0, *as_bits(c), 1):
uart.rx.value = bit
await Timer(BIT_STEPS)
msg = b"Hell\0" msg = b"Hell\0"
signals = { signals = {
'clk': uart.clk, 'clk': uart.clk,
@ -45,7 +45,7 @@ async def test_rx(uart):
await cocotb.start(recv_packet(signals, msg)) await cocotb.start(recv_packet(signals, msg))
for c in msg: for c in msg:
await putchar(c) await putchar(uart.rx, c)
overflows = 0 overflows = 0
frame_errors = 0 frame_errors = 0
@ -69,8 +69,8 @@ async def test_rx(uart):
assert frame_errors == 1 assert frame_errors == 1
uart.ready.value = 0 uart.ready.value = 0
await putchar(0xFF) await putchar(uart.rx, 0xFF)
await putchar(0) await putchar(uart.rx, 0)
assert overflows == 1 assert overflows == 1