Main Tab - 2.4 English - PG318

Ternary CAM Search LogiCORE IP Product Guide (PG318)

Document ID
PG318
Release Date
2022-11-08
Version
2.4 English
Lookup Mode
Options available in this pull-down menu are: BCAM, STCAM, and TCAM. Depending on the option selected, the configuration parameters available will change.
BCAM
Selects the Binary Content Addressable Memory. Figure 1 shows the configuration parameters when BCAM is selected. Refer to Binary CAM Search LogiCORE IP Product Guide (PG317).
STCAM
Selects the Semi-Ternary Content Addressable Memory. Figure 2 shows the configuration parameters when STCAM is selected. Refer to Semi-Ternary CAM Search LogiCORE IP Product Guide (PG319).
TCAM
Selects the Ternary Content Addressable Memory. Figure 3 shows the configuration parameters when TCAM is selected. TCAM is described in this document.
Figure 1. BCAM Configuration Parameters
Figure 2. STCAM Configuration Parameters
Figure 3. TCAM Configuration Parameters
NUM_ENTRIES
The supported number of entries (depth). The number of entries is limited by the number of RAM instances used:
RAM_FREQ <= 480 MHz
480 BRAM or 320 URAM
RAM_FREQ > 480 MHz:
320 BRAM or 160 URAM
Note: (BCAM only) NUM_ENTRIES represent number of usable entries. When targeting a certain memory depth for a BCAM, specify 95% of the target. For example, to get a BCAM with memory of depth 4K, specify NUM_ENTRIES = 0.95 x 4096 = 3891.
KEY_WIDTH
The width of the lookup key.
Note: This parameter is only available for BCAM and STCAM.
FORMAT_STRING
Note: This parameter is only available for TCAM. See Designing with the Core in Ternary CAM Search LogiCORE IP Product Guide (PG318) for details.
RESPONSE_WIDTH
The width of the lookup response.
DEFAULT_RESPONSE_VALUE
Specify the Default Response value when Lookup has no match. Valid range is between 1 to 1024 bits specified in Hex. The value is set to zero by default.
NUM_MASKS
The number of unique masks. The Vivado CAM compiler generates a STCAM supporting both the specified number of unique masks and the specified number of entries at the same time.
Note: This parameter is only available for STCAM.
PRIORITY_WIDTH
Note: This parameter is only available for STCAM and TCAM.
The priority is usually defined wide enough to support one unique priority value per entry. The width can be larger to facilitate easier STCAM and TCAM management or narrower if entries are order independent and guaranteed not to overlap.
AUTO
When this check box is selected, the Vivado CAM compiler automatically calculates the appropriate value for PRIORITY_WIDTH based on NUM_ENTRIES for TCAM, and NUM_MASKS for STCAM. You can override this by deselecting this check box and specifying the appropriate value.

For STCAM, the PRIORITY_WIDTH is calculated to accommodate NUM_MASKS different priorities and for TCAM it is calculated to accommodate NUM_ENTRIES different priorities.

