SocLib Components General Index


1) Functional Description

This component is a multi-channels, programmable, Hardware Interrupt to Software Interrupt translator. It can be used to translate a number of hardware interrupt lines (HWI) to the same number of write triggered interrupt (WTI) that can be handled by a VciXicu component.

It acts as a VCI initiator, to send a single flit VCI packet to the target VciXicu interrupt controller, when a rising/falling edge is detected on a given HWI input.

It acts also as a memory mapped VCI target, as the addresses of the WTI associated to a given HWI must be configured by the software.

It supports both 32 and 64 bits for the VCI data field width.

For each HWI input channel, there is four 32 bits addressable registers:

IOPIC_ADDRESS This READ/WRITE register contains the 32 LSB bits of the physical WTI address associated to the HWI channel. The hardware RESET value is 0.

IOPIC_EXTEND This READ/WRITE register contains the 32 MSB bits of the physical WTI address associated to the HWI channel. The hardware RESET value is 0.

IOPIC_MASK This READ/WRITE register contains actually a boolean: the corresponding HWI will be transmitted as a WTI only if the register value is not 0. The hardware RESET value is 0.

IOPIC_STATUS This READ-ONLY register register contains the HWI channel status. Only the two LSB bits are significant:

  • Bit 0 : HWI line current value.
  • Bit 1 : ERROR reported in a WTI transaction when this bit is set.

Any read access to the IOPIC status register reset the ERROR bit.

The number of 32 bits words occupied by a single HWI channel is defined by the IOPIC_SPAN parameter,

For extensibility issues, the software drivers must use the mnemonics defined here to access this component.

2) Component definition & usage


Uses( 'vci_iopic' )

3) CABA Implementation

CABA sources

CABA Constructor parameters

     sc_module_name name,  // Component Name
     const soclib::common::MappingTable &mt,  // Mapping Table
     const soclib::common::IntTab &srcid, // Initiator index
     const soclib::common::IntTab &tgtid, // Target index
     const size_t channels );   // Number of HWI channels (inputs)

CABA Ports

  • sc_in<bool> p_clk : Global system clock
  • sc_in<bool> p_resetn : Global system reset
  • soclib::caba::VciInitiator<vci_param> p_vci_initiator : VCI initiator port
  • soclib::caba::VciTarget<vci_param> p_vci_target : VCI target port
  • sc_in<bool> *p_hwi : Input interrupts ports array
Last modified 7 years ago Last modified on Apr 1, 2015, 6:23:04 PM