projects
/
pinmux.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
d7d60fe
)
feat(stage2.py): Changed UART test to loopback config.
author
Andrey Miroshnikov
<andrey@technepisteme.xyz>
Sat, 3 Sep 2022 12:00:16 +0000
(12:00 +0000)
committer
Andrey Miroshnikov
<andrey@technepisteme.xyz>
Sat, 3 Sep 2022 12:00:16 +0000
(12:00 +0000)
src/spec/stage2.py
patch
|
blob
|
history
diff --git
a/src/spec/stage2.py
b/src/spec/stage2.py
index 38f130edcac5fd140f09071e91ac894017d6280a..378d590331e270c9b2b9ed3c68660cda46c16bc6 100644
(file)
--- a/
src/spec/stage2.py
+++ b/
src/spec/stage2.py
@@
-129,6
+129,11
@@
def set_bank(dut, bank, delay=1e-6):
yield dut.bank.eq(bank)
yield Delay(delay)
yield dut.bank.eq(bank)
yield Delay(delay)
+"""
+GPIO test function
+Set the gpio output based on given data sequence, checked at pad.o
+Then sends the same byte via pad.i to gpio input
+"""
def gpio(gpio, pad, data, delay=1e-6):
# Output test - Control GPIO output
yield gpio.oe.eq(1)
def gpio(gpio, pad, data, delay=1e-6):
# Output test - Control GPIO output
yield gpio.oe.eq(1)
@@
-153,28
+158,50
@@
def gpio(gpio, pad, data, delay=1e-6):
temp = yield gpio.i
read2 |= (temp << i)
assert read2 == read, f"Pad Sent: %x | GPIO Read: %x" % (data, read)
temp = yield gpio.i
read2 |= (temp << i)
assert read2 == read, f"Pad Sent: %x | GPIO Read: %x" % (data, read)
+ # reset input signal
+ yield pad.i.eq(0)
+ yield Delay(delay)
-def uart_send(tx, rx, byte, oe=None, delay=1e-6):
- if oe is not None:
- yield oe.eq(1)
- yield tx.eq(1)
+"""
+UART test function
+Sends a byte via uart tx, checked at output pad
+Then sends the same byte via input pad to uart rx
+Input and output pads are different, so must specify both
+"""
+def uart_send(uart, pad_o, pad_i, byte, delay=1e-6):
+ # Drive uart tx - check the word seen at the Pad
+ yield uart.oe.eq(1)
+ yield uart.tx.eq(1)
yield Delay(2*delay)
yield Delay(2*delay)
- yield tx.eq(0) # start bit
+ yield
uart.
tx.eq(0) # start bit
yield Delay(delay)
yield Delay(delay)
- re
sult
= 0
+ re
ad
= 0
# send one byte, lsb first
for i in range(0, 8):
bit = (byte >> i) & 0x1
# send one byte, lsb first
for i in range(0, 8):
bit = (byte >> i) & 0x1
- yield tx.eq(bit)
+ yield uart.tx.eq(bit)
+ yield Delay(delay)
+ test_bit = yield pad_o
+ read |= (test_bit << i)
+ yield uart.tx.eq(1) # stop bit
+ yield Delay(delay)
+ assert byte == read, f"UART Sent: %x | Pad Read: %x" % (byte, read)
+ # Drive Pad i - check word at uart rx
+ yield pad_i.eq(1)
+ yield Delay(2*delay)
+ yield pad_i.eq(0) # start bit
+ yield Delay(delay)
+ read2 = 0
+ for i in range(0, 8):
+ bit = (read >> i) & 0x1
+ yield pad_i.eq(bit)
yield Delay(delay)
yield Delay(delay)
- test_bit = yield rx
- re
sult
|= (test_bit << i)
- yield
tx
.eq(1) # stop bit
+ test_bit = yield
uart.
rx
+ re
ad2
|= (test_bit << i)
+ yield
pad_i
.eq(1) # stop bit
yield Delay(delay)
yield Delay(delay)
- if result == byte:
- print("Received: %x | Sent: %x" % (byte, result))
- else:
- print("Received: %x does NOT match sent: %x" % (byte, result))
+ assert read == read2, f"Pad Sent: %x | UART Read: %x" % (read, read2)
+
def i2c_send(sda, scl, sda_pad_i, byte, delay=1e-6):
# No checking yet
def i2c_send(sda, scl, sda_pad_i, byte, delay=1e-6):
# No checking yet
@@
-209,8
+236,7
@@
def test_man_pinmux(dut, pad_names):
yield from gpio(dut.gpio['1'], dut.pads['N2'], 0x5a5)
# UART test
yield from set_bank(dut, UART_BANK)
yield from gpio(dut.gpio['1'], dut.pads['N2'], 0x5a5)
# UART test
yield from set_bank(dut, UART_BANK)
- yield from uart_send(dut.uart.tx, dut.pads['N1'].o, 0x42, oe=dut.uart.oe)
- yield from uart_send(dut.pads['N2'].i, dut.uart.rx, 0x5a)
+ yield from uart_send(dut.uart, dut.pads['N1'].o, dut.pads['N2'].i, 0x42)
yield dut.pads['N2'].i.eq(0)
yield Delay(delay)
# I2C test
yield dut.pads['N2'].i.eq(0)
yield Delay(delay)
# I2C test