Agilex™ 7 Embedded Memory User Guide

ID 683241
Date 4/15/2025
Public
Document Table of Contents

4.1.3. RAM: 2-PORT FPGA IP Parameters

Table 29.   RAM: 2-PORT FPGA IP Parameters—General Tab
Parameter Allowed Values Description
Operation mode
  • With one read port and one write port
  • With two read/write ports
Specifies how you use the dual port RAM.
Type
  • As a number of words
  • As a number of bits
Determines whether to specify the memory size in words or bits.
Table 30.   RAM: 2-PORT FPGA IP Parameters—Widths/Blk Type Tab
Parameter Allowed Values Description
How many words of memory? Specifies the number of words.
Use different data widths on different ports On/Off Specifies whether to use different data widths on different ports.
How wide should the 'q_a' output bus be?

Specifies the width of the input and output ports.

These option are available if you select With one read port and one write port or With two read/write ports.

How wide should the 'data_a' input bus be?
How wide should the 'q_b' output bus be?
Ram block type
  • Auto
  • MLAB
  • M20K
  • LCs
Specifies the memory block type. The types of memory block that are available for selection depends on your target device.
Set the maximum block depth to
  • Auto: Auto, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, or 16384
  • MLAB: Auto or 32
  • M20K: Auto, 512, 1024, or 2048
  • LCs: Auto
Specifies the maximum block depth in words.
How should the memory be implemented? Use default logic cell style

Specifies the logic cell implementation method.

Select Use default logic cell style if you prefer smaller and faster memory capacity.

Table 31.   RAM: 2-PORT FPGA IP Parameters—Clks/Rd, Byte En Tab
Parameter Allowed Values Description
Which clocking method do you want to use?
  • Single
  • Dual clock: use separate 'read' and 'write' clocks
  • Dual clock: use separate 'input' and 'output' clocks
  • Customize clocks for A and B ports
Specifies the clocking method to use.
  • Single—A single clock and a clock enable controls all registers of the memory block.
  • Dual clock: use separate 'read' and 'write' clock—A write clock controls the data-input, write-address, and write-enable registers while the read clock controls the data-output, read-address, and read-enable registers.
  • Dual Clock: use separate 'input' and 'output' clocks—An input clock controls all registers related to the data input to the embedded memory block including data, address, byte enables, read enables, and write enables. An output clock controls the data output registers.
  • Customize clocks for A and B portsClock A controls all registers on the port A side; clock B controls all registers on the port B side. Each port also supports independent clock enables for both port A and port B registers, respectively. To use this option, the Emulate TDP dual clock mode option must also be enabled.

Emulate TDP dual clock mode

On/Off

Specifies whether to emulate a TDP dual clock mode. The clock connection to Port A must be a slow clock and the clock connection to Port B must be a fast clock.

This option is available if you select With two read/write ports and Customize clocks for A and B ports clocking method.

Create 'rden' read enable signal

On/Off

Specifies whether to create a read enable signal for port B.

This option is available if you select With one read port and one write port.

Create 'rden_a' and 'rden_b' read enable signals

Specifies whether to create a read enable signal for port A and B.

This option is available if you select With two read/write ports.

Create byte enable for port A On/Off Specifies whether to create a byte enable for port A and B. Turn on these options if you want to mask the input data so that only specific bytes, nibbles, or bits of data are written.

The option to create a byte enable for port B is only available when you select the With two read/write ports option.

Create byte enable for port B On/Off

What is the width of a byte for byte enables?

5, 8, 9, or 10 bits

Specifies the width of a byte for byte enables.

This option is only available when you select the Create byte enable for port A and/or Create byte enable for port B option(s).

Enable Error Correction Check (ECC) On/Off Specifies whether to enable the ECC feature that corrects single bit errors, double adjacent bit errors, and triple adjacent bit errors at the output of the memory.
Enable ECC Pipeline Registers On/Off Specifies whether to enable the ECC Pipeline Registers before the output decoder to achieve that same performance as non-ECC mode at the expense of one cycle of latency.
Enable ECC Encoder Bypass On/Off Specifies whether to enable the ECC encoder bypass feature that allows you to selectively insert parity bits into the memory through eccencparity port.
Enable Coherent Read On/Off Specifies whether to enable the coherent read feature to present with coherent memory read. This feature allows you to read out current memory content, perform operation on top of the content, and write back to the same location in the same cycle.
Table 32.   RAM: 2-PORT FPGA IP Parameters—Regs/Clkens/Aclrs/Sclrs Tab
Parameter   Allowed Values Description
Input Registers All write input ports On/Off Specifies whether to register all write input ports.
raddress port On/Off Specifies whether to register read input 'rdaddress' port.
Output Registers q_a port On/Off

Specifies whether to register read output 'q_a' port.

This option is available if you select With two read/write ports

q_b port On/Off Specifies whether to register read output 'q_b' port.
Use different clock enables for registers On/Off Specifies whether to create clock enables for registers.
Use clock enable for write input registers On/Off

