HIGH SPEED FPGA BOOT-UP THROUGH CONCURRENT MULTI-FRAME CONFIGURATION SCHEME
Systems and methods are provided herein for implementing a programmable integrated circuit device that enables high-speed FPGA boot-up through a significant reduction of configuration time. By enabling high-speed FPGA boot-up, the programmable integrated circuit device will be able to accommodate applications that require faster boot-up time than conventional programmable integrated circuit devices are able to accommodate. In order to enable high-speed boot-up, dedicated address registers are implemented for each data line segment of a data line, which in turn significantly reduces configuration random access memory (CRAM) write time (e.g., by a factor of at least two).
This application is a Continuation of U.S. patent application Ser. No. 15/197,356, entitled “High Speed FPGA Boot-Up Through Concurrent Multi-Frame Configuration Scheme”, filed on Jun. 29, 2016, which claims priority to U.S. patent application Ser. No. 14/685,098, entitled “High Speed FPGA Boot-Up Through Concurrent Multi-Frame Configuration Scheme”, filed on Apr. 13, 2015. Both of these applications are herein incorporated by reference in its entirety and for all purposes.
BACKGROUNDIntegrated circuit devices such as field programmable gate array (FPGA) devices are known to suffer bottlenecks that prevent high-speed boot-up by causing less than optimal configuration random access memory (CRAM) programming time. Accordingly, applications that require boot-up time that is faster than a programming time offered in a programmable integrated circuit device, such as an FPGA device, cannot be implemented in such a device. Typically, these bottlenecks are formed because configuration time is not scalable in conventional programmable integrated circuit devices, and therefore, the larger the device required to run an application, the larger the configuration time per data frame becomes. For example, as FPGA designs are scaled larger, data lines and address lines become larger, thus requiring more time to be configured.
SUMMARYSystems and methods are provided herein for implementing a programmable integrated circuit device that enables high-speed FPGA boot-up through a significant reduction of configuration time. By enabling high-speed FPGA boot-up, the programmable integrated circuit device is able to accommodate applications that require faster boot-up time than conventional programmable integrated circuit devices are able to accommodate.
In order to enable high-speed boot-up, dedicated address registers are implemented for each data line segment of a data line, which in turn significantly reduces configuration random access memory (CRAM) write time (e.g., by a factor of at least two).
Further features of the invention, its nature and various advantages will be apparent upon consideration of the following detailed description, taken in conjunction with the accompanying drawings, in which like reference characters refer to like parts throughout, and in which:
As described above, data transfer and CRAM programming may happen in parallel. Accordingly, the time to program each data frame may be described as the maximum time of (1) the amount of time it takes to transfer data from the configuration source 102 to data register 104, or (2) the amount of time it takes to both propagate data from data register 104 to data line segments 106 and write data into CRAM 110. This amount of time may be alternatively stated as follows:
Tprog(conv)=max(a,(b+c)).
As described above, data transfer and CRAM programming may happen in parallel. Accordingly, with respect to
More recently, programmable integrated circuit devices such as FPGAs have incorporated embedded system-on-chip circuitry, which is able to help speed up the duration of time required to transfer data from configuration source 102 to data register 104 rather easily by using wider data bandwidth. This has not solved the bottleneck described above, which is the time it takes to propagate data from data register 104 through data line segments 106, as well as the enabling and disabling of address register 108 in order to write data to CRAM 110. In order to reduce programmable integrated circuit device (e.g., FPGA) boot-up time even further (e.g., by a factor of at least two times or more), while minimally impacting the amount of chip area that would have to be devoted to the components of the programmable integrated circuit device, dedicated address registers may be assigned for each data line segment, as will be discussed below with respect to
By way of the steps described above with respect to
According to the above description, the process of programming the data stream from configuration source 402 to CRAM 410 may be described as follows. First, data register 404 is filled with a configuration bit stream of data from configuration source 402. Next, data of the configuration bit stream (i.e., CRAM values) are shifted from data register 404 to adjacent pipeline registers of data line segments 406 until the data reaches the furthest data line segment 406. In parallel with this process, data corresponding to a next data frame will continue to fill up data register 404 from configuration source 402.
Following this process, when all pipeline columns 412 of a data line segment 406-n are full with each respective CRAM value, respective address line 408-n will be enabled to write the data into the respective CRAM 410-n. In this manner, multiple data frames are written to CRAM 410 concurrently (i.e., by writing one data frame per data line segment 406 concurrently), thus reducing configuration time (with respect to the configuration time required in known devices).
Accordingly, with respect to
A “saving factor” may also be described with reference to the improved activity described in
where N is again the number of data line segments implemented. This further exemplifies that the system described with reference to
As described above and below, the scheme of
The scheme of
At 608, new data is transmitted from the configurable source (e.g., configurable source 402) to the data register (e.g., data register 404) as the data register pipelines the data through each data line segment. In this manner, data is able to be written to CRAM 410 in parallel to configuration source 402 populating data register 404 with new data. At 610, the data is written into respective CRAM of each respective data line segments by way of corresponding address registers 408. In some implementations, address registers 408 correspond one-to-one to data line segments 406, such that each data line segment 406 has an individual address register 408 for the purpose of writing data to CRAM 410 of the particular data line segment.
It should be understood that one or more elements (such as elements 602, 604, 606, 608, and/or 610) shown in flow diagram 600 may be combined with other elements, performed in any suitable order, performed in parallel (e.g., simultaneously or substantially simultaneously), or removed. For example, elements 606 and 608 of flow diagram 600 may be performed simultaneously, or in a different order than shown in
As depicted in
System 700 can be used in a wide variety of applications, such as computer networking, data networking, instrumentation, video processing, digital signal processing, or any other application where the advantage of using programmable or reprogrammable logic is desirable. PLD 700 can be used to perform a plurality of different logic functions. For example, PLD 700 can be configured as a processor or controller that works in cooperation with processor 701. PLD 700 may also be used as an arbiter for arbitrating access to a shared resource in system 700. In yet another example, PLD 700 can be configured as an interface between processor 701 and one of the other components in system 700. It should be noted that system 700 is only exemplary, and that the true scope and spirit of the invention should be indicated by the following claims.
Various technologies can be used to implement PLDs 700 as described above and incorporating this disclosure.
The magnetic domains of coating 812 of medium 810 are polarized or oriented so as to encode, in manner which may be conventional, a machine-executable program, for execution by a programming system such as a workstation or personal computer or other computer or similar system, having a socket or peripheral attachment into which the PLD to be programmed may be inserted, to configure appropriate portions of the PLD, including its specialized processing blocks, if any, in accordance with the invention.
In the case of a CD-based or DVD-based medium, as is well known, coating 912 is reflective and is impressed with a plurality of pits 913, arranged on one or more layers, to encode the machine-executable program. The arrangement of pits is read by reflecting laser light off the surface of coating 912. A protective coating 914, which preferably is substantially transparent, is provided on top of coating 912.
In the case of magneto-optical disk, as is well known, coating 912 has no pits 913, but has a plurality of magnetic domains whose polarity or orientation can be changed magnetically when heated above a certain temperature, as by a laser (not shown). The orientation of the domains can be read by measuring the polarization of laser light reflected from coating 912. The arrangement of the domains encodes the program as described above.
It will be understood that the foregoing is only illustrative of the principles of the disclosure, and that various modifications can be made by those skilled in the art without departing from the scope and spirit of the disclosure. For example, the various elements of this disclosure can be provided on a PLD in any desired number and/or arrangement. One skilled in the art will appreciate that the present disclosure can be practiced by other than the described embodiments, which are presented for purposes of illustration and not of limitation, and the present invention is limited only by the claims that follow.
No admission is made that any portion of the disclosure, whether in the background or otherwise, forms a part of the prior art.
Claims
1-20. (canceled)
21. A programmable integrated circuit device, comprising:
- a first data line segment of a plurality of data line segments, wherein the first data line segment comprises: a first plurality of configuration random access memory (CRAM) cells; and a first pipeline column coupled to the first plurality of CRAMs, wherein the first pipeline column is configured to: receive a plurality of data frames; transmit a first data frame of the plurality of data frames to the first plurality of CRAMs, wherein the first data frame is associated with the first data line segment; and transmit a second data frame of the plurality of data frames to a second data line segment of the plurality of data line segments, wherein the second data frame is associated with the second data line segment, and wherein the second data line segment comprises a second pipeline column coupled to a second plurality of CRAMs.
22. The programmable integrated circuit device of claim 21, wherein the first data line segment is configured to load the first data frame into the first plurality of CRAMs, and wherein the second data line segment is configured to load the second data frame into the second plurality of CRAMs at a substantially similar time as the loading of the first data frame into the first plurality of CRAMs.
23. The programmable integrated circuit device of claim 21, wherein the first data line segment is coupled to a first address register, and wherein the second data line segment is coupled to a second address register.
24. The programmable integrated circuit device of claim 23, wherein the first data line segment is coupled to the first address register via a first plurality of address lines, wherein the second data line segment is coupled to the second address register via a second plurality of address lines.
25. The programmable integrated circuit device of claim 23, wherein the first data line segment and the second data line segment are configured to load the first data frame and the second data frame, respectively, in response to receiving a respective activation signal at a substantially similar time from the first address register and from the second address register, respectively.
26. The programmable integrated circuit device of claim 25, wherein the respective activation signal is transmitted by the first address register and by the second address register in response to the first data line segment transmitting the first data frame associated to the first plurality of CRAMs and the second data line segment transmitting the second data frame to the second plurality of CRAMs.
27. The programmable integrated circuit device of claim 21, wherein the first pipeline column is configured to receive the plurality of data frames via a plurality of data lines coupled to the first pipeline column.
28. The programmable integrated circuit device of claim 21, wherein the first pipeline column comprises one or more flip flop latches.
29. The programmable integrated circuit device of claim 21, comprising a data register configured to transmit the plurality of data frames to the plurality of data lines.
30. A method for operating a programmable integrated circuit device, comprising:
- receiving, via a pipeline column of a data line segment, a plurality of data frames;
- transmitting, via the pipeline column, a first data frame of the plurality of data frames to a plurality of configuration random access memory (CRAM) cells of the data line segment, wherein the first data frame is associated with the data line segment; and
- transmitting, via the pipeline column, a second data frame of the plurality of data frames to an additional plurality of CRAMs of an additional data line segments, wherein the second data frame is associated with the additional data line segment.
31. The method of claim 30, wherein an activation signal is transmitted to the data line segment and the additional data line segment to trigger loading of the first data frame into the data line segment and the second data frame into the second data line segment at a substantially similar time in response to the data line segment and the additional data line segment receiving the first data frame and the second data frame, respectively.
32. The method of claim 31, wherein loading the first data frame into the data line segment comprises loading the first data frame into the plurality of CRAMs, and wherein loading the second data frame into the additional line segment comprises loading the second data frame into the additional plurality of CRAMs.
33. The method of claim 30, wherein receiving the plurality data frames is received via a plurality of data lines associated with the pipeline column.
34. The method of claim 30, wherein transmitting the second data frame comprises pipelining, via the pipeline column, the second data frame to an additional pipeline column of the additional data line segment located downstream of the pipeline column.
35. A non-transitory machine-readable medium comprising instructions stored thereon for configuring a programmable integrated circuit device, the instructions comprising:
- instructions to receive a plurality of data frames at a pipeline column of a data line segment;
- instructions to transmit, via the pipeline column, a first data frame of the plurality of data frames to a plurality of memory cells of the data line segment, wherein the first data frame is associated with the data line segment; and
- instructions to transmit, via the pipeline column, a second data frame of the plurality of data frames to an additional pipeline column of an additional data line segment.
36. The non-transitory machine-readable medium of claim 35, wherein the first data frame comprises null data, and wherein the second frame of data comprises null data.
37. The non-transitory machine-readable medium of claim 35, comprising instructions for transmitting an activation signal to the data line segment and to the additional data line segment to trigger loading of the first data frame into the data line segment and the second data frame into the additional data line segment at a substantially similar time in response to the data line segment and the additional data line segment receiving the first data frame and the second data frame, respectively.
38. The non-transitory machine-readable medium of claim 37, wherein loading the first data frame into the data line segment comprises loading the first data frame into the plurality of memory cells, and wherein loading the second data frame into the additional data line segment comprises loading the second data frame into a second plurality of CRAMs of the additional data line segment.
39. The non-transitory machine-readable medium of claim 35, wherein the instructions comprise instructions to:
- scrub data previously loaded into the plurality of memory cells in response to the first data frame being transmitted in the data line segment; and
- scrub data previously loaded into an additional plurality of memory cells of the additional data line segment in response to the second data frame being transmitted in the additional data line segment.
40. The non-transitory machine-readable medium of claim 35, wherein instructions to receive the plurality data frames occurs via a plurality of data lines associated with the pipeline column.
Type: Application
Filed: Nov 19, 2018
Publication Date: May 23, 2019
Inventors: Jun Pin Tan (Kepong), Kiun Kiet Jong (Bayan Lepas), Lai Pheng Tan (Gelugor)
Application Number: 16/194,991