IP Library Granted Patent US 10,656,915
Granted Patent B2
US 10,656,915 · App. 16/134,576 · Granted May 19, 2020

Efficient FPGA multipliers

Inventors: Daniel Pugh (Los Gatos, CA); Raymond Nijssen (San Jose, CA)
Assignee: Achronix Semiconductor Corporation
G06F7/533H03K19/17728
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 10,656,915
App. No.
16/134,576
Granted
May 19, 2020
Kind
B2
Abstract

In some example embodiments a logical block comprising twelve inputs and two six-input lookup tables (LUTs) is provided, wherein four of the twelve inputs are provided as inputs to both of the six-input lookup tables. This configuration supports efficient field programmable gate array (FPGA) implementation of multipliers. Each six-input LUT comprises two five-input lookup tables (LUT 5 s) that are used to form Booth encoding multiplier building blocks. The five inputs to each LUT 5 are two bits from a multiplier and three Booth-encoded bits from a multiplicand. By assembling building blocks, multipliers of arbitrary size may be formed.

Claims (101)

1. A circuit comprising:

a building block comprising:

twelve block inputs; and

two six-input lookup tables (LUTs), wherein four of the block inputs are provided to each of the two six-input LUTs and four of the twelve block inputs are provided as outputs of the building block without being provided as inputs to either of the two six-input LUTs.

2. The circuit of claim 1 , wherein:

three of the four block inputs that are provided to each of the two six-input LUTs are Booth-encoded bits from a multiplicand.

3. The circuit of claim 1 , wherein:

the building block is a first building block;

the first building block further comprises:

an adder that receives a carry input and generates a carry output;

the circuit further comprises one or more additional building blocks, each additional building block having the same structure as the first building block; and

the carry input of each additional building block is coupled to the carry output of another additional building block or the carry output of the first building block.

4. The circuit of claim 3 , wherein three Booth-encoded bits from a multiplicand are received as inputs to the first building block and each additional building block of the one or more additional building blocks.

5. The circuit of claim 3 , wherein:

the one or more additional building blocks are two additional building blocks comprising a second building block and a third building block; and

the first building block, the second building block, and the third building block are configured to form an eight-bit Booth multiplier building block that generates an eight-bit product output and a one-bit carry output; wherein

the third building block:

comprises a five-input LUT that generates a one-bit output; and

uses the one-bit output and the carry output from the second building block to generate the one-bit carry output and one bit of the eight-bit product output.

6. The circuit of claim 5 , wherein:

the eight-bit Booth multiplier building block is a first eight-bit Booth multiplier building block;

the circuit further comprises a second eight-bit Booth multiplier building block, a third eight-bit Booth multiplier building block, and a fourth eight-bit Booth multiplier building block;

the second eight-bit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the first eight-bit Booth multiplier building block; and

the one-bit carry output from the first eight-bit Booth multiplier building block;

the third eight-bit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the second eight-bit Booth multiplier building block; and

the one-bit carry output from the second eight-bit Booth multiplier building block;

the fourth eight-bit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the third eight-bit Booth multiplier building block; and

the one-bit carry output from the third eight-bit Booth multiplier building block; and

the circuit generates a multiplication result of an eight-bit multiplier with an eight-bit multiplicand.

7. The circuit of claim 1 , wherein the building block is configured to support multiplication of unsigned numbers.

8. The circuit of claim 1 , wherein the building block is configured to support multiplication of sign-magnitude numbers.

9. A machine-readable storage medium containing instructions that when executed by a machine, cause the machine to program a field programmable gate array (FPGA) to generate a circuit comprising:

a building block comprising:

twelve block inputs; and

two six-input lookup tables (LUTs), wherein four of the block inputs are provided to each of the two six-input LUTs and four of the twelve block inputs are provided as outputs of the building block without being provided as inputs to either of the two six-input LUTs.

10. The machine-readable storage medium of claim 9 , wherein:

three of the four block inputs that are provided to each of the two six-input LUTs are Booth-encoded bits from a multiplicand.

11. The machine-readable storage medium of claim 9 , wherein:

the building block is a first building block;

the first building block further comprises:

an adder that receives a carry input and generates a carry output;

the circuit further comprises one or more additional building blocks, each additional building block having the same structure as the first building block; and

the carry input of each additional building block is coupled to the carry output of another additional building block or the carry output of the first building block.

12. The machine-readable storage medium of claim 11 , wherein three Booth-encoded bits from a multiplicand are received as inputs to the first building block and each additional building block of the one or more additional building blocks.

