This application is based upon and claims the benefit of priority from the prior Japanese Patent Application No. 2017-179448 filed on Sep. 19, 2017, the entire contents of which are incorporated herein by reference.
Embodiments described herein relate generally to semiconductor integrated circuits.
A programmable logic device (hereinafter also referred to as a PLD) is a semiconductor integrated circuit capable of rewriting its circuit configuration after the chip manufacturing, and a typical example of such a PLD is a field programmable gate array (hereinafter also referred to as an FPGA). An island-style PLD has a two-dimensionally repetitive configuration in which a configurable logic block and a configurable memory block are connected to each other by a configurable interconnect block. Each configurable memory block is preferably capable of supplying data to the corresponding configurable logic block at a higher data rate (bits/sec). The data rate is determined by the product of the data transfer clock frequency fclk and the data bit width W. The data transfer clock speed is normally limited by the maximum read clock frequency of the memory core included in the configurable memory block. Meanwhile, the data bit width is limited by the number of I/Os in the configurable block connecting the configurable memory block and the configurable interconnect block. Each of the I/Os in the configurable block has a large area due to the configurability thereof, and an increase in the number of I/Os causes a significant increase in area.
A semiconductor integrated circuit according to an embodiment includes: a first memory bank that performs a read operation in accordance with a first clock signal, and outputs first data in accordance with the first clock signal; a second memory bank that performs a read operation in accordance with the first clock signal, and outputs second data in accordance with the first clock signal; a configurable decoder that supplies address information to the first memory bank and the second memory bank; and an output module reconfigurable in one of a first mode and a second mode, the first mode including a function of holding the first data and the second data in accordance with the first clock signal, and selecting and outputting the first data or the second data in accordance with a second clock signal having a frequency at least twice higher than the first clock signal, the second mode including at least a function of selecting and outputting the first data or the second data in accordance with the first clock signal.
Referring to
The PDL 1 includes configurable logic blocks (hereinafter also referred to as LBs) 10, configurable memory blocks (hereinafter also referred to as MBs) 20, configurable connection blocks (hereinafter also referred to as CBs) 30, and configurable switch blocks (hereinafter also referred to as SBs) 40.
Each configurable logic block 10 receives a signal from the corresponding configurable connection block 30, and sends the signal to the corresponding configurable switch block 40.
Each configurable memory block 20 receives a signal from the corresponding configurable connection block 30, and sends the signal to the corresponding configurable switch block 40.
The configurable switch blocks 40 are connected to one another by interblock wiring lines 50 via the configurable connection blocks 30. Each configurable connection block 30 includes a multiplexer (not shown) having an input terminal connected to the interblock wiring lines 50, and, in accordance with circuit configuration information, outputs the signal of a selected wiring line of the interblock wiring lines 50 to the corresponding configurable logic block 10 or the corresponding configurable memory block 20.
Each configurable switch block 40 includes a multiplexer (not shown) connected to one of the interblock wiring lines 50, selects an output from the corresponding configurable logic block 10 or the corresponding configurable memory block 20 in accordance with circuit configuration information, and outputs the selected signal to another interblock wiring line 50.
In this embodiment, each configurable connection block 30 and the corresponding configurable switch block 40 are collectively referred to as a configurable interconnect block. That is, in this embodiment, each configurable logic block 10 and the corresponding configurable memory block 20 are connected to each other by a configurable interconnect block.
(Overview of a Memory Module)
Each configurable memory block 20 includes a configurable memory module, and an example overview of the configurable memory module is shown in
The configurable memory module 200 includes a configurable decoder 210, two random access memory (RAM) banks 222 and 224, and a configurable output module 230. The configurable decoder 210 sends address information to each of the RAM banks 222 and 224.
The configurable output module 230 includes bank registers 231 and 232, configurable multiplexers 233 and 234, configuration static random access memories (SRAMs) 233a and 234a, a bank selection multiplexer 235, a bank selection address register 236, a mode selection multiplexer 237, and a configuration SRAM 237a. The bank register 231 is formed with a flip-flop, for example. The bank register 231 holds data having a width W sent from the RAM bank 222 in accordance with a clock signal fCLK, and also sends the data to the configurable multiplexer 233.
The bank register 232 is formed with a flip-flop, for example. The bank register 232 holds data having the width W sent from the RAM bank 224 in accordance with the clock signal fCLK, and also sends the data to the configurable multiplexer 234.
The configurable multiplexer 233 selects the data sent from the RAM bank 222 or the data sent from the bank register 231, in accordance with an input signal sent from the configuration SRAM 233a, and outputs the selected data to the bank selection multiplexer 235. The configurable multiplexer 234 selects the data sent from the RAM bank 224 or the data sent from the bank register 232, in accordance with an input signal sent from the configuration SRAM 234a, and outputs the selected data to the bank selection multiplexer 235. That is, the configurable multiplexers 233 and 234 have a function of bypassing the bank registers 231 and 232, respectively, and are also referred to as bypass multiplexers.
The bank selection address register 236 is formed with a flip-flop, for example. The bank selection address register 236 holds an address addr_bank for selecting one of the two RAM banks 222 and 224 in accordance with the clock signal fCLK, and outputs the held address.
In accordance with the data held in the configuration SRAM 237a, the mode selection multiplexer 237 selects the output of the bank selection address register 236, a clock signal having a clock frequency (hereinafter also referred to as the clock speed) fCLK, or a clock signal fCLK×2 having a speed 2×fCLK that is twice the clock speed fCLK, and sends the selected signal as an input signal to the bank selection multiplexer 235.
In this embodiment and the embodiments described later, a clock signal having a speed at least twice the clock speed fCLK may be used instead of the clock signal fCLK×2 having the speed 2×fCLK twice the clock speed fCLK.
In accordance with the input signal sent from the mode selection multiplexer 237, the bank selection multiplexer 235 selects the output of one of the configurable multiplexers 233 and 234, and outputs the selected output from the configurable output module 230.
The configurable decoder 210, the multiplexers 233 and 234, and the mode selection multiplexer 237 have configurability (reconfigurability), and the reconfigurability is determined by circuit configuration information (circuit configuration data) held in a configuration SRAM.
The entire configurable memory module 200 can be reconfigured in the double data rate mode shown in
In the double data rate mode shown in
In the normal mode shown in
That is, in the double data rate mode, a maximum data transfer rate twice higher than that in the normal mode can be achieved.
In the double data rate mode, the configurable output module 230 halves the data width and doubles the speed of the data transfer clock. That is, the configurable output module 230 is reconfigured as a W-down/fCLK-up converter. In the normal mode, on the other hand, the configurable output module 230 is reconfigured as a bank selector that selects one of the RAM banks 222 and 224 in accordance with a bank selection address.
The configurable decoder 210 can be reconfigured in a shared mode for supplying address information simultaneously to the two RAM banks 222 and 224, or in an exclusive mode for selecting one of the two RAM banks 222 and 224 in accordance with a bank selection address signal and supplying address information exclusively to the selected RAM bank. The configurable decoder 210 is reconfigured in the shared mode at a time of the double data rate mode, and is reconfigured in the exclusive mode at a time of the normal mode.
The RAM bank 222 and the RAM bank 224 are conventional RAM banks that perform a read or write operation for an address supplied to a port. Each of the RAM banks 222 and 224 is a dual port bank with two ports. That is, each of the RAM banks 222 and 224 can simultaneously access the addresses of the two ports. The RAM banks 222 and 224 each have a memory cell array therein. Each cell in this memory cell array may be a dual port SRAM cell formed with eight transistors, for example, or may be a dual port MTJ cell formed with two transistors and one magnetic tunnel junction (MTJ) element (see “High Density, Low Energy, Magnetic Tunnel Junction Based Block RAMs for Memory-rich FPGAs”, IEEE International Conference on Field-Programmable Technology (FPT), pp. 4-11 (2016), K. Tatsumura, S. Yazdanshenas, and V. Betz, for example). Alternatively, each cell may be a dual port MTJ element cell formed with four transistors and one MTJ element. Each of the RAM banks 222 and 224 may be a single port bank having one port. In this case, each cell may be a single port SRAM cell formed with six transistors, or may be a single port MTJ cell formed with one transistor and one MTJ element.
In this embodiment, the number of RAM banks is two. The number of RAM banks may be a multiple of 2, such as four, six, or eight, which is greater than two.
The maximum data width of the RAM bank 222 and the RAM bank 224 at a time of reading or writing is W. The maximum data width W of a RAM bank is determined by the number of bit line drivers (read sense amplifiers and write drivers) held by the RAM bank.
The maximum read clock frequency of the RAM bank 222 and the RAM bank 224 is the frequency fCLK of the clock signal fCLK. In this embodiment, the clock signal fCLK is supplied to the read ports of the RAM bank 222 and the RAM bank 224.
The bank registers 231 and 232 each include W flip-flops (F/Fs), and can hold read data (Dout) from the banks 222 and 224, respectively. The clock signal fCLK is supplied to the bank 222 and the bank register 231, and the bank 224 and the bank register 232.
The bypass multiplexer 233 is connected to the output terminal (W bits) of the RAM bank 222 and the output terminal (W bits) of the bank register 231, selects read data (non-registered) output directly from the RAM bank 222 or output data (registered) output via the bank register 231, and outputs the selected data (the output data width being W bits). The bypass multiplexer 234 is connected to the output terminal (W bits) of the RAM bank 224 and the output terminal (W bits) of the bank register 232, selects read data (non-registered) output directly from the RAM bank 224 or output data (registered) output via the bank register 232, and outputs the selected data (the output data width being W bits). The bypass multiplexer 233 is reconfigured to select the output data via the bank register 231 in the double data rate mode, and select the read data output directly from the RAM bank 222 in the normal mode. The bypass multiplexer 234 is reconfigured to select the output data via the bank register 232 in the double data rate mode, and select the read data output directly from the RAM bank 224 in the normal mode.
The bank selection address register 236 holds a bank selection address signal addr_bank at the clock rate of fCLK.
The mode selection multiplexer 237 is connected to the feeder line of the clock signal fCLK×2 having a speed twice higher than the clock signal fCLK and to the output of the bank selection address register 236, and outputs one of the two outputs in accordance with circuit configuration information. The mode selection multiplexer 237 selects the signal fCLK×2 in the double data rate mode, and selects the bank selection address signal addr_bank in the normal mode.
The output (W bits) of the bank bypass multiplexer 233 and the output (W bits) of the bank bypass multiplexer 234 are connected to the bank selection multiplexer 235, and one of the two outputs is output from an output terminal OUT (the output data width being W), in accordance with an output signal from the mode selection multiplexer 237.
In the double data rate mode, the bank selection multiplexer 235 alternately outputs the output of the bank bypass multiplexer 233 and the output of the bank bypass multiplexer 234 every clock cycle (1/(fCLK×2)) of the signal fCLK×2, from the output terminal OUT. In the normal mode, on the other hand, the bank selection multiplexer 235 selects the output of the bank bypass multiplexer 233 or the output of the bank bypass multiplexer 234 in accordance with a bank address signal addr_bank every clock cycle (1/fCLK) of the clock signal fCLK, and outputs the selected output from the output terminal OUT.
(Details of the Configurable Memory Module 200)
The sense amplifiers SA00, SA01, SA10, and SA11 of the RAM bank 222 are connected to bank selection multiplexers 235 via bank bypass multiplexers 233 accompanied by bank registers 231, respectively. Meanwhile, the sense amplifiers SA00, SA01, SA10, and SA11 of the RAM bank 224 are connected to bank selection multiplexers 235 via the bank bypass multiplexers 234 accompanied by the bank registers 232, respectively. Here, each of the bank registers 231 and 232 is a 1-bit flip-flop (F/F). The bank registers 231 include a total of W (four) flip-flops (F/F). Each bank register 232 is a 1-bit flip-flop (F/F). The bank registers 232 include a total of W (four) flip-flops (F/F).
Each of the bypass multiplexers 233 and 234 of the RAM banks 222 and 224 is a two-to-one (2-bit input and 1-bit output) configurable multiplexer. The bypass multiplexers 233 and 234 of the RAM banks 222 and 224 each include W (four) two-to-one configurable multiplexers. In
Each of the bank selection multiplexers 235 is a two-to-one multiplexer. The bank selection multiplexers 235 include a total of W (four) two-to-one multiplexers. In each of the bank selection multiplexers 235, the output of the mode selection multiplexer 237 is connected to a control signal (input signal) terminal of the two-to-one multiplexer.
The configurable memory module 200 further includes the bank registers 231 and 232, and a control pulse generator 204 that generates internal control signals of the RAM banks 222 and 224. The clock signal fCLK is supplied to the control pulse generator 204, and the clock signal fCLK×2 having a frequency twice the frequency of the clock signal fCLK is supplied to the mode selection multiplexer 237. Two clocks that are the clock signal fCLK and the clock signal fCLK×2 may be supplied from the outside of the configurable memory module 200. Alternatively, the clock signal fCLK×2 may be supplied from the outside, and the clock signal fCLK may be internally generated from the clock signal fCLK×2 by a ½ frequency divider.
(Configurable Decoder 210)
The decoder 211 decodes a 2-bit address signal into a 4-bit decoded signal (00, 01, 10, 11).
The control gates 212a and 212b are AND gates that perform an AND operation using three elements, which are the decoded signal, a control pulse from the control pulse generator 204 shown in
The bank selection address register 214 has the same configuration as the registers 231 of the same name included in the configurable output module 230 shown in
The mode selection multiplexer 215 selects and outputs the output of the bank selection address register 214 or a terminal of a fixed logical value 1, in accordance with circuit configuration information. In the double data rate mode, the terminal of the fixed logical value 1 is selected. In the normal mode, the output of the bank selection address register 214 is selected.
The bypass multiplexer 217 selects and outputs the output of the mode selection multiplexer 215 or a signal obtained by inverting the output of the mode selection multiplexer 215 by the inverter 216, in accordance with circuit configuration information. In the double data rate mode, the output of the mode selection multiplexer 215 is selected. In the normal mode, the output of the inverter 216 is selected.
The output of the mode selection multiplexer 215 is connected to the control gates 212a on the side of the RAM bank 222. Meanwhile, the output of the bypass multiplexer 217 is connected to the control gates 212b on the side of the RAM bank 224.
At a time of the double data rate mode, the entire configurable decoder 210 is reconfigured in a shared mode for supplying address information simultaneously to the two RAM banks 222 and 224. At a time of the normal mode, the entire configurable decoder 210 is reconfigured in an exclusive mode for selecting one of the two RAM banks 222 and 224 in accordance with a bank selection address signal, and supplying address information exclusively to the selected RAM bank.
In the cycle 0, the RAM banks 222 and 224 simultaneously perform a read operation, and read data D000 and data D001. Of the three bits of data, the first two bits represent a row address addr_row, and the last one bit represents a bank selection address. In the read operation, the RAM bank 222 and the RAM bank 224 can use a cycle time (Tcyc=1/fCLK) equivalent to the reciprocal of the frequency of the clock signal fCLK.
At the rise of the clock signal fCLK in the cycle 1, the bank register 231 acquires the data D000, and the bank register 232 acquires the data D001. The bank register 231 and the bank register 232 hold the values during the cycle 1. In the microcycle 2 and the microcycle 3, which belong to the cycle 1, the bank selection multiplexer 235 sequentially outputs the data D000 and the data D001.
In the cycle 1, the RAM bank 222 and the RAM bank 224 simultaneously perform a read operation, to read data D010 and data D011, respectively. In the microcycle 4 and the microcycle 5, which belong to the cycle 2, the bank selection multiplexer 235 sequentially outputs the data D010 and data D011.
The data transfer rate of the output signal (OUT) of the bank selection multiplexer 235 is W×fCLK×2, because the bit width is W, and the data transfer clock is fCLK×2.
In cycle 0, the RAM bank 222 performs a read operation, and reads data D000. In the read operation, the RAM bank 222 can use a cycle time (Tcyc=1/fCLK) equivalent to the reciprocal of the clock cycle fCLK.
The bank selection address registers 214 and 236 acquire a bank selection address signal “1” at the rise of the clock fCLK in the cycle 1, and hold the value during the cycle 1. In the cycle 1, the RAM bank 224 performs a read operation, and reads data D001. The bank selection multiplexer 235 outputs data D000 in the cycle 0, and outputs the data D001 in the cycle 1. The data transfer rate of the output signal (OUT) of the bank selection multiplexer 235 is W×fCLK, because the bit width is W, and the data transfer clock is fCLK.
As shown in
According to the principles of this embodiment, in the double data rate mode, the data transfer rate can be increased by causing the two RAM banks 222 and 224 to simultaneously perform read operations. Meanwhile, at the output terminal OUT of the configurable output module 230, the number of output terminals is not increased, but the data transfer clock frequency is doubled to enable a transfer of an increased amount of data.
As described above, it is possible to provide a semiconductor integrated circuit that includes configurable memory blocks capable of increasing the data transfer rate without an increase in the number of I/Os.
Referring now to
The configurable memory block 20 of the second embodiment includes local wiring lines 202, a local multiplexer 205, input registers 206, 207, and 208, a configurable memory module 200, an output crossbar 250, and a configurable output register 260.
A signal selectively captured by a multiplexer 310 of the corresponding configurable connection block 30 from the interblock wiring lines 50 is input to the local wiring lines 202 of the configurable memory block 20. The number of input terminals MBIN of the memory block 20 is equal to the number of the multiplexers in the connection block 30 or the number of the local wiring lines 202. To increase the number of the input terminals MBIN of the memory block 20, it is necessary to increase the number of multiplexers in the connection block 30 that occupies a large area.
The local multiplexer 205 is connected to the local wiring lines 202, and outputs a signal selected from the local wiring lines 202 to the input registers 206, 207, and 208, in accordance with circuit configuration information.
The input register 206 holds input data (Din), the input register 207 holds a read or write address, and the input register 208 holds a write enable signal.
The configurable memory module 200 is the same as the configurable memory module 200 shown in
The data width of the output terminal OUT of the configurable memory module 200 is W per port. In
The output terminal of the configurable memory module 200 is connected to the input terminal of the output crossbar 250. The output terminal of this configurable memory module 200 has a data width 2W, with the two ports being combined. The data width of the output terminal OUTXbar of the output crossbar 250 is W. The output crossbar 250 is a switch matrix that includes an input terminal with the data width 2W and an output terminal with the data width W. The output crossbar 250 realizes desired switching of connection between an input line and an output line in accordance with circuit configuration information.
The configurable output register 260 is an output register including a bypass multiplexer, and its data width is W. Specifically, the configurable output register 260 includes a configurable multiplexer 262, W flip-flops 264, and a bypass multiplexer 266. Reference numerals 262a and 266a indicate configuration SRAMs of the configurable multiplexer 262 and the bypass multiplexer 266, respectively, and circuit configuration information is held in the configuration SRAMs 262a and 266a.
The output terminal of the configurable output register 260 is equivalent to the output terminal MBOUT of the memory block 20, and its data width is W. One of the output terminals of the memory block 20 may be connected to multiplexers in the corresponding switch block 40. The connecting wire in this case is also called a broadcast wire.
To increase the number of output terminals of the memory block 20, it is necessary to increase the size of the output crossbar 250, the number of configurable output registers 260, and the number of multiplexers in the switch block 40. This involves a large increase in the occupied area.
The clock input terminal of an output register 264 of the configurable output register 260 is connected to the output terminal of the configurable multiplexer 262 capable of selecting a clock signal fCLK×2 or a clock signal fCLK. In the double data rate mode, the clock signal fCLK×2 is selected. In the normal mode, the clock signal fCLK is selected.
As described above, according to this embodiment, the configurable memory module 200 is disposed in the memory block 20, or in the region between the input terminals MBIN and the output terminal MBOUT. In this manner, it is possible to form a memory block that supports not only a configuration mode with a normal data transfer rate but also the double data rate mode that enables operation at the maximum data transfer rate twice higher than the normal data transfer rate, without an increase in the number of output terminals MBOUT.
As described above, like the first embodiment, the second embodiment can provide a semiconductor integrated circuit that includes configurable memory blocks capable of increasing the data transfer rate without an increase in the number of I/Os.
Referring now to
A configurable memory block 20 according to the third embodiment includes a configurable input module, a memory bank unit, and a configurable output module. The memory bank unit 280 includes the configurable decoder 210, the RAM bank 222, and the RAM bank 224, which have been described in the first and second embodiments. The configurable decoder 210, the RAM bank 222, and the RAM bank 224 have the same configurations and functions as those of the configurable decoder 210, the RAM bank 222, and the RAM bank 224, which have been described in the first and second embodiments. The configurable output module also has the same configuration as the configurable output module 230 described in the first embodiment.
The configurable input module has a function of being reconfigured in a double data rate mode or in a normal mode.
In the double data rate mode, the configurable input module 270 includes registers 272, 274, and 276, as shown in
In the double data rate mode, the configurable output module 230 includes a register 231, a register 232, and a multiplexer 235, as shown in
The configurable memory block 20 having the above described configuration includes not only the memory bank unit 280 but also the configurable input module (an input port) 270 and the configurable output module (an output port) 230. That is, as the configurable memory block 20 includes a write port (an input port) and a read port (an output port), the double data rate mode can be realized.
In the double data rate mode, the configurable input module 270 is reconfigured as a W-up/fCLK-down converter, and the configurable output module 230 is reconfigured as a W-down/fCLK-up converter, as shown in
In the normal mode, the configurable input module 270 is reconfigured as an input flip-flop/broadcast wire, and the configurable output module 230 is reconfigured as a bank selector, as shown in
(Operation in the Double Data Rate Mode)
As shown in
(Operation in the Normal Mode)
As shown in
In the double data rate mode, the input and output data transfer rates can be made twice higher than those in the normal mode, without any increase in the number of input terminals MBIN and the number of output terminals MBOUT.
As described above, like the first embodiment, the third embodiment can provide a semiconductor integrated circuit that includes configurable memory blocks capable of increasing the data transfer rate without an increase in the number of I/Os.
While certain embodiments have been described, these embodiments have been presented by way of example only, and are not intended to limit the scope of the inventions. Indeed, the novel methods and systems described herein may be embodied in a variety of other forms; furthermore, various omissions, substitutions and changes in the form of the methods and systems described herein may be made without departing from the spirit of the inventions. The accompanying claims and their equivalents are intended to cover such forms or modifications as would fall within the scope and spirit of the inventions.
Number | Date | Country | Kind |
---|---|---|---|
2017-179448 | Sep 2017 | JP | national |
Number | Name | Date | Kind |
---|---|---|---|
5717651 | Kikukawa | Feb 1998 | A |
6525565 | Young | Feb 2003 | B2 |
7248491 | Ching | Jul 2007 | B1 |
7317644 | Lin | Jan 2008 | B1 |
7797610 | Simkins | Sep 2010 | B1 |
7940598 | Kasamsetty | May 2011 | B2 |
8558594 | Tang | Oct 2013 | B2 |
8588015 | Chang | Nov 2013 | B2 |
8913440 | Tao | Dec 2014 | B2 |
9361959 | Bhatia | Jun 2016 | B2 |
9478269 | Tao | Oct 2016 | B2 |
9569305 | Mukai | Feb 2017 | B2 |
9779804 | Oh | Oct 2017 | B2 |
20050268023 | Briggs et al. | Dec 2005 | A1 |
20070143677 | Pyeon et al. | Jun 2007 | A1 |
20100005244 | Weiberle | Jan 2010 | A1 |
20140056093 | Tran et al. | Feb 2014 | A1 |
Number | Date | Country |
---|---|---|
2005-346715 | Dec 2005 | JP |
2014-199679 | Oct 2014 | JP |
Entry |
---|
Kosuke Tatsumura, et al. “High Density, Low Energy, Magnetic Tunnel Junction Based Block RAMs for Memory-rich FPGAs”, IEEE International Conference on Field-Programmable Technology(FPT), 2016, 8 pages. |
Number | Date | Country | |
---|---|---|---|
20190087365 A1 | Mar 2019 | US |