Embedded Memory User Guide: Agilex™ 5 FPGAs and SoCs

ID 813901
Date 11/04/2024
Public
Document Table of Contents

4.1.3. RAM: 2-PORT Intel® FPGA IP Parameters

This table lists the parameters for the RAM: 2-PORT Intel® FPGA IP.
Table 25.  RAM: 2-PORT Intel® FPGA IP Parameter Settings
Parameter Legal Values Description
Parameter Settings: General
How will you be using the dual port RAM?

Operation mode:

  • With one read port and one write port
  • With two read/write ports
Specifies how you use the dual port RAM.
How do you want to specify the memory size?

Type:

  • As a number of words
  • As a number of bits
Determines whether to specify the memory size in words or bits.
Parameter Settings: Widths/Blk Type
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.
When you select With one read port and one write port or With two read/write ports, the following options are available:
  • How wide should the ‘q_a’ output bus be?
  • How wide should the ‘data_a’ input bus be?
  • How wide should the ‘q_b’ output bus be?
Specifies the width of the input and output ports.
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.
Parameter Settings: Clks/Rd, Byte En
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.
When you select With two read/write ports and Customize clocks for A and B ports clocking method, the following option is available:

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.
When you select With one read port and one write port, the following option is available:

Create a ‘rden’ read enable signal

On/Off Specifies whether to create a read enable signal for port B.
When you select With two read/write ports, the following option is available:

Create a ‘rden_a’ and ‘rden_b’ read enable signals

Specifies whether to create a read enable signal for port A and B.
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?

  • MLAB/M20K: 5, 8, 9, or 10
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.
Parameter Settings: Regs/Clkens/Aclrs/Sclrs
Which ports should be registered?

When you select With one read port and one write port, the following options are available:

  • All write input ports
  • raddress port
  • q_b port

When you select With two read/write ports, the following options are available:

  • All write input ports
  • raddress port
  • q_a port
  • q_b port
On/Off Specifies whether to register the read or write input and output ports.

Clock Enables

When you select With one read port and one write port, the following option is available:

  • Use different clock enables for registers
  • Use clock enable for write input registers
  • Use clock enable for read input registers
  • Use clock enable for output registers

When you select With two read /write ports, the following options are available:

  • Use different clock enables for registers
  • Use clock enable for port A input registers
  • Use clock enable for port A output registers
  • Use clock enable for port B input registers
  • Use clock enable for port B output registers
On/Off Specifies whether to create clock enables for read and write registers.

Addressstalls

When you select With one read port and one write port, the following option is available:

  • Create a ‘wr_addressstall’ input port.
  • Create a ‘rd_addressstall’ input port.

When you select With two read /write ports, the following option is available:

  • Create an addressstall_a input port
  • Create an addressstall_b 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.

Aclr Options

When you select With one read port and one write port, the following option is available:

  • rdaddress port
  • q_b port

When you select With two read /write ports, the following options are available:

  • q_a port
  • q_b port
On/Off

Specifies whether to create an asynchronous clear port for the registered ports. Specifies whether the ‘rdaddress‘, ‘q_a’ and ‘q_b’ ports are cleared by the aclr port.

Sclr Options

When you select With one read port and one write port, the following option is available:

  • rdaddress port
  • q_b port

When you select With two read/write ports, the following options are available:

  • q_a port
  • q_b port
On/Off Specifies whether to create a synchronous clear port for the registered ports. Specifies whether the ‘rdaddress‘, ‘q_a’, and ‘q_b’ ports are cleared by the sclr port.
Parameter Settings: Mixed Port Read-During-Write

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 next 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:
    • When 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.
    • When 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.
Parameter Settings: Same Port Read-During-Write (This tab is only available when you select With two read/write ports)
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.
Parameter Settings: Mem Init
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

Parameter Settings: Performance Optimization
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
  • Low Power
Specifies the timing or power optimization option to use. This option is only applicable when you select M20K memory type on Agilex™ 5 devices.