IP Library Granted Patent US 9,754,061
Granted Patent B2
US 9,754,061 · App. 15/110,064 · Granted Sep 5, 2017

Method and device for programming a FPGA

Inventors: Olivier Sentieys (Louannec, FR); Sébastien Pillement (Nantes, FR); Christophe Huriaux (Lannion, FR); Antoine Courtay (Plouigneau, FR)
Assignees: UNIVERSITE DE RENNES 1; INRIA
G06F17/5054G06F15/7871G06F17/5045G06F17/5072G06F17/5077
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 9,754,061
App. No.
15/110,064
Granted
Sep 5, 2017
Kind
B2
Abstract

A method of programming a FPGA, wherein the FPGA comprises an array of macrocells, each comprising at least a configurable hardware block and a configurable interconnection network, the method comprises the steps of: providing a high-level configuration file containing: first data defining a set of macrocells and their relative positions; second data defining a configuration of the hardware blocks of the macrocells; and third data defining interconnections between the macrocells; wherein said high-level configuration file contains neither data defining an absolute position of the macrocells within the FPGA, nor local routing information fully defining a configuration of their interconnection networks; converting said high-level configuration file into a bitstream file; and uploading the bitstream file into the FPGA. A semiconductor chip comprising a FPGA and a device configured for programming the FPGA are provided.

Claims (57)

1. A method of programming a FPGA, wherein said FPGA comprises an array of macrocells, each comprising at least a configurable hardware block and a configurable interconnection network, the method comprising the steps of:

a) providing a high-level configuration file containing:

first data defining a set of macrocells and their relative positions;

second data defining a configuration of the hardware blocks of said macrocells; and

third data defining interconnections between said macrocells;

wherein said high-level configuration file contains neither data defining an absolute position of said macrocells within the FPGA, nor local routing information fully defining a configuration of their interconnection networks;

b) converting said high-level configuration file into a bitstream file; and

c) uploading said bitstream file into the FPGA.

2. The method of claim 1 , wherein each said interconnection network comprises a set of ports connected to respective ports of the interconnection networks and hardware blocks of adjacent macrocells, of hardware blocks or block of the same macrocell and/or to input/output blocks of the FPGA, and a set of switches for performing said local routing, and wherein said third data of the high-level configuration file include a description of the connections between the ports of each said interconnection network, but not of the statuses of said switches.

3. The method of claim 1 wherein said step b) comprises:

b1) using at least said first data of said high-level configuration file for determining the absolute positions of said macrocells within said FPGA;

b2) using at least said third data of said high-level configuration file for determining the local routing information fully defining a configuration of the interconnection networks of said macrocells; and

b3) generating said bitstream file, containing information defining said absolute positions, said second data of said high-level configuration file and said local routing information, a format of said bitstream file being dependent on an architecture of said FPGA.

4. The method of claim 1 , wherein said high-level configuration file comprises a list of all the macrocells belonging to a rectangular sub-array of said FPGA and, for each said macrocell:

its relative position within said sub-array;

data defining a configuration of its hardware block or blocks; and

a list of pairs of ports of its interconnection network or networks.

5. The method of claim 1 , wherein said high-level configuration file comprises a list of all the macrocells belonging to a rectangular sub-array of said FPGA and, for each said macrocell:

its relative position within said sub-array;

data defining a configuration of its hardware block or blocks;

a list of ports of its interconnection network or networks, called input ports and, for each said input port: either a list of ports of the same interconnection network, called output ports, to which said input port is to be connected or, if said input port is not to be connected to any output port, a pointer to a successive output port which is to be connected to at least one output port.

6. The method of claim 1 , wherein said high-level configuration file comprises a list of columns of a sub-array of said FPGA; for each said column, either a list of macrocells to be configured belonging to said column and to different rows or, if said column contains no such macrocell, a pointer to a successive column containing at least one such macrocell; for each said macrocell,

an identifier of the row to which it belongs;

data defining a configuration of its hardware block or blocks;

a list of ports of its interconnection network or networks, called input port and, for each said input port: either a list of ports of the same interconnection network, called output ports, to which said input port is to be connected or, if said input port is not to be connected to any output port, a pointer to a successive output port which is to be connected to at least one output port.