13. The machine-readable storage medium of claim 11 , wherein:

the one or more additional building blocks are two additional building blocks comprising a second building block and a third building block; and

the first building block, the second building block, and the third building block are configured to form an eight-bit Booth multiplier building block that generates an eight-bit product output and a one-bit carry output; wherein

the third building block:

comprises a five-input LUT that generates a one-bit output; and

uses the one-bit output and the carry output from the second building block to generate the one-bit carry output and one bit of the eight-bit product output.

14. The machine-readable storage medium of claim 13 , wherein:

the eight-bit Booth multiplier building block is a first eight-bit Booth multiplier building block;

the circuit further comprises a second eight-hit Booth multiplier building block, a third eight-bit Booth multiplier building block, and a fourth eight-bit Booth multiplier building block;

the second eight-bit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the first eight-bit Booth multiplier building block; and

the one-bit carry output from the first eight-bit Booth multiplier building block;

the third eight-hit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the second eight-bit Booth multiplier building block; and

the one-bit carry output from the second eight-bit Booth multiplier building block;

the fourth eight-bit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the third eight-bit Booth multiplier building block; and

the one-bit carry output from the third eight-bit Booth multiplier building block; and

the circuit generates a multiplication result f an eight-hit multiplier with an eight-bit multiplicand.

15. A system comprising:

a memory that stores instructions; and

one or more processors configured by the instructions to perform operations comprising:

programming a field programmable gate array (FPGA) to generate a circuit comprising:

a building block comprising:

twelve block inputs; and

two six-input lookup tables (LUTs), wherein four of the block inputs are provided to each of the two six-input LUTs and four of the twelve block inputs are provided as outputs of the building block without being provided as inputs to either of the two six-input LUTs.

16. The system of claim 15 , wherein:

three of the four block inputs that are provided to each of the two six-input LUTs are Booth-encoded bits from a multiplicand.

17. The system of claim 15 , wherein:

the building block is a first building block;

the first building block further comprises:

an adder that receives a carry input and generates a carry output;

the circuit further comprises one or more additional building blocks, each additional building block having the same structure as the first building block; and

the carry input of each additional building block is coupled to the carry output of another additional building block or the carry output of the first building block.

18. The system of claim 17 , wherein three Booth-encoded bits from a multiplicand are received as inputs to the first building block and each additional building block of the one or more additional building blocks.

19. The system of claim 17 , wherein:

the one or more additional building blocks are two additional building blocks comprising a second building block and a third building block; and

the first building block, the second building block, and the third building block are configured to form an eight-bit Booth multiplier building block that generates an eight-bit product output and a one-bit carry output; wherein

the third building block:

comprises a five-input LUT that generates a one-bit output; and

uses the one-bit output and the carry output from the second building block to generate the one-bit carry output and one bit of the eight-bit product output.

20. The system of claim 19 , wherein:

the eight-bit Booth multiplier building block is a first eight-hit Booth multiplier building block;

the circuit further comprises a second eight-bit Booth multiplier building block, a third eight-bit Booth multiplier building block, and a fourth eight-bit Booth multiplier building block;

the second eight-bit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the first eight-bit Booth multiplier building block; and

the one-bit carry output from the first eight-bit Booth multiplier building block;

the third eight-hit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the second eight-bit Booth multiplier building block; and

the one-bit carry output from the second eight-bit Booth multiplier building block;

the fourth eight-bit Booth multiplier building block receives input comprising:

six bits of the eight-bit product output from the third eight-bit Booth multiplier building block; and

the one-bit carry output from the third eight-bit Booth multiplier building block; and

the circuit generates a multiplication result of an eight-bit multiplier with an eight-bit multiplicand.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Nov 24, 2020
From: HERCULES CAPITAL, INC., AS AGENT
To: ACHRONIX SEMICONDUCTOR CORPORATION
Reel/Frame 054461/0220 →
SECURITY INTEREST Recorded Mar 16, 2020
From: ACHRONIX SEMICONDUCTOR CORPORATION
To: HERCULES CAPITAL, INC., AS AGENT
Reel/Frame 052121/0505 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Sep 18, 2018
From: PUGH, DANIEL; NIJSSEN, RAYMOND
To: ACHRONIX SEMICONDUCTOR CORPORATION
Reel/Frame 046903/0217 →
Continuity (2)
Provisional Application 62697847 · Jul 13, 2018
Related Publication 20200019375A1 · Jan 16, 2020