TEST_FEATURE
This is a test feature and should be left at the default value of zero.
Note: This parameter is only available for BCAM.
LOOKUP_RATE
This is the supported lookup rate of the CAM instance (expressed in million searches per second). In order to save resources it is important not to set the lookup rate higher than required.
LOOKUP_INTERFACE_FREQ
This is the clock frequency for the Lookup Request and Response Interfaces, specified in MHz.
FLOW_CONTROL
Enable flow control for the lookup interface output. Flow control adds extra FIFOs for SINGLE_CLOCK mode, so the lookups can be stopped. Flow control is not needed if the m_axis_lkup_tready port always is high when the lookup response arrives.
CLOCKING_MODE
Options available in this pull-down menu are: SINGLE CLOCK and DUAL CLOCK. When SINGLE CLOCK is selected the configuration parameter RAM_FREQ is not available.
RAM_FREQ
This is the clock frequency for the memories (block RAM/URAM) and the internal datapath, specified in MHz. Specifying a higher frequency RAM clock enables time division of the hardware resources, leading to significant resource savings. This configuration parameter is only available when CLOCKING_MODE = DUAL CLOCK is selected.
Note: When CLOCKING_MODE = SINGLE CLOCK, RAM_FREQ = LOOKUP_INTERFACE_FREQ.
MEMORY_PRIMITIVE
Options available in this pull-down menu are: AUTO, BLOCK, and ULTRA.
AUTO
The Vivado CAM compiler will select the best suited memory type, either being block RAM or URAM, automatically. The respective block RAM/URAM resource usage is shown in the "CAM Configuration Information" section of the GUI.
BLOCK
You specify the memory primitive to be block RAM. The block RAM resource usage is shown in the "CAM Configuration Information" section of the GUI.
ULTRA
You specify the memory primitive to be URAM. The URAM resource usage is shown in the "CAM Configuration Information" section of the GUI.
OPTIMIZATION
Options available in this pull-down menu are: AUTO, RAM, and LOGIC. The logic usage is proportional to the number of Physical Memory Units. The RAM usage and number of Memory Units are shown in the CAM Configuration Information section of the GUI:
AUTO
The Vivado CAM generator will balance the usage of logic and RAM resources.
RAM
Use this option to reduce RAM usage at a potentially higher logic usage.
LOGIC
Use this option to reduce logic usage at a potentially higher RAM usage.
OPTIMIZE_ENTRIES
When this check box is selected, use the available memory to insert entries beyond the specified NUM_ENTRIES limit. A side effect for STCAM is that the specified NUM_MASKS value is no longer guaranteed but is ‘up to’ instead. Refer to the row BRAM36/URAM Utilization in the Figure 4 table for resulting values based on this selection.
Note: This parameter is only available for BCAM and STCAM.
OPTIMIZE_MASKS
When this check box is selected, use the available memory to insert more masks than the specified NUM_MASKS limit. A side effect of this is that the specified NUM_ENTRIES value is no longer guaranteed but ‘up to’ instead. Refer to the rows BRAM36/URAM Utilization and Number of Masks in the Figure 4 table for resulting values based on this selection.
Note: This parameter is only available for STCAM.
LOGICAL_MEM_UNITS
Force Number of Logical Memory Units, the value will be rounded up to a multiple of the TDM_FACTOR. This is an Advanced Feature and it is recommended to use the AUTO selection.
AUTO
When this check box is selected, the Vivado CAM compiler automatically calculates the appropriate value for LOGICAL_MEM_UNITS. You can override this by deselecting the check box and specifying the appropriate value.
PBLOCK
Enable floor planning placement block (Pblock). Floor planning can improve timing for large CAM instances clocked at high frequency.
Note: The overall chip planning is not automatic, you must provide a legal Pblock location with the necessary block RAM/URAM resources.
ORIGIN_X
X-coordinate to the lower left corner of the Pblock (in clock regions).
ORIGIN_Y
Y-coordinate to the lower left corner of the Pblock (in clock regions).
STATISTICS
Enable support for hardware statistics for rate counters and lookup debug.
CAM Configuration Information
This table provides interactive information based on the configuration parameter values entered. It allows a quick way to converge on the required CAM settings for the design needs. The information provided is shown in the following figure.
Figure 4. CAM Configuration Information
Memory Depth
The depth of the resulting memory based on the value of configuration parameter NUM_ENTRIES.
Memory Width
The width of the resulting memory based on configuration parameter values entered. The contributing composition of the individual components (which vary depending on the Lookup Mode selected) to the width is also provided. For example, the unused component (if not zero) indicates to the user that the other component sizes can be increased with no additional memory resource penalty.
BRAM36/URAM Utilization
The memory utilization efficiency.
BRAM36 Usage
The number of resulting BRAM36s used to implement the required memory size. A value of 0 indicates no BRAM36s are used.
URAM Usage
The number of resulting URAMs used to implement the required memory size. A value of 0 indicates no URAMs are used.
Memory Units
Each Physical Memory Units requires logic resources. The number of Physical Memory Units can be used to compare relative logic resource cost between different configurations.
Lookup Latency
The lookup latency value indicated in multiples of the LOOKUP_INTERFACE_FREQ clock cycles.
Lookup Interface Frequency
The LOOKUP_INTERFACE_FREQ frequency and the number of lookups occurring per LOOKUP_INTERFACE_FREQ clock cycle.
RAM Clock Frequency
The RAM_FREQ frequency (note when CLOCKING_MODE = SINGLE CLOCK, RAM_FREQ = LOOKUP_INTERFACE_FREQ). And the way the memory bandwidth is split between Lookup Requests and Management Requests.
TDM Factor
The time division multiplexing of hardware resources. The value indicated describes the number of memory accesses per Lookup Request. When the value is indicated as “capped” then a lower RAM_FREQ can be chosen without additional memory resource penalty.
Number of Masks
Displays the number of masks used for STCAM only.
Debug Flags
The debug flags can be enabled or disabled via selection of the tick-boxes as shown in the following figure, thus enabling /disabling the respective debug functions. The debug functions are controlled via the DEBUG_FLAGS parameter, a 32-bit integer, whose value is also shown in grey specified as "Debug Flags Value." Details of what each debug function does can be found in the Debugging section.
Figure 5. Debug Flags
Note: During HDL simulation the DEBUG_FLAGS parameter can be modified dynamically as required. Debug flags can also be enabled using Verilog macros in the simulation. For example, +define+CAM_DEBUG_HW_LOOKUP.