7. The method of claim 1 wherein:

step a) comprises downloading said high-level configuration file from an external memory and uploading it into a local memory;

step b) comprises downloading said high-level configuration file from said local memory, converting it into said bitstream file, and uploading said bitstream file into said or another local memory; and

step c) comprises downloading said bitstream file from said local memory and uploading it at a predetermined location of a configuration memory of said FPGA.

8. The method of claim 1 , wherein said step b) comprises the following operations:

b-i) extracting from said high-level configuration file a list of connections between ports of the interconnection network or networks of each said macrocell;

b-ii) for each connection of said list, determining a local route of the corresponding interconnection network suitable for implementing said connection; and

b-iii) checking said local route for conflicts with existing routes;

said operations b-ii) and b-iii) being repeated until a route with no conflict is found or all possible routes have been tested.

9. The method of claim 1 , further comprising a preliminary step of verifying that said high-level configuration file is such that said step b) can be carried out successfully for a given FPGA architecture.

10. The method of claim 1 wherein said high-level configuration file is associated to at least one hardware task, to be implemented by said set of macrocells, and wherein said step c) realizes partial reconfiguration of said FPGA.

11. A device for programming a FPGA, wherein said FPGA comprises an array of macrocells, each comprising at least a configurable hardware block and a configurable interconnection network, the device comprising:

at least one de-virtualizing module, configured for converting a high-level configuration file into a bitstream file whose format depends on the architecture of the FPGA; and

at least one logic mapping module, configured for uploading a said bitstream file at a predetermined location of a configuration memory of the FPGA;

wherein said high-level configuration file contains:

first data defining a set of macrocells and their relative positions;

second data defining a configuration of the hardware blocks of said macrocells; and

third data defining interconnections between said macrocells;

and it contains neither data defining an absolute position of said macrocells within the FPGA, nor local routing information fully defining a configuration of their interconnection networks.

12. The device of claim 11 further comprising:

at least one fetching module, configured for downloading a said high-level configuration file from an external memory and uploading it into a local memory; wherein

said or at least one said de-virtualizing module is configured for downloading a said high-level configuration file from said local memory, converting it into a bitstream file whose format depends on the architecture of the FPGA, and uploading said bitstream file into said or another local memory; and

said or at least one said logic mapping module is configured for downloading a said bitstream file from a said local memory and uploading it at a predetermined location of a configuration memory of the FPGA.

13. The device of claim 11 , comprising a plurality of said de-virtualizing modules, the device being configured for: splitting a said high-level configuration files into sections, each containing data relative to a subset of macrocells; providing different sections to different de-virtualizing modules; and merging partial bitstream files generated by said de-virtualizing modules into a unique bitstream file.

14. The device of claim 11 comprising a plurality of processing units, each comprising at least one de-virtualizing module and being configured for operating in parallel to convert respective high-level configuration files into respective bitstream files.

15. A semiconductor chip comprising a FPGA and a device for programming said FPGA, wherein the FPGA comprises an array of macrocells, each comprising at least a configurable hardware block and a configurable interconnection network, and the device comprises:

at least one de-virtualizing module, configured for converting a high-level configuration file into a bitstream file whose format depends on the architecture of the FPGA; and

at least one logic mapping module, configured for uploading a said bitstream file at a predetermined location of a configuration memory of the FPGA; wherein said high-level configuration file contains

first data defining a set of macrocells and their relative positions;

second data defining a configuration of the hardware blocks of said macrocells; and

third data defining interconnections between said macrocells;

and it contains neither data defining an absolute position of said macrocells within the FPGA, nor local routing information fully defining a configuration of their interconnection networks.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 7, 2017
From: SENTIEYS, OLIVIER; PILLEMENT, SÉBASTIEN; HURIAUX, CHRISTOPHE; COURTAY, ANTOINE
To: UNIVERSITE DE RENNES 1; INRIA
Reel/Frame 041489/0758 →
Priority Claims (2)
EP 14150599 · Jan 9, 2014 · regional
EP 14305143 · Jan 31, 2014 · regional
Continuity (1)
Related Publication 20160342722A1 · Nov 24, 2016