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

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()