PINMUX DV document
Goals
-
DV:
- TODO: Add a UVM testbench to reuse auto-generated common tests for TLUL and alerts.
-
FPV:
- Verify all the PINMUX outputs by writing assumptions and assertions with a FPV based testbench
- Verify TileLink device protocol compliance with a FPV based testbench
Current status
Design features
For detailed information on PINMUX design features, please see the PINMUX design specification.
Testbench architecture
PINMUX FPV testbench has been constructed based on the formal architecture.
Block diagram
TLUL assertions
- The
../fpv/tb/pinmux_bind.sv
binds thetlul_assert
assertions with pinmux to ensure TileLink interface protocol compliance. - The
../fpv/tb/pinmux_bind.sv
also binds thepinmux_csr_assert_fpv
to assert the TileLink writes and reads correctly.
PINMUX assertions
- The
../fpv/tb/pinmux_bind_fpv.sv
binds modulepinmux_assert_fpv
with the pinmux RTL. The assertion file ensures all pinmux’s outputs are verified based on the testplan.
In the pinmux design, it includes usbdev logic because it operates on an always-on domain. Pinmux FPV assertions will only cover the connectivities between usbdev IOs and pinmux IOs. All functional checks will be implemented in the usbdev testbench.
Symbolic variables
Due to the large number of peripheral, muxed, dedicated IOs, and wakeup causes, symbolic variables are used to reduce the number of repeated assertions code.
In the pinmux_assert_fpv module, we declared four symbolic variables (mio_sel_i
, periph_sel_i
, dio_sel_i
, wkup_sel_i
) to represent the index for muxed IOs, peripheral IOs, dedicated IOs, and wakeup causes.
Detailed explanation is listed in the Symbolic Variables section.