Block RAM Address Arithmetic for FPGA Routing Congestion

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Conventional Field Programmable Gate Array (FPGA) implementations face challenges in reducing routing congestion and power consumption due to the need to route multiple address lines to multiple embedded memory blocks, which also leads to critical timing delays.

Innovation Solution

Incorporating address arithmetic capabilities into block RAMs, allowing for incremental address handling within the RAMs, reducing the need for explicit address routing and enabling efficient access to wide memories and FIFOs with a single address bus, and facilitating burst access without explicit address supply.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Adaptability or versatility

If multiple address lines are routed to each block RAM in a group, then each block RAM can be individually addressed, but routing congestion increases and power consumption increases

Engineering Contradiction:
Improveindividual addressing capabilityVSAvoidrouting congestion
Core Design Contradiction:
Adaptability or versatilityVSDevice complexity

Solution Approach 1:

The patent merges the addressing function from multiple separate address lines into a single shared address bus. By combining individual addressing capabilities into a unified addressing scheme where a single address bus controls multiple block RAMs through decoding logic, the patent reduces routing congestion while maintaining the ability to individually address each block RAM in the group.

Inventive Principle:
Principle #5Merging (Combining)

Solution Approach 2:

The single shared address bus serves multiple functions by being able to address any block RAM in the group through decoding. The universal address bus can be configured to access different block RAMs based on the address value, providing multi-functionality without requiring separate dedicated address lines for each memory block.

Inventive Principle:
Principle #6Universality (Multi-functionality)

2Adaptability or versatility

If multiple address lines are routed to each block RAM in a group, then each block RAM can be individually addressed, but power consumption increases due to toggling

Engineering Contradiction:
Improveindividual addressing capabilityVSAvoidpower consumption
Core Design Contradiction:
Adaptability or versatilityVSUse of energy by moving object

Solution Approach 1:

The patent combines multiple address lines into a single shared address bus, reducing the total number of signal toggles. Instead of multiple address lines toggling simultaneously to reach different block RAMs, a single address bus carries the address information that is then decoded, significantly reducing dynamic power consumption from address line toggling.

Inventive Principle:
Principle #5Merging (Combining)

3Adaptability or versatility

If multiple address lines are routed to each block RAM in a group, then deeper address ports can be implemented, but critical timing delays increase

Engineering Contradiction:
Improveaddress port depthVSAvoidtiming delay
Core Design Contradiction:
Adaptability or versatilityVSLoss of time

Solution Approach 1:

The patent segments the addressing function into two parts: a shared address bus that carries the address information and local decoding logic within each block RAM group. This segmentation allows the address to be transmitted once on the shared bus and then locally decoded, eliminating the need for long routed address lines and reducing critical timing delays while maintaining deep address port capability.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS9367450B1Address arithmetic on block RAMs
Publication Date: 2016.06.14 TAHOE RES LTD
  • US9367450B1 patent drawing
  • US9367450B1 patent drawing
  • US9367450B1 patent drawing

AI summary

Systems and methods are disclosed for reducing or eliminating address lines that need to be routed to multiple related embedded memory blocks. In particular, one or more inputs are added to a block Random Access Memory (RAM) such that when one or more of the inputs are asserted, the address input to the Block RAM may be incremented prior to being used to retrieve data contents of the block RAM. Thus, if address <addr> is provided to the block RAM and the address increment signal is asserted, data may be read from location <addr+N> instead of <addr>, where N may be an integer. Block RAMs with such address arithmetic may be used to implement wide First-In-First-Out (FIFO) queues, wide memories, and/or data-burst accessible block RAMs.