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:
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.
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.
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 |