Hardware Interfaces

Referring to the Comportable guideline for peripheral device functionality, the module pinmux has the following hardware interfaces defined

  • Primary Clock: clk_i
  • Other Clocks: clk_aon_i
  • Bus Device Interfaces (TL-UL): tl
  • Bus Host Interfaces (TL-UL): none
  • Peripheral Pins for Chip IO: none
  • Interrupts: none

Inter-Module Signals

Port NamePackage::StructTypeActWidthDescription
lc_hw_debug_enlc_ctrl_pkg::lc_txunircv1Debug enable qualifier coming from life cycle controller, used for HW strap qualification.
lc_dft_enlc_ctrl_pkg::lc_txunircv1Test enable qualifier coming from life cycle controller, used for HW strap qualification.
lc_escalate_enlc_ctrl_pkg::lc_txunircv1Escalation enable signal coming from life cycle controller, used for invalidating the latched lc_hw_debug_en state inside the strap sampling logic.
lc_check_byp_enlc_ctrl_pkg::lc_txunircv1Check bypass enable signal coming from life cycle controller, used for invalidating the latched lc_hw_debug_en state inside the strap sampling logic. This signal is asserted whenever the life cycle controller performs a life cycle transition. Its main use is to skip any background checks inside the life cycle partition of the OTP controller while a life cycle transition is in progress.
pinmux_hw_debug_enlc_ctrl_pkg::lc_txunireq1This is the latched version of lc_hw_debug_en_i. We use it exclusively to gate the JTAG signals and TAP side of the RV_DM so that RV_DM can remain live during an NDM reset cycle.
lc_jtagjtag_pkg::jtagreq_rspreq1Qualified JTAG signals for life cycle controller TAP.
rv_jtagjtag_pkg::jtagreq_rspreq1Qualified JTAG signals for RISC-V processor TAP.
dft_jtagjtag_pkg::jtagreq_rspreq1Qualified JTAG signals for DFT TAP.
dft_strap_testpinmux_pkg::dft_strap_test_requnireq1Sampled DFT strap values, going to the DFT TAP.
dft_hold_tap_sellogicunircv1TAP selection hold indication, asserted by the DFT TAP during boundary scan.
sleep_enlogicunircv1Level signal that is asserted when the power manager enters sleep.
strap_enlogicunircv1This signal is pulsed high by the power manager after reset in order to sample the HW straps.
strap_en_overridelogicunircv1This signal transitions from 0 -> 1 by the lc_ctrl manager after volatile RAW_UNLOCK in order to re-sample the HW straps. The signal must stay at 1 until reset. Note that this is only used in test chips when SecVolatileRawUnlockEn = 1. Otherwise this signal is unused.
pin_wkup_reqlogicunireq1Wakeup request from wakeup detectors, to the power manager, running on the AON clock.
usbdev_dppullup_enlogicunircv1Pullup enable signal coming from the USB IP.
usbdev_dnpullup_enlogicunircv1Pullup enable signal coming from the USB IP.
usb_dppullup_enlogicunireq1Pullup enable signal going to USB PHY, needs to be maintained in low-power mode.
usb_dnpullup_enlogicunireq1Pullup enable signal going to USB PHY, needs to be maintained in low-power mode.
usb_wkup_reqlogicunireq1Wakeup request from USB wakeup detector, going to the power manager, running on the AON clock.
usbdev_suspend_reqlogicunircv1Indicates whether USB is in suspended state, coming from the USB device.
usbdev_wake_acklogicunircv1Acknowledges the USB wakeup request, coming from the USB device.
usbdev_bus_not_idlelogicunireq1Event signal that indicates that the USB was not idle while monitoring.
usbdev_bus_resetlogicunireq1Event signal that indicates that the USB issued a Bus Reset while monitoring.
usbdev_sense_lostlogicunireq1Event signal that indicates that USB SENSE signal was lost while monitoring.
usbdev_wake_detect_activelogicunireq1State debug information.
tltlul_pkg::tlreq_rsprsp1

Security Alerts

