Resource Time Sharing - 2.6 English

Binary CAM Search v2.6 LogiCORE IP Product Guide (PG317)

Document ID
PG317
Release Date
2023-11-01
Version
2.6 English

The CAM Database is designed to run at a clock frequency of up to 600 MHz and process one Lookup Request every clock cycle. A search operation requires a minimum of four RAM accesses. The RAM accesses can be performed in parallel using multiple RAM instances, sequentially by performing multiple accesses in the same RAM, or by a combination of both parallel and sequential access. For example if the RAM Frequency is 600 MHz and the Lookup rate is 300M Lookups per second, two accesses can be performed using the same RAM.

The possible amount of time sharing of the RAM is calculated using integer division:

TDM_FACTOR = RAM_FREQ / LOOKUP_RATE

The TDM_FACTOR is rounded down to the nearest power of two and capped at four. The following values are allowed: 1, 2, and 4.

The CAM depth also determines how much time sharing is necessary, as detailed in the following table.

Table 1. TDM_FACTOR calculations
NUM_ENTRIES [BRAM/URAM] LOOKUP_RATE [Mlps] RAM_CLOCK [MHz] TDM_FACTOR
973/7783 Up to 150 Minimum 4 x LOOKUP_RATE 4
2919/23348 Up to 300 Minimum 2 x LOOKUP_RATE 2
Up to 1M Up to 600 LOOKUP_IF_FREQ 1
Lookup rates above 300 Mlps
Time sharing of the RAM is not possible because it would require a RAM_FREQ higher than the maximum supported 600 MHz.
Lookup rates up to 300 Mlps and NUM_ENTRIES up to 2919/23348 [BRAM/URAM]
It is beneficial to perform sequential lookups in the same RAM to save hardware logic resources using TDM_FACTOR 2 or 4.
NUM_ENTRIES larger than 2919/23348 [BRAM/URAM]
Time sharing is not required to provide the minimum required four RAM accesses.
Table 2. Clock Configuration Examples
Ethernet Speed Lookup Rate [Mlps] Lookup Interface Frequency [MHz] RAM clock frequency [MHz] Clocking Mode TDM Factor
10G 15 15 15 SINGLE_CLOCK 1
10G 15 30 30 SINGLE_CLOCK 2
10G 15 30 60 DUAL_CLOCK 4
100G 150 150 150 SINGLE_CLOCK 1
100G 150 300 300 SINGLE_CLOCK 2
100G 150 300 600 DUAL_CLOCK 4
400G 600 600 600 SINGLE_CLOCK 1