eth: Add APB register interface to US/US+ transceiver wrappers

Signed-off-by: Alex Forencich <alex@alexforencich.com>
This commit is contained in:
Alex Forencich
2025-11-13 14:15:20 -08:00
parent 2391e4f366
commit 5e77efbfe3
33 changed files with 2431 additions and 374 deletions

View File

@@ -28,6 +28,7 @@ from cocotb.regression import TestFactory
from cocotbext.eth import XgmiiFrame, PtpClockSimTime
from cocotbext.axi import AxiStreamBus, AxiStreamSource, AxiStreamSink, AxiStreamFrame
from cocotbext.axi import ApbBus, ApbMaster
try:
from baser import BaseRSerdesSource, BaseRSerdesSink
@@ -51,6 +52,8 @@ class TB:
cocotb.start_soon(Clock(dut.stat_clk, 8, units="ns").start())
cocotb.start_soon(Clock(dut.xcvr_gtrefclk00_in, 6.206, units="ns").start())
self.apb_ctrl = ApbMaster(ApbBus.from_entity(dut.s_apb_ctrl), dut.xcvr_ctrl_clk, dut.xcvr_ctrl_rst)
self.serdes_sources = []
self.serdes_sinks = []
@@ -179,6 +182,24 @@ class TB:
await RisingEdge(self.dut.xcvr_ctrl_clk)
async def run_test_regs(dut):
tb = TB(dut)
await tb.reset()
data = await tb.apb_ctrl.read(0x00000, 2)
data = await tb.apb_ctrl.read(0x04000, 2)
data = await tb.apb_ctrl.read(0x08000, 2)
data = await tb.apb_ctrl.read(0x0C000, 2)
data = await tb.apb_ctrl.read(0x10000, 2)
data = await tb.apb_ctrl.read(0x14000, 2)
data = await tb.apb_ctrl.read(0x18000, 2)
data = await tb.apb_ctrl.read(0x1C000, 2)
for k in range(10):
await RisingEdge(dut.xcvr_ctrl_clk)
async def run_test_rx(dut, port=0, payload_lengths=None, payload_data=None, ifg=12):
if dut.DATA_W.value == 64:
@@ -915,6 +936,9 @@ def cycle_en():
if getattr(cocotb, 'top', None) is not None:
factory = TestFactory(run_test_regs)
factory.generate_tests()
for test in [run_test_rx, run_test_tx]:
factory = TestFactory(test)

View File

@@ -75,6 +75,12 @@ localparam RX_USER_W = (PTP_TS_EN ? PTP_TS_W : 0) + 1;
logic xcvr_ctrl_clk;
logic xcvr_ctrl_rst;
// transceiver control
taxi_apb_if #(
.ADDR_W(24),
.DATA_W(16)
) s_apb_ctrl();
logic xcvr_gtpowergood_out;
logic xcvr_gtrefclk00_in;
logic xcvr_qpll0pd_in;
@@ -276,6 +282,11 @@ uut (
.xcvr_ctrl_clk(xcvr_ctrl_clk),
.xcvr_ctrl_rst(xcvr_ctrl_rst),
/*
* Transceiver control
*/
.s_apb_ctrl(s_apb_ctrl),
/*
* Common
*/