1. Agilex™ 3 Embedded Memory Overview
2. Agilex™ 3 Embedded Memory Architecture and Features
3. Agilex™ 3 Embedded Memory Design Considerations
4. Agilex™ 3 Embedded Memory IP References
5. Agilex™ 3 Embedded Memory Debugging
6. Document Revision History for the Embedded Memory User Guide: Agilex™ 3 FPGAs and SoCs
2.1. Byte Enable in Agilex™ 3 Embedded Memory Blocks
2.2. Address Hold Support
2.3. Asynchronous Clear and Synchronous Clear
2.4. Memory Blocks Error Correction Code Support
2.5. Agilex™ 3 Embedded Memory Clocking Modes
2.6. Agilex™ 3 Embedded Memory Configurations
2.7. Force-to-Zero
2.8. Coherent Read Memory
2.9. Freeze Logic
2.10. True Dual Port Dual Clock Emulator
2.11. Initial Value of Read and Write Address Registers
2.12. Automatic Timing/Power Optimization in M20K Blocks
3.1. Consider the Memory Block Selection
3.2. Consider the Concurrent Write Behavior
3.3. Read-During-Write
3.4. Consider Power-Up State and Memory Initialization
3.5. Reduce Power Consumption
3.6. Avoid Providing Non-Deterministic Input
3.7. Avoid Changing Clock Signals and Other Control Signals Simultaneously
3.8. Advanced Settings in Quartus® Prime Software for Memory
3.9. Consider the Memory Depth Setting
3.10. Consider Registering the Memory Output
4.2.5.1. FIFO Functional Timing Requirements
4.2.5.2. SCFIFO ALMOST_EMPTY Functional Timing
4.2.5.3. FIFO Output Status Flag and Latency
4.2.5.4. FIFO Metastability Protection and Related Options
4.2.5.5. FIFO Synchronous Clear and Asynchronous Clear Effect
4.2.5.6. SCFIFO and DCFIFO Show-Ahead Mode
4.2.5.7. Different Input and Output Width
4.2.5.8. DCFIFO Timing Constraint Setting
4.2.5.9. Gray-Code Counter Transfer at the Clock Domain Crossing
4.2.5.10. Guidelines for Embedded Memory ECC Feature
4.2.5.11. Reset Scheme
1.1. Agilex™ 3 Embedded Memory Features
M20K Blocks | Memory Logic Array Blocks (MLABs) | |
---|---|---|
Capacity | 20-kilobit (Kb) | 640-bit |
Description | Dedicated memory resources providing a large number of independent ports (up to 4 independent ports). Ideal for larger memory arrays with high performance requirements. | Memory blocks configured from dual-purpose Logic Array Blocks (LABs). Offers flexibility for various memory designs, especially wide and shallow arrays. Well-suited for implementing functionalities such as:
|
Benefits |
|
|
In Agilex™ 3 devices, you can configure each ALM in the MLAB as ten (32×2 bits) blocks. The Agilex™ 3 devices provide one 32×20 bits simple dual-port SRAM block per MLAB.
Mode | Description |
---|---|
Single-port | This mode provides a single access point for both reading and writing data. Only one operation (read or write) can occur at a time. |
Simple dual-port | This mode provides simultaneous read and write access. It offers two independent ports but with a limitation: reading and writing to the same location at the same time is restricted. |
Emulated true dual-port | This mode provides two independent ports that can perform simultaneous read and write operations on separate memory locations. It leverages FPGA fabric resources to emulate true dual-port behavior, potentially with slight performance or resource usage trade-offs compared to dedicated hardware true dual-port. |
Simple quad-port | This mode provides four access points for enhanced data throughput. Similar to simple dual-port, simultaneous access to the same location for reading and writing can lead to data corruption. |
ROM (Read-only memory) | This mode provides read operations from the memory block only. Agilex™ 3 devices provide two options:
|
Features | M20K | MLAB |
---|---|---|
Maximum operating frequency | Refer to the memory block specification in the device data sheet. | |
Total RAM bits (including parity bits) | 20,480 bits | 640 bits |
Byte enable | Supported. | Supported. |
Address Hold | Supported in simple dual-port RAM mode only. |
Supported for read address only. |
Memory Initialization File (.mif or .hex) | Supported. | Supported. |
Power-up state | Output ports are cleared. |
|
Asynchronous/Synchronous Clears | Supports asynchronous clear on read address registers in simple dual-port and simple quad-port modes only. 1 |
Output registers only. 1 |
Same-port read-during-write |
|
Output ports set to Don't Care . 2 |
Mixed-port read-during-write |
|
Output ports set to New Data, Old Data, or Don't Care. 2 |
Error Correction Code (ECC) support |
|
— |
Force-to-Zero | Supported. | — |
Coherent read memory | Supported. | — |
Freeze logic | Supported. | — |
True dual port (TDP) dual clock emulator | Supported. | — |
Simple dual-port mixed width | Supported. | — |
FIFO buffer mixed width | Supported. | — |
Dual-clock mode | Supported in simple dual-port RAM mode only. |
Supported. |
Full synchronous memory | Supported. | Supported. |
Asynchronous memory | — | For flow-through read memory operations only. |
Write/read operation triggering | Rising clock edges. | Rising clock edges. |
Related Information
1 The actual data stored in the memory remains unchanged.
2 While simulating your design, you can treat the unused ports as Don't Care. However, these ports have definite values in real hardware.