GRLIB IRQMP Model
The IrqMP is part of the GRLIB device library from Gaisler. It is a multiprocessor capable interrupt controller.
The controller supports routing interrupts to different processor cores and broadcasted interrupts.
Configuration
- config.nCpu
- 
Number of processors supported. 
- config.enExtIrq
- 
Enable extended IRQs. 
- pnp.config
- 
Plug and play configuration word for APB plug-and-play. 
- cpu
- 
Up to 16 CPUs supported. IfaceRef property should be connected to the different CPUs. 
@IrqMp Reference
IrqMp Reference
Properties
| Name | Type | Description | 
|---|---|---|
| Class | *void | Class object | 
| Component | *void | Pointer to component object if part of component | 
| LoggingFlags | uint64_t | Flags for logging info | 
| Name | *char | Object name | 
| TimeSource | *void | Time source object | 
| bootAddress | [uint32_t; 16] | |
| broadcast | uint32_t | |
| config.bootReg | uint8_t | Enable boot address registers | 
| config.enExtIrq | uint8_t | |
| config.irqMapping | uint8_t | Enable interrupt mapping | 
| config.logInterrupts | uint8_t | |
| config.nCpu | uint8_t | |
| config.traceReads | uint8_t | |
| config.traceWrites | uint8_t | |
| cpu | [temu_IfaceRef; 16]/ <unknown> | Processors | 
| extIntAck | [uint32_t; 16] | |
| force | [uint32_t; 16] | |
| interruptMap | [uint32_t; 8] | |
| irqClear | uint32_t | |
| irqCtrl | [temu_IfaceRef; 16]/ <unknown> | Upstream interrupt controllers (e.g. processor) | 
| irqForce0 | uint32_t | |
| irqLevel | uint32_t | |
| irqPending | uint32_t | |
| irqSignalStatus | [uint16_t; 16] | |
| mask | [uint32_t; 16] | |
| mpStatus | uint32_t | |
| pnp.bar | uint32_t | |
| pnp.config | uint32_t | 
Limitations
The following deviations from real hardware are known to exist with this model:
- 
Broadcasted interrupts are broadcasted at the current time to all CPUs. If it was triggered by a non-synchronized event, the interrupt is raised at different times on the different cores. Consider the IRQ frequency and the configured quanta length.