- 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 the Binary CAM Search LogiCORE IP Product Guide (PG317) (Registration required).
- STCAM
- Selects the Semi-Ternary Content Addressable Memory. Figure 2 shows the configuration parameters when STCAM is selected. STCAM is described in this document.
- TCAM
- Selects the Ternary Content Addressable Memory. Figure 3 shows the configuration parameters when TCAM is selected. Refer to the Ternary CAM Search LogiCORE IP Product Guide (PG318) (Registration required).
Figure 1. BCAM Configuration Parameters
Figure 2. STCAM Configuration Parameters
Figure 3. TCAM Configuration Parameters
- 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
- User specifies the memory primitive to be block RAM. The block RAM resource usage is shown in the "CAM Configuration Information" section of the GUI.
- ULTRA
- User specifies the memory primitive to be URAM. The URAM resource usage is shown in the "CAM Configuration Information" section of the GUI.
- 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
- 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.
- 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.The format string describes the format of all keys and masks. A key consists of several fields and the format string specifies the location and size of the fields. In the format string, fields are separated by a colon ':'. The format string is read left to right. The first field corresponds to the least significant bit of the key. The key is specified as little-endian. Each field is specified with a field length and field type. There are no alignment restrictions for the fields. The location, type, number, and size of fields is fully flexible. The following field types and lengths are supported:
- b - bit field
- The field mask is either all zeroes or all ones; field_len = 1..128 bit, complexity = 2
- t - ternary field
- The field mask can have any value; field_len = 2..16 bit, complexity = 2^field_len
- c - constant bit field
- The mask is all ones; field_len = 1..128 bit, complexity = 1
- u - unused bit field
- The mask is all zeroes; field_len = 1..128 bit, complexity = 1
- p - prefix field
- The mask has a pattern of consecutive zeroes and ones; field_len = 1..128 bit, complexity = field_len + 1
- r - range field
- Matching is performed with logic comparators within start/end values
- RESPONSE_WIDTH
- The width of the lookup response.
- DEFAULT_RESPONSE_VALUE
- Specify the Default Response value when Lookup has no match. Valid range between 1 to 1024 bits specified in Hex. The value is set to zero by default.
- 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.
- 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.
- PRIORITY_WIDTH
-
Note: This parameter is only available for STCAM and TCAMThe 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 accomodate NUM_MASKS different priorities and for TCAM it is calculated to accomodate NUM_ENTRIES different priorities.
- LOOKUP_RATE
- This is the supported lookup rate of the CAM instance (expressed in million lookups per second). In order to save resources it is important not to set the lookup rate higher than required.
- 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. - LOOKUP_INTERFACE_FREQ
- This is the clock frequency for the Lookup Request and Response Interfaces, specified in MHz.
- 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: Note when CLOCKING_MODE = SINGLE CLOCK, RAM_FREQ = LOOKUP_INTERFACE_FREQ. - 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 perLOOKUP_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
values can be modified
dynamically as required.