You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
64 lines
2.1 KiB
Python
64 lines
2.1 KiB
Python
import unittest
|
|
|
|
from nmigen.sim import Simulator
|
|
|
|
from lpcperipheral.io_space import IOSpace
|
|
from lpcperipheral.ipmi_bt import RegEnum, BMCRegEnum
|
|
|
|
from .helpers import Helpers
|
|
|
|
|
|
class TestSum(unittest.TestCase, Helpers):
|
|
def setUp(self):
|
|
self.dut = IOSpace()
|
|
|
|
def test_io_space_vuart(self):
|
|
def bench():
|
|
yield
|
|
|
|
# Look for TX empty bits
|
|
yield from self.wishbone_read(self.dut.bmc_wb, (0x0 + (5 * 4)) // 4, 0x60)
|
|
|
|
# Test 1 byte from BMC to target
|
|
yield from self.wishbone_write(self.dut.bmc_wb, 0x0 // 4, 0x12)
|
|
yield
|
|
yield from self.wishbone_read(self.dut.target_wb, 0x3f8, 0x12)
|
|
|
|
# Test 1 byte from target to BMC
|
|
yield from self.wishbone_write(self.dut.target_wb, 0x3f8, 0x13)
|
|
yield
|
|
yield from self.wishbone_read(self.dut.bmc_wb, 0x0 // 4, 0x13)
|
|
|
|
# Test 3 bytes from BMC to target
|
|
yield from self.wishbone_write(self.dut.bmc_wb, 0x0 // 4, 0x15)
|
|
yield from self.wishbone_write(self.dut.bmc_wb, 0x0 // 4, 0x16)
|
|
yield from self.wishbone_write(self.dut.bmc_wb, 0x0 // 4, 0x17)
|
|
yield from self.wishbone_read(self.dut.target_wb, 0x3f8, 0x15)
|
|
yield from self.wishbone_read(self.dut.target_wb, 0x3f8, 0x16)
|
|
yield from self.wishbone_read(self.dut.target_wb, 0x3f8, 0x17)
|
|
|
|
sim = Simulator(self.dut)
|
|
sim.add_clock(1e-6) # 1 MHz
|
|
sim.add_sync_process(bench)
|
|
with sim.write_vcd("test_io_space_vuart.vcd"):
|
|
sim.run()
|
|
|
|
def test_io_space_ipmi_bt(self):
|
|
def bench():
|
|
yield
|
|
|
|
# Test 1 byte from BMC to target via IPMI BT
|
|
yield from self.wishbone_write(self.dut.bmc_wb, 0x1000//4 + BMCRegEnum.BMC2HOST_HOST2BMC, 0x43)
|
|
yield
|
|
yield from self.wishbone_read(self.dut.target_wb, 0xe4 + RegEnum.BMC2HOST_HOST2BMC, 0x43)
|
|
|
|
sim = Simulator(self.dut)
|
|
sim.add_clock(1e-6) # 1 MHz
|
|
sim.add_sync_process(bench)
|
|
with sim.write_vcd("test_io_space_ipmi_bt.vcd"):
|
|
sim.run()
|
|
|
|
|
|
if __name__ == '__main__':
|
|
unittest.main()
|