Alert NameDescription
fatal_faultThis fatal alert is triggered when a fatal TL-UL bus integrity fault is detected.

Security Countermeasures

Countermeasure IDDescription
PINMUX.BUS.INTEGRITYEnd-to-end bus integrity scheme.
PINMUX.LC_DFT_EN.INTERSIG.MUBIThe life cycle DFT enable signal is multibit encoded.
PINMUX.LC_HW_DEBUG_EN.INTERSIG.MUBIThe life cycle hardware debug enable signal is multibit encoded.
PINMUX.LC_CHECK_BYP_EN.INTERSIG.MUBIThe life cycle check bypass signal is multibit encoded.
PINMUX.LC_ESCALATE_EN.INTERSIG.MUBIThe life cycle check bypass signal is multibit encoded.
PINMUX.PINMUX_HW_DEBUG_EN.INTERSIG.MUBIIn order to support the NDM reset feature in RV_DM, the pinmux latches the LC_HW_DEBUG_EN signal so that it can survive the NDM reset, and sends that signal on to the RV_DM for use in gating circuitry. This signal is also multibit encoded
PINMUX.TAP.MUX.LC_GATEDThe TAP selection mux/demux in the strap sampling module is gated by life cycle signals so that the RV_DM can only be selected during when LC_HW_DEBUG_EN is asserted, and the DFT TAP can only be selected when LC_DFT_EN is asserted.

Parameters

The following table lists the main parameters used throughout the pinmux design. Note that the pinmux is generated based on the system configuration, and hence these parameters are placed into a package. The pinout and pinmux mappings are listed under Pinout and Pinmux Mapping for specific top-level configurations.

ParameterDescription
NPeriphOutNumber of peripheral outputs.
NPeriphInNumber of peripheral input.
NMioPadsNumber of muxed bidirectional pads.
NDioPadsNumber of dedicated pads.

Primary IO Signals

The table below lists the primary pinmux IO signals to/from the pad ring. The number of dedicated and muxed IOs is parametric, and hence the signals are stacked in packed arrays.

SignalDirectionTypeDescription
periph_to_mio_i[NPeriphOut-1:0]inputpacked logicSignals from NPeriphOut muxed peripheral outputs coming into the pinmux.
periph_to_mio_oe_i[NPeriphOut-1:0]inputpacked logicSignals from NPeriphOut muxed peripheral output enables coming into the pinmux.
mio_to_periph_o[NPeriphIn-1:0]outputpacked logicSignals to NPeriphIn muxed peripherals coming from the pinmux.
periph_to_dio_i[NDioPads-1:0]inputpacked logicSignals from NDioPads dedicated peripheral outputs coming into the pinmux.
periph_to_dio_oe_i[NDioPads-1:0]inputpacked logicSignals from NDioPads dedicated peripheral output enables coming into the pinmux.
dio_to_periph_o[NDioPads-1:0]outputpacked logicSignals to NDioPads dedicated peripherals coming from the pinmux.
mio_attr_o[NMioPads-1:0]outputprim_pad_wrapper_pkg::pad_attr_tPacked array containing the pad attributes of all muxed IOs.
mio_out_o[NMioPads-1:0]outputpacked logicSignals to NMioPads bidirectional muxed pads as output data.
mio_oe_o[NMioPads-1:0]outputpacked logicSignals to NMioPads bidirectional muxed pads as output enables.
mio_in_i[NMioPads-1:0]inputpacked logicSignals from NMioPads bidirectional muxed pads as input data.
dio_attr_o[NDioPads-1:0]outputprim_pad_wrapper_pkg::pad_attr_tPacked array containing the pad attributes of all dedicated IOs.
dio_out_o[NDioPads-1:0]outputpacked logicSignals to NDioPads bidirectional dedicated pads as output data.
dio_oe_o[NDioPads-1:0]outputpacked logicSignals to NDioPads bidirectional dedicated pads as output enables.
dio_in_i[NDioPads-1:0]inputpacked logicSignals from NDioPads bidirectional dedicated pads as input data.