The MicroBlaze V core has been developed to support a high degree of user configurability. This allows tailoring of the processor to meet specific cost/performance requirements.
Configuration is done using parameters that typically enable, size, or
select certain processor features. For example, the instruction cache is enabled by
setting the C_USE_ICACHE parameter. The size of the
instruction cache, and the cacheable memory range, are all configurable using: C_ICACHE_BYTE_SIZE, C_ICACHE_BASEADDR, and C_ICACHE_HIGHADDR
respectively.
Parameters valid for the latest version of MicroBlaze V are listed in the following table. The configurability is fully backward compatible.
| Parameter Name | Feature/Description | Allowable Values | Default Value | Tool Assigned | VHDL Type |
|---|---|---|---|---|---|
| C_FAMILY | Target family | See below | virtex7 | Yes | String |
| C_DATA_SIZE | Data size:
|
32, 64 | 32 | Integer | |
| C_ADDR_SIZE | Address Size | 32-64 | 32 | NA | Integer |
| C_OPTIMIZATION | Select implementation optimization:
|
0, 1, 2, 3 | 0 | Integer | |
| C_INTERCONNECT | Select interconnect:
|
2, 3 | 2 | Integer | |
| C_BASE_VECTORS 1 | Configurable base vectors | 0x0 - 0xFFFFFFFF FFFFFFFF | 0x0 | std_logic_vector | |
| C_FAULT_TOLERANT | Implement fault tolerance | 0, 1 | 0 | Yes | Integer |
| C_ECC_USE_CE_EXCEPTION | Generate exception for correctable ECC error | 0, 1 | 0 | Integer | |
| C_LOCKSTEP_SLAVE | Lockstep Slave | 0, 1 | 0 | Integer | |
| C_AVOID_PRIMITIVES | Disallow FPGA primitives:
|
0, 1, 2, 3 | 0 | Integer | |
| C_ENABLE_DISCRETE_PORTS | Show discrete ports | 0, 1 | 0 | Integer | |
| C_INSTANCE | Instance Name | Any instance name | microblaze_v | Yes | String |
| C_D_AXI | Data side AXI interface | 0, 1 | 0 | Integer | |
| C_D_LMB | Data side LMB interface | 0, 1 | 1 | Integer | |
| C_I_AXI | Instruction side AXI interface | 0, 1 | 0 | Integer | |
| C_I_LMB | Instruction side LMB interface | 0, 1 | 1 | Integer | |
| C_LMB_DATA_SIZE | LMB interface data size | 32, 64 | 32 | Integer | |
| C_USE_BARREL | Barrel shifter implementation:
|
1, 2 | 1 | Integer | |
| C_USE_MULDIV | Include hardware multiplier and divider:
|
0, 1, 2 | 0 | Integer | |
| C_USE_FPU | Include hardware floating-point unit:
|
0, 1 | 0 | Integer | |
| C_USE_ATOMIC | Include atomic instructions | 0, 1 | 0 | Integer | |
| C_USE_COMPRESSION | Use compressed instructions | 0, 1 | 0 | Integer | |
| C_USE_BITMAN_A | Use bit manipulation instructions (Zba extension) | 0, 1 | 0 | Integer | |
| C_USE_BITMAN_B | Use bit manipulation instructions (Zbb extension) | 0, 1 | 0 | Integer | |
| C_USE_BITMAN_C | Use bit manipulation instructions (Zbc extension) | 0, 1 | 0 | Integer | |
| C_USE_BITMAN_S | Use bit manipulation instructions (Zbs extension) | 0, 1 | 0 | Integer | |
| C_USE_COUNTERS | Enable base counters and timers | 0, 1 | 1 | Integer | |
| C_MISALIGNED_EXCEPTIONS | Enable exception handling for misaligned exceptions | 0, 1 | 1 | Integer | |
| C_ILL_INSTR_EXCEPTION | Enable exception handling for illegal
instructions:
|
0, 1, 2 | 2 | Integer | |
| C_M_AXI_I_BUS_EXCEPTION | Enable exception handling for M_AXI_I bus error | 0, 1 | 1 | Integer | |
| C_M_AXI_D_BUS_EXCEPTION | Enable exception handling for M_AXI_D bus error | 0, 1 | 1 | Integer | |
| C_FSL_EXCEPTION | Enable exception handling for stream links | 0,1 | 0 | Integer | |
| C_IMPRECISE_EXCEPTIONS | Allow imprecise exceptions | 0, 1 | 0 | Integer | |
| C_DEBUG_ENABLED | MDM Debug interface:
|
0,1 | 1 | Integer | |
| C_NUMBER_OF_PC_BRK | Number of hardware breakpoints | 0-8 | 1 | Integer | |
| C_NUMBER_OF_RD_ADDR_BRK | Number of read address triggers | 0-4 | 0 | Integer | |
| C_NUMBER_OF_WR_ADDR_BRK | Number of write address triggers | 0-4 | 0 | Integer | |
| C_DEBUG_EVENT_COUNTERS | Hardware performance monitor event counters | 0 - 32 | 0 | Integer | |
| C_DEBUG_LATENCY_COUNTERS | Hardware performance monitor latency counters | 0 - 16 | 0 | Integer | |
| C_DEBUG_COUNTER_WIDTH | Hardware performance monitor counter width | 32, 48, 64 | 64 | Integer | |
| C_DEBUG_INTERFACE | Debug Interface:
|
0,1,2 | 0 | Integer | |
| C_ASYNC_INTERRUPT | Asynchronous Interrupt | 0,1 | 0 | Yes | Integer |
| C_ASYNC_WAKEUP | Asynchronous Wakeup | 00,01,10,11 | 00 | Yes | Integer |
| C_INTERRUPT_IS_EDGE | Level/edge interrupt | 0, 1 | 0 | Yes | Integer |
| C_EDGE_IS_POSITIVE | Negative/positive edge interrupt | 0, 1 | 1 | Yes | Integer |
| C_FSL_LINKS | Number of AXI4-Stream interfaces | 0 -16 | 0 | Integer | |
| C_USE_EXTENDED_FSL_INSTR | Enable use of extended stream instructions | 0, 1 | 0 | Integer | |
| C_ICACHE_BASEADDR | Instruction cache base address | 0x0 - 0xFFFFFFFF FFFFFFFF | 0x0 | std_logic_vector | |
| C_ICACHE_HIGHADDR | Instruction cache high address | 0x0 - 0xFFFFFFFF FFFFFFFF | 0x3FFFFFFF | std_logic_vector | |
| C_USE_ICACHE | Instruction cache | 0, 1 | 0 | Integer | |
| C_ICACHE_LINE_LEN | Instruction cache line length | 4, 8, 16 | 4 | Integer | |
| C_ICACHE_FORCE_TAG_LUTRAM | Instruction cache tag always implemented with distributed RAM | 0, 1 | 0 | Integer | |
| C_ICACHE_STREAMS | Instruction cache streams | 0, 1 | 0 | Integer | |
| C_ICACHE_VICTIMS | Instruction cache victims | 0, 2, 4, 8 | 0 | Integer | |
| C_ICACHE_DATA_WIDTH | Instruction cache data width:
|
0, 1, 2 | 0 | Integer | |
| C_ICACHE_BYTE_SIZE | Instruction cache size | 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 2 | 8192 | Integer | |
| C_DCACHE_BASEADDR | Data cache base address | 0x0 - 0xFFFFFFFF FFFFFFFF | 0x0 | std_logic_vector | |
| C_DCACHE_HIGHADDR | Data cache high address | 0x0 - 0xFFFFFFFF FFFFFFFF | 0x3FFFFFFF | std_logic_vector | |
| C_USE_DCACHE | Data cache | 0, 1 | 0 | Integer | |
| C_DCACHE_LINE_LEN | Data cache line length | 4, 8, 16 | 4 | Integer | |
| C_DCACHE_FORCE_TAG_LUTRAM | Data cache tag always implemented with distributed RAM | 0, 1 | 0 | Integer | |
| C_DCACHE_USE_WRITEBACK | Data cache write-back storage policy used | 0, 1 | 0 | Integer | |
| C_DCACHE_VICTIMS | Data cache victims | 0, 2, 4, 8 | 0 | Integer | |
| C_DCACHE_DATA_WIDTH | Data cache data width:
|
0, 1, 2 | 0 | Integer | |
| C_DCACHE_BYTE_SIZE | Data cache size | 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384, 32768, 65536 2 | 8192 | Integer | |
| C_USE_MMU | Memory management mode:
|
0, 1, 3 | 0 | Integer | |
| C_MMU_PRIVILEGED_INSTR | Allow user mode access to stream CSR | 0, 1 | 0 | Integer | |
| C_USE_INTERRUPT | Enable interrupt handling:
|
0, 1, 2 | 1 | Yes | Integer |
| C_USE_EXT_BRK | Enable external break handling (platform interrupt) | 0, 1 | 0 | Integer | |
| C_USE_EXT_NM_BRK | Enable external non-maskable break (non-maskable interrupt) | 0, 1 | 0 | Integer | |
| C_USE_SLEEP | Enable sleep, hibernate, suspend outputs:
|
0-7 | 0 | Integer | |
| C_USE_NON_SECURE | Use corresponding non-secure input | 0-15 | 0 | Yes | Integer |
| C_USE_BRANCH_TARGET_CACHE | Enable branch target cache | 0,1 | 0 | Integer | |
| C_BRANCH_TARGET_CACHE_SIZE | Branch target cache size:
|
0-7 | 0 | Integer | |
| C_M_AXI_DP_THREAD_ID_WIDTH | Data side AXI thread ID width | 1 | 1 | Integer | |
| C_M_AXI_DP_DATA_WIDTH | Data side AXI data width | 32 | 32 | Integer | |
| C_M_AXI_DP_ADDR_WIDTH | Data side AXI address width | 32-64 | 32 | Yes | Integer |
| C_M_AXI_DP_SUPPORTS_THREADS | Data side AXI uses threads | 0 | 0 | Integer | |
| C_M_AXI_DP_SUPPORTS_READ | Data side AXI support for read accesses | 1 | 1 | Integer | |
| C_M_AXI_DP_SUPPORTS_WRITE | Data side AXI support for write accesses | 1 | 1 | Integer | |
| C_M_AXI_DP_SUPPORTS_NARROW_BURST | Data side AXI narrow burst support | 0 | 0 | Integer | |
| C_M_AXI_DP_PROTOCOL | Data side AXI protocol | AXI4, AXI4LITE | AXI4 LITE | Yes | String |
| C_M_AXI_DP_EXCLUSIVE_ACCESS | Data side AXI exclusive access support | 0,1 | 0 | Integer | |
| C_M_AXI_IP_THREAD_ID_WIDTH | Instruction side AXI thread ID width | 1 | 1 | Integer | |
| C_M_AXI_IP_DATA_WIDTH | Instruction side AXI data width | 32 | 32 | Integer | |
| C_M_AXI_IP_ADDR_WIDTH | Instruction side AXI address width | 32-64 | 32 | Yes | Integer |
| C_M_AXI_IP_SUPPORTS_THREADS | Instruction side AXI uses threads | 0 | 0 | Integer | |
| C_M_AXI_IP_SUPPORTS_READ | Instruction side AXI support for read accesses | 1 | 1 | Integer | |
| C_M_AXI_IP_SUPPORTS_WRITE | Instruction side AXI support for write accesses | 0 | 0 | Integer | |
| C_M_AXI_IP_SUPPORTS_NARROW_BURST | Instruction side AXI narrow burst support | 0 | 0 | Integer | |
| C_M_AXI_IP_PROTOCOL | Instruction side AXI protocol | AXI4LITE | AXI4 LITE | String | |
| C_M_AXI_DC_THREAD_ID_WIDTH | Data cache AXI ID width | 1 | 1 | Integer | |
| C_M_AXI_DC_DATA_WIDTH | Data cache AXI data width | 32, 64, 128, 256, 512 | 32 | Integer | |
| C_M_AXI_DC_ADDR_WIDTH | Data cache AXI address width | 32-64 | 32 | Yes | Integer |
| C_M_AXI_DC_SUPPORTS_THREADS | Data cache AXI uses threads | 0 | 0 | Integer | |
| C_M_AXI_DC_SUPPORTS_READ | Data cache AXI support for read accesses | 1 | 1 | Integer | |
| C_M_AXI_DC_SUPPORTS_WRITE | Data cache AXI support for write accesses | 1 | 1 | Integer | |
| C_M_AXI_DC_SUPPORTS_ NARROW_BURST | Data cache AXI narrow burst support | 0 | 0 | Integer | |
| C_M_AXI_DC_SUPPORTS_USER_SIGNALS | Data cache AXI user signal support | 1 | 1 | Integer | |
| C_M_AXI_DC_PROTOCOL | Data cache AXI protocol | AXI4 | AXI4 | String | |
| C_M_AXI_DC_AWUSER_WIDTH | Data cache AXI user width | 5 | 5 | Integer | |
| C_M_AXI_DC_ARUSER_WIDTH | Data cache AXI user width | 5 | 5 | Integer | |
| C_M_AXI_DC_WUSER_WIDTH | Data cache AXI user width | 1 | 1 | Integer | |
| C_M_AXI_DC_RUSER_WIDTH | Data cache AXI user width | 1 | 1 | Integer | |
| C_M_AXI_DC_BUSER_WIDTH | Data cache AXI user width | 1 | 1 | Integer | |
| C_M_AXI_DC_EXCLUSIVE_ACCESS | Data cache AXI exclusive access support | 0,1 | 0 | Integer | |
| C_M_AXI_DC_USER_VALUE | Data cache AXI user value | 0-31 | 31 | Integer | |
| C_M_AXI_IC_THREAD_ID_WIDTH | Instruction cache AXI ID width | 1 | 1 | Integer | |
| C_M_AXI_IC_DATA_WIDTH | Instruction cache AXI data width | 32, 64, 128, 256, 512 | 32 | Integer | |
| C_M_AXI_IC_ADDR_WIDTH | Instruction cache AXI address width | 32-64 | 32 | Yes | Integer |
| C_M_AXI_IC_SUPPORTS_THREADS | Instruction cache AXI uses threads | 0 | 0 | Integer | |
| C_M_AXI_IC_SUPPORTS_READ | Instruction cache AXI support for read accesses | 1 | 1 | Integer | |
| C_M_AXI_IC_SUPPORTS_WRITE | Instruction cache AXI support for write accesses | 0 | 0 | Integer | |
| C_M_AXI_IC_SUPPORTS_NARROW_BURST | Instruction cache AXI narrow burst support | 0 | 0 | Integer | |
| C_M_AXI_IC_SUPPORTS_ USER_SIGNALS | Instruction cache AXI user signal support | 1 | 1 | Integer | |
| C_M_AXI_IC_PROTOCOL | Instruction cache AXI protocol | AXI4 | AXI4 | String | |
| C_M_AXI_IC_AWUSER_WIDTH | Instruction cache AXI user width | 5 | 5 | Integer | |
| C_M_AXI_IC_ARUSER_WIDTH | Instruction cache AXI user width | 5 | 5 | Integer | |
| C_M_AXI_IC_WUSER_WIDTH | Instruction cache AXI user width | 1 | 1 | Integer | |
| C_M_AXI_IC_RUSER_WIDTH | Instruction cache AXI user width | 1 | 1 | Integer | |
| C_M_AXI_IC_BUSER_WIDTH | Instruction cache AXI user width | 1 | 1 | Integer | |
| C_M_AXI_IC_USER_VALUE | Instruction cache AXI user value | 0-31 | 31 | Integer | |
| C_Mn_AXIS_PROTOCOL | AXI4-Stream protocol | Generic | Generic | Integer | |
| C_Sn_AXIS_PROTOCOL | AXI4-Stream protocol | Generic | Generic | Integer | |
| C_Mn_AXIS_DATA_WIDTH | AXI4-Stream master data width | 32 | 32 | NA | Integer |
| C_Sn_AXIS_DATA_WIDTH | AXI4-Stream slave data width | 32 | 32 | NA | Integer |
| C_NUM_SYNC_FF_CLK |
Reset and Wakeup[0:1] synchronization stages |
≥0 | 2 | Integer | |
| C_NUM_SYNC_FF_CLK_IRQ |
Interrupt input
signal synchronization stages |
≥0 | 1 | Integer | |
| C_NUM_SYNC_FF_CLK_DEBUG | Debug serial signal synchronization stages | ≥0 | 2 | Integer | |
| C_NUM_SYNC_FF_DBG_CLK | Internal synchronization stages to Dbg_Clk
|
≥0 | 1 | Integer | |
|
|||||
| Device Family | Allowable Values |
|---|---|
| Artix devices | aartix7 artix7 artix7l qartix7 qartix7l artixuplus |
| Kintex 7, Kintex UltraScale, Kintex UltraScale+ devices | kintex7 kintex7l qkintex7 qkintex7l kintexu kintexuplus |
| Spartan devices | spartan7 |
| Virtex 7, Virtex UltraScale, Virtex UltraScale+ devices | qvirtex7 virtex7 virtexu virtexuplus virtexuplusHBM |
| Zynq devices | azynq zynq qzynq zynquplus zynquplusRFSOC |
| Versal devices | versal |
The following table lists the parameters associated with each configurable feature.
| Feature | Associated Parameter |
|---|---|
| Processor pipeline depth | C_OPTIMIZATION |
| "M" Standard Extension for Integer Multiplier and Divider | C_USE_MULDIV |
| "A" Standard Extension for Atomic Instructions | C_USE_ATOMIC |
| "C" Standard Extension for Compressed Instructions | C_USE_COMPRESSION |
| "F" Standard Extension for Single-Precision Floating-Point | C_USE_FPU = 1 |
| "Zba", "Zbb", "Zbc", "Zbs" Bit-Manipulation ISA Extensions | C_USE_ZBA, C_USE_ZBB, C_USE_ZBC, C_USE_ZBS |
| User-mode | C_USE_MMU = 1 |
| Physical Memory Protection | C_PMP_ENTRIES > 0 |
| Supervisor Level ISA | C_USE_MMU = 3 |
| Page-Based Virtual Memory System | C_USE_MMU = 3 |
| External debug support | C_DEBUG_ENABLED |
| Parallel debug module interface | C_DEBUG_INTERFACE = 1 |
| Branch target cache (BTC) | C_USE_BRANCH_TARGET_CACHE |
| Local memory bus (LMB) data side interface | C_D_LMB |
| Local memory bus (LMB) instruction side interface | C_I_LMB |
| Instruction and data caches | C_USE_ICACHE, C_USE_DCACHE |
| Cache line word length | C_ICACHE_LINE_LEN, C_DCACHE_LINE_LEN |
| LUT cache memory | C_ICACHE_BYTE_SIZE ≤ 1024, C_DCACHE_BYTE_SIZE ≤ 1024 |
| Use write-back caching policy for D-Cache | C_DCACHE_USE_WRITEBACK |
| Streams for I-Cache | C_ICACHE_STREAMS |
| Victim handling for I-Cache | C_ICACHE_VICTIMS |
| Victim handling for D-Cache | C_DCACHE_VICTIMS |
| Force distributed RAM for cache tags | C_ICACHE_FORCE_TAG_LUTRAM, C_DCACHE_FORCE_TAG_LUTRAM |
| Configurable cache data widths | C_ICACHE_DATA_WIDTH, C_DCACHE_DATA_WIDTH |
| AXI4 (M_AXI_DP) data side interface | C_D_AXI |
| AXI4 (M_AXI_IP) instruction side interface | C_I_AXI |
| AXI4 (M_AXI_DC) protocol for D-Cache | C_INTERCONNECT = 2 |
| AXI4 (M_AXI_IC) protocol for I-Cache | C_INTERCONNECT = 2 |
| ACE (M_ACE_DC) protocol for D-Cache | C_INTERCONNECT = 3 |
| ACE (M_ACE_IC) protocol for I-Cache | C_INTERCONNECT = 3 |
| AXI4 non-secure mode | C_USE_NON_SECURE |
| Lockstep support | C_LOCKSTEP_SLAVE |
| Configurable use of FPGA primitives | C_AVOID_PRIMITIVES |
| Relocatable base vectors | C_BASE_VECTORS |
| Pipeline pause functionality | C_ENABLE_DISCRETE_PORTS |
The following table lists the parameters associated with each MicroBlaze V external interface.
| Interface | Associated Parameter |
|---|---|
| M_AXI_DP | C_D_AXI |
| DLMB | C_D_LMB |
| M_AXI_IP | C_I_AXI |
| ILMB | C_I_LMB |
| M0_AXIS..M15_AXIS, S0_AXIS..S15_AXIS | C_FSL_LINKS |
| M_AXI_DC | C_USE_DCACHE, C_INTERCONNECT = 2 |
| M_ACE_DC | C_USE_DCACHE, C_INTERCONNECT = 3 |
| M_AXI_IC | C_USE_ICACHE, C_INTERCONNECT = 2 |
| M_ACE_IC | C_USE_ICACHE, C_INTERCONNECT = 3 |
| INTERRUPT | C_USE_INTERRUPT |
| DEBUG | C_DEBUG_ENABLED |