Specifies whether to create clock enables for input and output registers.

These options are available if you select With one read port and one write port.

Use clock enable for read input registers
Use clock enable for output registers
Use clock enable for port A input registers On/Off

Specifies whether to create clock enables for input and output registers of port A and port B.

These options are available if you select With two read /write ports.

Use clock enable for port A output registers
Use clock enable for port B input registers
Use clock enable for port B output registers

Create a 'wr_addressstall' input port.

On/Off

Specifies whether to create clock enables for address registers. You can create these ports to act as an extra active low clock enable input for the address registers.

These options are available if you select With one read port and one write port.

Create a 'rd_addressstall' input port.

Create an addressstall_a input port

On/Off

Specifies whether to create clock enables for address registers. You can create these ports to act as an extra active low clock enable input for the address registers.

These options are available if you select With two read/write ports.

Create an addressstall_b input port

Read Input Aclrs rdaddress port On/Off

Specifies whether to create an asynchronous clear port for the registered ports.

Specifies whether the 'rdaddress' port is cleared by the aclr port.

This option is available if you select With one read port and one write port.

Output Aclrs q_a port On/Off

Specifies whether to create an asynchronous clear port for the registered ports.

Specifies whether the 'q_a' port is cleared by the aclr port.

This option is available if you select With two read/write ports

q_b port On/Off

Specifies whether to create an asynchronous clear port for the registered ports.

Specifies whether the 'q_b' port is cleared by the aclr port.

Output Sclrs q_a port On/Off

Specifies whether to create a synchronous clear port for the registered ports.

Specifies whether the 'q_a' port is cleared by the sclr port.

This option is available if you select With two read/write ports

q_b port On/Off

Specifies whether to create a synchronous clear port for the registered ports.

Specifies whether the 'q_b' port is cleared by the sclr port.

Table 33.   RAM: 2-PORT FPGA IP Parameters—Mixed Port Read-During-Write Tab(This tab is only applicable if you select With one read port and one write ports)
Parameter Allowed Values Description

How should the q_a and q_b outputs behave when reading a memory location that is being written from the other port?

  • New Data
  • Old Data
  • Don't Care

Specifies the output behavior when read-during-write occurs.

  • New Data—new data is available on the rising edge of the same clock cycle on which it was written.
  • Old Data—the RAM outputs reflect the old data at that address before the write operation proceeds.
  • Don't Care—this option functions differently when you turn it on depending on the following memory block type you select:
    • If you set the memory block type to Auto, M20K, or any other block RAM, the RAM outputs 'don't care' or “unknown” values for read-during-write operation without analyzing the timing path.
    • If you set the memory block type to MLAB (for LUTRAM), the RAM outputs 'don't care' or 'unknown' values for read-during-write operation but analyzes the timing path to prevent metastability.
Table 34.   RAM: 2-PORT FPGA IP Parameters—Same Port Read-During-Write TabThis tab is only available if you select With two read/write ports
Parameter Allowed Values Description
What should the 'q_a' output be when reading from a memory location being written to?
  • New Data
  • Old Data

Specifies the output behavior when read-during-write occurs.

  • New Data—New data is available on the rising edge of the same clock cycle on which it was written.
  • Old Data—The RAM outputs reflect the old data at that address before the write operation proceeds.
What should the 'q_b' output be when reading from a memory location being written to?
Get x's for write masked bytes instead of old data when byte enable is used On/Off Turn on this option to obtain 'X' on the masked byte.
Table 35.   RAM: 2-PORT FPGA IP Parameters—Mem Init Tab
Parameter Allowed Values Description
Do you want to specify the initial content of the memory?
  • No, leave it blank
  • Yes, use this file for the memory content data

Specifies the initial content of the memory.

To initialize the memory to zero, select No, leave it blank.

To use a memory initialization file (.mif) or a hexadecimal (Altera-format) file (.hex), select Yes, use this file for the memory content data.

Initialize memory content data to XX..X on power-up in simulation On/Off
The initial content file should conform to which port's dimensions?
  • PORT_A
  • PORT_B
If you select to use the initial content file for memory content data, select the port the file should conform to.
Implement clock-enable circuitry for use in a partial reconfiguration region On/Off

Specifies whether to implement clock-enable circuitry for use in a partial reconfiguration region. Implement clock-enable circuitry for use in a partial reconfiguration region

Table 36.   RAM: 2-PORT FPGA IP Parameters—Performance Optimization Tab
Parameter Allowed Values Description
Parameter Settings:
Enable Force to Zero On/Off Specifies whether to set the output to zero when you deassert the read enable signal.

Enabling this feature helps improve the glue logic performance when the selected memory depth is larger than a single memory block.

Which timing/power optimization option do you want to use?
  • Auto
  • High Speed 9
  • Low Power
Specifies the timing or power optimization option to use. This option is only applicable when you select M20K memory type on Agilex™ 7 devices.
9 For Agilex™ 7 M-Series, only HIGH_SPEED option is available.