WO2018207801A1 - プログラム可能なデバイス、その論理構成方法、及びそのプログラム - Google Patents
プログラム可能なデバイス、その論理構成方法、及びそのプログラム Download PDFInfo
- Publication number
- WO2018207801A1 WO2018207801A1 PCT/JP2018/017853 JP2018017853W WO2018207801A1 WO 2018207801 A1 WO2018207801 A1 WO 2018207801A1 JP 2018017853 W JP2018017853 W JP 2018017853W WO 2018207801 A1 WO2018207801 A1 WO 2018207801A1
- Authority
- WO
- WIPO (PCT)
- Prior art keywords
- data
- memory unit
- configuration data
- memory
- programmable device
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H01—ELECTRIC ELEMENTS
- H01L—SEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
- H01L21/00—Processes or apparatus adapted for the manufacture or treatment of semiconductor or solid state devices or of parts thereof
- H01L21/70—Manufacture or treatment of devices consisting of a plurality of solid state components formed in or on a common substrate or of parts thereof; Manufacture of integrated circuit devices or of parts thereof
- H01L21/77—Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate
- H01L21/78—Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices
- H01L21/82—Manufacture or treatment of devices consisting of a plurality of solid state components or integrated circuits formed in, or on, a common substrate with subsequent division of the substrate into plural individual devices to produce devices, e.g. integrated circuits, each consisting of a plurality of components
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03K—PULSE TECHNIQUE
- H03K19/00—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
- H03K19/02—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
- H03K19/173—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
- H03K19/177—Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components arranged in matrix form
Definitions
- the present invention relates to a programmable device, a logical configuration method thereof, and a program thereof.
- Programmable semiconductor devices such as FPGA (Field-Programmable Gate Array) are widely used because of the flexibility provided by their rewriteability (for example, Patent Document 1).
- FIG. 1 is a diagram illustrating an example of an FPGA. Shown is that made by Xilinx (registered trademark).
- the FPGA 110 includes a programmable two-dimensional cell called a CLB (configurable logic block) 114, a vertical routing channel 116, a horizontal routing channel 115 passing between the vertical routing channel 116 and the CLB 114, and a horizontal routing channel 115.
- a switch block (not shown) is provided between the vertical routing channel 116.
- the CLB 114 includes a logic element (LE) having a predetermined size (Patent Document 1, FIG. 1).
- the LE includes a four-input look-up table (LUT), registers, and several routing circuits.
- This routing circuit allows registers to be used when sequential logic or operations are desired, or allows registers to be bypassed when combinatorial logic or operations are desired.
- This routing circuit is programmable and combines multiple LEs by communicating signals between LEs.
- the FPGA is generally designed by “HDL (Hardware Description Language)”. This is not a direct design of the circuit constituting the LE, but is defined by describing the function in a language.
- HDL Hardware Description Language
- logic synthesis Converting a circuit whose operation is defined in HDL into an actual gate circuit is called “logic synthesis”.
- “technology mapping” for dividing HDL into LE units of FPGA is performed.
- technology mapping each contact point of a Boolean network is expressed by an AND (logical product) gate, an OR (logical sum) gate, and a NOT (logical inversion) gate, and a Boolean network composed of a connection of these gates is generated.
- the fan-out of the contact is segmented at two or more points, and it is regarded as a tree.
- a list “net list” of logical elements in units of one or more LEs and their connection relationship is generated (Patent Document 1, FIG. 16).
- a programmable device Having a plurality of memory cells; In the logic circuit configuration data constituting the logic circuit including at least two or more logic gates, logical operation is performed on the input data of the digital signal according to the logic gates, and the correspondence between the generated output data and the input data, A memory unit configured to store the resulting configuration data in the plurality of memory cells and operate as the logic circuit; A programmable device comprising: an address decoder that outputs address signals to the plurality of memory cells in which the configuration data is stored as input data to the memory unit. [Item 2] The programmable device according to item 1, wherein configuration data is stored in a part of a plurality of memory cells of the memory unit. [Item 3] 3.
- the programmable device according to item 1 or 2, wherein the configuration data is stored for each bank of the memory unit.
- the memory unit has a first memory unit and a second memory unit; Each of the first and second memory units stores the configuration data in the memory cell;
- the memory unit has at least n times (n is an integer of 2 or more) pairs of input lines and output lines, 4.
- the memory units according to any one of items 1 to 3, wherein two n times output lines from one memory unit are connected to n input lines of the other two memory units. Programmable devices.
- the memory unit is connected to another memory unit on one side and the other side opposite to the one side, and has a plurality of memory units, and A plurality of memory cells included in at least one of the plurality of memory units outputs a first configuration data for outputting a logical value from the one side and a logical value from the other side in response to an address input in the one side. And storing the second configuration data of 4.
- the programmable device according to any one of items 1 to 3, wherein generating the configuration data includes generating the first configuration data and the second configuration data.
- a method for generating configuration data of a programmable device having a memory unit comprising a plurality of memory cells for storing data In the logic circuit configuration data constituting the logic circuit including at least two or more logic gates, logical operation is performed on the input data of the digital signal according to the logic gates to generate output data, Generate configuration data from the correspondence between the input data and output data, Writing the generated configuration data to the memory unit.
- the memory unit has a first memory unit and a second memory unit; The memory unit has at least n times (n is an integer of 2 or more) pairs of input lines and output lines, In the memory units, n times output lines of 2 from one memory unit are connected to n input lines of the other two memory units, 8.
- the configuration data is truth table data.
- the memory unit has a first memory unit and a second memory unit;
- the memory unit has at least n times (n is an integer of 2 or more) pairs of input lines and output lines, In the memory units, n times output lines of 2 from one memory unit are connected to n input lines of the other two memory units, Item 11.
- the program according to item 10 wherein the program executes a process of dividing the first configuration data for the first memory unit and the second configuration data for the second memory unit.
- the programmable device can compress the gate circuit included in the configuration data constituting the logic circuit and reduce the necessary programmable device resources.
- FIG. 3 is a diagram schematically showing an MLUT array configured by horizontally stacking MLUTs. It is a figure which shows an example of MLUT which has a data line width of 8 bits. It is a figure which shows the example which expand
- FIG. 2A is a diagram illustrating the relationship between logic circuit configuration data and configuration data.
- 310 is a circuit diagram to be configured.
- Circuit diagram 310 includes two or more logic gates.
- the 320 is a conventional configuration data allocation method.
- the above-described CLB 114 constitutes each circuit and wiring.
- the CLB 114 includes a memory unit including a plurality of memory cells that store data.
- the configuration data assigned to the LUT of the CLB 114 corresponds to truth table data described later.
- 330 denotes a configuration data generation method according to the present embodiment. 330 performs logical operation on the input data A1 to A3 of the digital signal based on a logic gate to generate output data Out, and generates one configuration data from the correspondence between the input data and the output data.
- FIG. 2B is a truth table showing the configuration data generated in FIG. 2A.
- CLBs 114 are conventionally required, but by generating one configuration data, a logic circuit including a plurality of logic gates can be configured with a programmable device including fewer devices. .
- FIG. 3 is a view showing an example of a programmable device configuration data generation method according to this embodiment.
- the left side of FIG. 3 is a “conventional configuration data generation method”.
- an RTL Registered Transfer Level
- S101 an RTL (Register Transfer Level) describing a logic circuit
- S102 a logic circuit mounting design is performed from the RTL
- S103 a gate level netlist is generated (S103).
- the netlist is compiled into configuration data such as a truth table with reference to the device library of the programmable device (S104) and written to the programmable device (S105).
- S201 is the same as S101.
- S202 the digital signal input data is logically operated in the RTL constituting the logic circuit including at least two or more logic gates to generate output data, and the configuration data is obtained from the correspondence between the input data and the output data.
- Generate S202.
- the configuration data is divided according to the number of memory units (S203).
- S204 is the same as S104.
- the programmable device configuration data generation method can compress the gate circuit included in the configuration data constituting the logic circuit and reduce the necessary programmable device resources.
- the number of inputs A1 to A3
- the required memory space increases in accordance with the number of inputs, so that a memory space larger than one CLB 116 is required. Therefore, a programmable device is obtained by using a memory unit having a large memory space or by applying a plurality of memories.
- FIG. 4 is a diagram illustrating an example of a programmable device using a memory.
- 100 shown in FIG. 4 is an example of a programmable device 100.
- the programmable device 100 includes a memory unit 60, a memory read operation, a row decoder 61 that identifies a memory cell that is a write operation target, and a column decoder 62.
- the memory unit 60 is composed of a synchronous SRAM.
- the memory cell of the memory unit 60 stores configuration data that is regarded as a truth table, so that the memory unit 60 that stores at least the configuration data is a logic element, a connection element, or a logic element and a connection.
- the memory space 60a of the memory unit 60 in which the truth table is stored may be referred to as a memory unit that exhibits the function of the programmable device 100.
- the other area has a normal memory function.
- a part of the space of the memory unit can be used as a programmable device.
- a logic circuit composed of a plurality of logic gates has been configured with a plurality of CLBs, but has been described with reference to FIGS. 2A and 2B. This is because it can be configured with one configuration data (truth table data) as described above, and a conventional programmable device can be configured in a memory space for storing the configuration data.
- the write operation of the memory unit 60 is performed by the write address AD and the write data WD, and the read operation is performed by the write address AD and the read data RD.
- the row decoder 61 decodes x bits of m bits of the write address AD in accordance with control signals such as a read enable signal re and a write enable signal we, and outputs a decoded address n to the MLUT 30.
- the decode address n is used as an address for specifying a memory cell in the MLUT 30.
- the column decoder 62 decodes y bits out of m bits of the write address AD, has the same function as the row decoder 61, outputs the decode address n to the MLUT 30, and writes the write data WD. And the read data RD are input.
- FIG. 5 shows an example in which MRLD is used in the programmable device according to the present embodiment.
- 100 shown in FIG. 5 is an example of MRLD.
- the MRLD 100 includes an MLUT array 60b in which a plurality of MLUTs 30 using a synchronous memory unit are arranged in an array, a row decoder 61 for specifying a memory read operation and a write operation of the MLUT 30, and a column decoder 62.
- MLUT is composed of synchronous memory units.
- the synchronous memory unit described here is an example of an MLUT.
- the MLUT may be configured by, for example, an OTP ROM (One Time Programmable ROM) that can be written only once and cannot be erased. .
- OTP ROM One Time Programmable ROM
- the MLUT By storing data regarded as a truth table in the memory element of the memory, the MLUT performs a logic operation that operates as a logic element, a connection element, or a logic element and a connection element. Since MLUT can perform such logical operations by storing truth table data, MRLD stores the truth table as shown in FIG. Is suitable.
- the logic address LA indicated by the solid line and the logic data LD signal are used.
- the logic address LA is used as an input signal for the logic circuit.
- the logic data LD is used as an output signal of the logic circuit.
- the logic address LA and the logic data LD are used as signal lines connecting the MLUTs.
- the MLUT logic address LA is the same as the data line of the logic operation data LD of the adjacent MLUT. Connected.
- the logic realized by the logic operation of the MRLD 100 is realized by truth table data stored in the MLUT.
- Some MLUTs operate as logic elements as combinational circuits such as AND circuits and adders.
- the other MLUTs operate as connection elements that connect the MLUTs that realize the combinational circuit. Rewriting of truth table data for the MLUT to realize a logical element and a connection element is performed by a write operation to the memory.
- the write operation of the MRLD 100 is performed by the memory operation address AD and the write data WD, and the read operation is performed by the memory operation address AD and the read data RD.
- the memory operation address AD is an address for specifying a memory cell (described later with reference to FIG. 5) in the MLUT, and is used in both the memory read operation and the write operation.
- the memory operation address AD specifies m memory lines of the number of powers of 2 by m signal lines.
- the row decoder 61 receives the MLUT address via the m signal lines and decodes the MLUT address to specify the memory cell in the MLUT that is the target of the memory operation. In this embodiment, as will be described later, the logical address LA is decoded by a decoder in the MLUT.
- the configuration of the row decoder 61 and the column decoder 62 is the same as the memory example shown in FIG.
- n ⁇ t-bit data is input to the column decoder 62 from the MLUT array 60b.
- the row decoder 61 outputs re and we for o rows. That is, the o line corresponds to the s line of the MLUT.
- a word line of a specific memory cell is selected by activating only one bit among the o bits. Since t MLUTs output n-bit data, n ⁇ t-bit data is selected from the MLUT array 60b, and the column decoder 62 is used to select one of them.
- FIG. 6 is a diagram schematically showing an MLUT array configured by horizontally stacking MLUTs.
- the MLUT array 60b is configured by arranging MLUTs 30 in an array as illustrated.
- the memory used as the MLUT 30 has the same address line width and data line width.
- a pseudo bidirectional line is defined by pairing each bit of the address line and the data line. This pseudo bidirectional line is called “AD pair”.
- bidirectional lines are indicated by bidirectional arrows, and bidirectional lines having a data line width of 4 bits are indicated.
- FIG. 7 is a diagram showing an example of an MLUT having a data line width of 8 bits. In FIG. 6, it is indicated by a bidirectional arrow, but in FIG. 7, each address line and data line is indicated by a unidirectional arrow.
- the MLUT 30 has inputs of addresses A0L to A7L (an example of a logical address LA, the same applies hereinafter) shown in FIG. 7 from the left direction, and inputs of addresses A0R to A7R shown in FIG. 7 from the right direction. Further, there are outputs of data D0L to D7L (an example of logic data LD, the same applies hereinafter) shown in FIG. 7 in the left direction, and outputs of data D0R to D7R shown in FIG. 7 in the right direction.
- addresses A0L to A7L an example of logical address LA, the same applies hereinafter
- the MLUT according to the present embodiment is composed of 4K (256 words ⁇ 16 bits) bits ⁇ 2, as will be described later.
- the n value refers to the number of address lines or data lines extending from one side facing the adjacent MLUT 30. Since the 4-bit length type MLUT requires transmission of a plurality of bits, an address line or a data line extending from one side is “4”, and an n value is “4”. In the bidirectional MLUT, the data transmission amount is half of the n value due to the relationship with the adjacent MLUT, and the signal path is shifted by one stage. Therefore, in order to realize the longest signal path, the signal path is (n value / 2). The number of steps divided by) is required. The “stage number” indicates the number of elements to be connected in the circuit.
- the “number of stages” of the MLUT also indicates the number of MLUTs to be connected like the number of stages of a normal circuit.
- the number of MLUT logic stages is represented by the following equation.
- Formula 1: MLUT logic stage number m / (n value / 2)
- m is a signal bus and indicates an input signal line to be a logic cone.
- n value is “4”
- the n value / 2 is “2”.
- the MRLD having the above-described MLUT performs data processing of a plurality of bits on adjacent MLUTs and configures a logic unit with a plurality of memory units. Since the number of memory units increases in proportion to the square of the address line, even if the number of data lines is the same, if the number of addresses in each memory unit is reduced, the total number of memory cells required can be reduced. it can.
- FIG. 8 is a diagram showing an example in which the configuration data is expanded into MLUT.
- the MLUT array 60b shown in FIG. 8 includes MLUTs 30A to 30E, and each is connected by an input address line or an output data line indicated by a unidirectional arrow.
- the MLUT 30A and MLUT 30B are configured as a connection circuit connected to the MLUT 30C.
- the MLUT 30C is a connection circuit connected to the MLUT 30F and constitutes an AND circuit.
- the MLUT 30F is configured as an output buffer described later.
- MLUT is such that output data of a memory unit is connected to input data of another memory unit.
- the memory unit can use a large memory such as SRAM (Static Random Access Memory), the number of input / output lines can be increased.
- the MLUT 30 further includes address decoders 11A and 11C and output buffers 13A and 13C. Although not shown, a selection circuit for switching between the logic address LA and the memory operation address AD is provided in front of the address decoders 11A and 11C.
- the output buffers 13A and 13C are selection circuits that switch the output data D0 to D7 or the read data RD, and operate as buffers that temporarily hold the output data according to the clock (CLK).
- Output buffers 13A and 13C (in the second example to be described later, 13A to 13D, the same applies hereinafter) read data from the data line of the memory unit in synchronization with the clock and hold it, thereby holding the FF (Flip-flop) function is provided.
- the MLUT composed of the synchronous memory unit can provide the FF function.
- Output buffers 13A and 13C include a sense amplifier that amplifies the voltage output from the bit line of the memory cell.
- the asynchronous MLUT that receives the clock output from the delay element similarly has an I / O buffer. However, since the asynchronous MLUT is used for the combinational logic circuit, it is used so as not to configure the FF.
- the synchronization operation is described in “3. MLUT Logic, Connection, and Synchronization Operation”.
- the delay time is synchronized with the maximum clock time so as to be comprehensively included in the clock period, and the circuit is configured within such timing constraints.
- the delay time does not seem to be affected.
- synchronization waiting to the clock occurs in units of LU (Logic Unit) constituting the FPGA, and each synchronization waiting time is added in series as the entire FPGA, thereby slowing down the operation speed of the FPGA. .
- LU Logical Unit
- a clock is inserted into the synchronous memory unit in the opposite direction (also referred to as back-forward) to the asynchronous memory unit to avoid malfunction due to wiring delay.
- the maximum time for accessing the memory data is used as the delay amount.
- MLUT Logic, Connection, and Synchronization Operation The MLUT logic, connection, and synchronization operation will be described below with reference to an example.
- the address of MLUT 30 is A0 to A7
- the output data is D0 to D7
- FIG. 9 is a diagram illustrating an example of the MLUT corresponding to the truth table.
- the MLUTs 30a and 30b shown in FIG. 9 are connected to four addresses A0 to A3 and four output data D0 to D3.
- the address A2 of the MLUT 30a is connected to the output data D0 of the adjacent MLUT 30b, and the MLUT 30a receives the logic data output from the MLUT 30b as the logic address input.
- the output data D2 of the MLUT 30a is connected to the address A0 of the MLUT 30b, and the logic data output from the MLUT 30a is received by the MLUT 30b as a logic address input.
- the configuration data (truth table data) for realizing the circuit configuration shown below with the MLUT is that of the MLUT 30a or 30b shown in FIG.
- FIG. 10 is a diagram illustrating an example of an MLUT that operates as a logic circuit.
- the addresses A0 and A1 are input to the 2-input NOR circuit 701
- the addresses A2 and A3 are input to the 2-input NAND circuit 702.
- the output of the 2-input NOR circuit 701 and the output of the 2-input NAND circuit 702 are input to the 2-input NAND circuit 703, and a logic circuit is configured to output the output of the 2-input NAND circuit 703 to the output data D0.
- FIG. 11 is a diagram showing a truth table of the logic circuit shown in FIG. Since the logic circuit of FIG. 10 has four inputs, all the inputs A0 to A3 are used as inputs. On the other hand, since there is only one output, only the output D0 is used as an output. “*” Is written in the columns of outputs D1 to D3 of the truth table. This indicates that any value of “0” or “1” may be used. However, when the truth table data is actually written into the MLUT for reconstruction, it is necessary to write either “0” or “1” in these fields.
- FIG. 12 is a diagram illustrating an example of an MLUT that operates as a connection circuit.
- the MLUT as the connection circuit operates so as to output the signal of the address A0 to the output data D1, the signal of the address A1 to the output data D2, and the signal of the address A2 to the output data D3.
- the MLUT as the connection circuit further operates to output the signal of the address A3 to the output data D0.
- FIG. 13 is a diagram showing a truth table of the connection circuit shown in FIG.
- the connection circuit shown in FIG. 12 has 4 inputs and 4 outputs. Therefore, all inputs of addresses A0 to A3 and all outputs of output data D0 to D3 are used.
- the MLUT outputs the address A0 signal to the output data D1, the address A1 signal to the output data D2, the address A2 signal to the output data D3, and the address A3. It operates as a connection circuit that outputs the above signal to the output data D0.
- FIG. 14 is a diagram illustrating an example in which one MLUT operates as a logic circuit and a connection circuit.
- the addresses A0 and A1 are inputs to the 2-input NOR circuit 171
- the output of the 2-input NOR circuit 171 and the address A2 are input to the 2-input NAND circuit 172
- the output of the 2-input NAND circuit 172 Is output to the output data D0.
- a connection circuit that outputs the signal of the address A3 to the output data D2 is configured.
- FIG. 15 shows a truth table of the logic circuit and the connection circuit shown in FIG.
- the logic circuit of FIG. 14 uses three inputs of addresses A0 to A3 and uses one output data D0 as an output.
- a connection circuit for outputting the signal of the address A3 to the output data D2 is configured.
- D. Sequential Circuit Function Like a combinational circuit, a sequential circuit cannot describe its operation with the truth table data itself held in the configuration memory. In the present embodiment, the sequential circuit is realized using the function of the output buffer 13.
- the D-type flip-flop forms the following truth table with respect to the output of the memory unit that operates synchronously.
- FIG. 16 shows an example of the hardware configuration of the information processing apparatus.
- the information processing apparatus 210 includes a processor 211, an input unit 212, an output unit 213, a memory unit 214, and a drive device 215.
- the processor 211 executes software related to a configuration data generation method input to the input unit 212, a circuit description language such as C language description or hardware description language (HDL) for designing an integrated circuit, and the software.
- the truth table data generated by this is stored in the memory unit 214.
- the processor 211 executes the above-described software, performs placement / wiring processing on the circuit description stored in the memory unit 214, and outputs truth table data to the output unit 213.
- An MRLD 100 that is a programmable semiconductor device can be connected to the output unit 213, and the processor 211 executes logical configuration processing and writes the generated truth table data into the MRLD 100 via the output unit 213.
- the output unit 213 may be connected to an external network.
- the software program is transmitted / received via a network.
- the drive device 215 is a device that reads and writes a storage medium 217 such as a DVD (Digital Versatile Disc) or flash memory, for example.
- the drive device 215 includes a motor that rotates the storage medium 217, a head that reads and writes data on the storage medium 217, and the like. Note that the storage medium 217 can store a logical configuration program or truth table data.
- the drive device 215 reads the program from the set storage medium 217.
- the processor 211 stores the program or truth table data read by the drive device 215 in the memory unit 214.
- truth table data When the truth table data is read into a programmable device, a function as a logical element is constructed by specific means in which the truth table data as a program and hardware resources cooperate.
- the truth table data can also be said to be data having a structure indicating a logical structure called a truth table.
Landscapes
- Physics & Mathematics (AREA)
- Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Condensed Matter Physics & Semiconductors (AREA)
- General Physics & Mathematics (AREA)
- Manufacturing & Machinery (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Power Engineering (AREA)
- Logic Circuits (AREA)
Abstract
複数のメモリセルを有し、少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを前記論理ゲートに従って論理演算して、生成される出力データと、前記入力データとの対応から、得られる構成データを、前記複数のメモリセルに格納して、前記論理回路として動作するように構成される、メモリユニットと、前記構成データが格納される前記複数のメモリセルへのアドレス信号を、入力データとして前記メモリユニットに出力するアドレスデコーダと、を備えるプログラム可能なデバイス。論理回路を構成する構成データに含まれるゲート回路の圧縮し、論理回路構成に必要なプログラム可能なデバイスのリソースを少なくすることができる。
Description
本発明は、プログラム可能なデバイス、その論理構成方法、及びそのプログラムに関する。
FPGA(Field-Programmable Gate Array)などのプログラム可能な半導体装置は、その再書込み性によって与えられる柔軟性のため、広く使用されている(例えば、特許文献1)。
図1は、FPGAの一例を示す図である。図示されるのは、Xilinx(登録商標)製のものである。FPGA110は、CLB(構成可能論理ブロック)114と呼ばれるブログラム可能な2次元セルと、縦ルーティングチャネル116と、縦ルーティングチャネル116とCLB114の間を通過する横ルーティングチャネル115と、横ルーティングチャネル115と縦ルーティングチャネル116との間にスイッチブロック(図示されない)とを有する。
CLB114は、所定の大きさの論理素子(LE)を含んでいる(特許文献1、図1)。例えばLEは、4入力ルックアップテーブル(LUT)、レジスタおよび、いくつかのルーティング回路を含む。このルーティング回路は、順序ロジックまたは演算が所望される場合に、レジスタを使用可能とするか、組み合わせ論理または演算が所望される場合に、レジスタをバイパス可能とする。このルーティング回路は、プログラマブルであり、LE間の信号を伝達することによって、複数のLEを組み合わせる。
FPGAの設計は、「HDL(ハードウェア記述言語)」により行うのが一般的である。これはLEを構成する回路を直接設計するのでなく、機能を言語で記述して定義したものである。
HDLで動作定義した回路を、実際のゲート回路に変換することを、「論理合成」という。この論理合成工程では、HDLを、FPGAのLE単位に切り分ける「テクノロジーマッピング」が行われる。テクノロジーマッピングでは、ブーリアンネットワークの各接点を、AND(論理積)ゲート、OR(論理和)ゲート、NOT(論理反転)ゲートによって表現し、それらのゲートの繋がりからなるブーリアンネットワークを生成する。
ブーリアンネットワークに対して、接点のファンアウトが2点以上で分節し、それをツリーとみなす。ツリーごとに、ライブラリを当てはめることで、1つ以上のLEを単位とした論理要素と、それらの接続関係のリスト「ネットリスト」が生成される(特許文献1、図16)。
上記のように、テクノロジーマッピングを行うことで、FPGAの論理構成単位でのネットリストが得られる。しかし、上記の方法では、ゲート回路の圧縮が記載も示唆もされていない。
これは、FPGAは、LEの組合せで構成されるため、LUTの大きさに制限があるためである。
上記課題を解決する形態は、以下の項目により示される。
[項目1]
プログラム可能なデバイスであって、
複数のメモリセルを有し、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを前記論理ゲートに従って論理演算して、生成される出力データと、前記入力データとの対応から、得られる構成データを、前記複数のメモリセルに格納して、前記論理回路として動作するように構成される、メモリユニットと、
前記構成データが格納される前記複数のメモリセルへのアドレス信号を、入力データとして前記メモリユニットに出力するアドレスデコーダと、を備えるプログラム可能なデバイス。
[項目2]
前記メモリユニットが有する複数のメモリセルの一部に、構成データを格納する項目1に記載のプログラム可能なデバイス。
[項目3]
前記構成データは、前記メモリユニットのバンク毎に記憶される、項目1又は2に記載のプログラム可能なデバイス。
[項目4]
前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記第1及び第2メモリユニットはそれぞれ、前記構成データを前記メモリセルに記憶し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続される、項目1~3の何れか1項に記載のプログラム可能なデバイス。
[項目5]
前記メモリユニットは、一辺と、前記一辺と反対側の他辺で他のメモリユニットに接続するとともに、複数のメモリユニットを有し、且つ、
前記複数のメモリユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1構成データと前記他辺から論理値を出力するための第2構成データとを記憶し、
前記構成データを生成するステップは、前記第1構成データと、前記第2構成データを生成するステップを含む、項目1~3の何れか1つに記載のプログラム可能なデバイス。
[項目6]
前記構成データは、真理値表データである、項目1~4の何れか1項に記載のプログラム可能なデバイス。
[項目7]
データを記憶するメモリセルを複数備えたメモリユニットを有する、プログラム可能なデバイスの構成データの生成方法であって、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを前記論理ゲートに従って論理演算して、出力データを生成し、
前記入力データと、出力データの対応から、構成データを生成し、
前記生成した構成データを、前記メモリユニットに書き込む、ことを有する方法。
[項目8]
前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続され、
前記構成データを、前記第1のメモリユニット用の第1構成データと、前記第2のメモリユニット用の第2構成データに分割する、項目7に記載の方法。
[項目9]
前記構成データは、真理値表データである、項目7に記載の方法。
[項目10]
データを記憶するメモリセルを複数備えたメモリユニットを複数有する、プログラム可能なデバイスの構成データを生成するためのプログラムであって、
プロセッサに、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを論理演算して、出力データを生成し、
前記入力データと、出力データの対応から、構成データを生成し、
前記生成した構成データを、前記プログラム可能なデバイスに書き込む、処理を実行させるプログラム。
[項目11]
前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続され、
前記第1のメモリユニット用の第1構成データと、前記第2のメモリユニット用の第2構成データに分割する処理を実行させる、項目10に記載のプログラム。
[項目12]
前記構成データは、真理値表データである、項目10又は11に記載のプログラム。
[項目13]
項目10~12の何れか1項に示すプログラムを格納する記憶媒体。
プログラム可能なデバイスであって、
複数のメモリセルを有し、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを前記論理ゲートに従って論理演算して、生成される出力データと、前記入力データとの対応から、得られる構成データを、前記複数のメモリセルに格納して、前記論理回路として動作するように構成される、メモリユニットと、
前記構成データが格納される前記複数のメモリセルへのアドレス信号を、入力データとして前記メモリユニットに出力するアドレスデコーダと、を備えるプログラム可能なデバイス。
[項目2]
前記メモリユニットが有する複数のメモリセルの一部に、構成データを格納する項目1に記載のプログラム可能なデバイス。
[項目3]
前記構成データは、前記メモリユニットのバンク毎に記憶される、項目1又は2に記載のプログラム可能なデバイス。
[項目4]
前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記第1及び第2メモリユニットはそれぞれ、前記構成データを前記メモリセルに記憶し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続される、項目1~3の何れか1項に記載のプログラム可能なデバイス。
[項目5]
前記メモリユニットは、一辺と、前記一辺と反対側の他辺で他のメモリユニットに接続するとともに、複数のメモリユニットを有し、且つ、
前記複数のメモリユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1構成データと前記他辺から論理値を出力するための第2構成データとを記憶し、
前記構成データを生成するステップは、前記第1構成データと、前記第2構成データを生成するステップを含む、項目1~3の何れか1つに記載のプログラム可能なデバイス。
[項目6]
前記構成データは、真理値表データである、項目1~4の何れか1項に記載のプログラム可能なデバイス。
[項目7]
データを記憶するメモリセルを複数備えたメモリユニットを有する、プログラム可能なデバイスの構成データの生成方法であって、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを前記論理ゲートに従って論理演算して、出力データを生成し、
前記入力データと、出力データの対応から、構成データを生成し、
前記生成した構成データを、前記メモリユニットに書き込む、ことを有する方法。
[項目8]
前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続され、
前記構成データを、前記第1のメモリユニット用の第1構成データと、前記第2のメモリユニット用の第2構成データに分割する、項目7に記載の方法。
[項目9]
前記構成データは、真理値表データである、項目7に記載の方法。
[項目10]
データを記憶するメモリセルを複数備えたメモリユニットを複数有する、プログラム可能なデバイスの構成データを生成するためのプログラムであって、
プロセッサに、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを論理演算して、出力データを生成し、
前記入力データと、出力データの対応から、構成データを生成し、
前記生成した構成データを、前記プログラム可能なデバイスに書き込む、処理を実行させるプログラム。
[項目11]
前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続され、
前記第1のメモリユニット用の第1構成データと、前記第2のメモリユニット用の第2構成データに分割する処理を実行させる、項目10に記載のプログラム。
[項目12]
前記構成データは、真理値表データである、項目10又は11に記載のプログラム。
[項目13]
項目10~12の何れか1項に示すプログラムを格納する記憶媒体。
本実施形態に係るプログラム可能なデバイスは、論理回路を構成する構成データに含まれるゲート回路を圧縮し、必要なプログラム可能なデバイスのリソースを少なくすることができる。
以下、本実施形態を説明するために、図面を参照して、1.プログラム可能なデバイスの構成データの生成方法、2.プログラム可能なデバイスの構成、3.MLUTの論理、接続、及び同期動作、 4.真理値表データの生成方法について、順に説明する。
1.プログラム可能なデバイスの構成データの生成方法
図2Aは、論理回路構成データと構成データの関係を示す図である。310は、構成対象となる回路図である。回路図310には、2つ以上の論理ゲートを含まれる。
図2Aは、論理回路構成データと構成データの関係を示す図である。310は、構成対象となる回路図である。回路図310には、2つ以上の論理ゲートを含まれる。
320は、従来の構成データの割り当て方法である。各回路や配線を、上述したCLB114が構成する。CLB114は、上述のように、データを記憶するメモリセルを複数備えたメモリユニットを有する。CLB114のLUTに割り当てられる構成データは、後述する真理値表データに相当する。
330は、本実施形態に係る構成データの生成方法を示す。330は、デジタル信号の入力データA1~A3を、論理ゲートに基づいて論理演算して、出力データOutを生成し、入力データと、出力データの対応から、1つの構成データを生成する。
このように、少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを上記論理ゲートに従って論理演算して、生成される出力データと、入力データとの対応から、構成データを生成する。図2Bは、図2Aで生成した構成データを示す真理値表である。このように、従来多数のCLB114を必要としていたが、1つの構成データを生成とすることで、より少ないデバイスからなるプログラム可能なデバイスで、複数の論理ゲートからなる論理回路を構成することができる。
図3は、本実施形態に係るプログラム可能なデバイスの構成データ生成方法の一例を示す図である。図3の左側は、「従来の構成データ生成方法」である。従来の方法では、まず、論理回路を記載するRTL(Register Transfer Level)を生成する(S101)。次に、RTLからから論理回路の実装設計を行う(S102)。当該ステップは、論理回路のライブラリを参照して、実行される。これにより、ゲート・レベルのネットリストが生成される(S103)。ネットリストは、プログラム可能なデバイスの装置ライブラリを参照して、真理値表等の構成データにコンパイル(S104)されて、プログラム可能なデバイスに書き込まれる(S105)。
図3の右側は、「本実施形態に係る構成データ生成方法」である。S201は、S101と同様である。S202では、少なくとも2つ以上の論理ゲートを含む論理回路を構成するRTLにおける、デジタル信号の入力データを論理演算して、出力データを生成し、入力データと、出力データの対応から、構成データを生成する(S202)。次に、プログラム可能なデバイスのメモリユニットが、複数ある場合は、メモリユニットの数に合わせて構成データを分割する(S203)。S204では、S104と同様である。
このように、本実施形態に係るプログラム可能なデバイスの構成データ生成方法は、論理回路を構成する構成データに含まれるゲート回路の圧縮し、必要なプログラム可能なデバイスのリソースを少なくすることができる。一方、入力(A1~A3)が多く成れば、入力数に応じて必要なメモリ空間が大きくなるため、1つのCLB116より大きなメモリ空間が必要になる。そのため、大きなメモリ空間を有するメモリユニット利用するか、複数のメモリを適用することで、プログラム可能なデバイスをする。
2.プログラム可能なデバイス
(1)メモリをつかったプログラム可能なデバイス
プログラム可能なデバイス100は、メモリユニットを有する。図4は、メモリをつかったプログラム可能なデバイスの一例を示す図である。図4に示す100は、プログラム可能なデバイス100の一例である。プログラム可能なデバイス100は、メモリユニット60、メモリ読出し動作、書込み動作対象となるメモリセルを特定する行デコーダ61、及び、列デコーダ62を有する。
(1)メモリをつかったプログラム可能なデバイス
プログラム可能なデバイス100は、メモリユニットを有する。図4は、メモリをつかったプログラム可能なデバイスの一例を示す図である。図4に示す100は、プログラム可能なデバイス100の一例である。プログラム可能なデバイス100は、メモリユニット60、メモリ読出し動作、書込み動作対象となるメモリセルを特定する行デコーダ61、及び、列デコーダ62を有する。
メモリユニット60は、同期SRAMで構成される。メモリユニット60のメモリセルには、真理値表とみなされる構成データがそれぞれ記憶されることで、少なくとも構成データを記憶するメモリユニット60は、論理要素、又は、接続要素、又は、論理要素及び接続要素として動作する論理動作を行う。例えば、データをアドレスで読み出すと、その読出しデータが論理動作の出力結果となる。
なお、一実施形態によれば、ここで真理値表が記憶されるメモリユニット60のメモリ空間60aを、プログラム可能なデバイス100の機能を発揮するメモリユニットと言ってもよい。他の領域は、通常のメモリ機能を有する。なお、メモリユニットの一部の空間をプログラム可能なデバイスとして利用可能なのは、従来、複数の論理ゲートからなる論理回路を複数のCLBを要して構成したいたが、図2Aおよび図2Bで説明したように1つの構成データ(真理値表データ)で構成できるため、その構成データを格納するメモリ空間で、従来のプログラム可能なデバイスを構成できるためである。
メモリユニット60の書き込み動作は、書込用アドレスAD、及び書込用データWDによりなされ、読出し動作は、書込用アドレスAD、及び読出用データRDによりなされる。
行デコーダ61は、リード・イネーブル信号re、ライト・イネーブル信号we等の制御信号に従って、書込用アドレスADのmビットのうちxビットをデコードし、デコードアドレスnをMLUT30に対して出力する。デコードアドレスnは、MLUT30内のメモリセルを特定するアドレスとして使用される。
列デコーダ62は、書込用アドレスADのmビットのうちyビットをデコードし、行デコーダ61と同様の機能を有して、デコードアドレスnをMLUT30に対して出力するとともに、書込用データWDの出力、及び、読出用データRDを入力する。
(2)MRLD
図5は、本実施形態に係るプログラム可能なデバイスにMRLDを使用した例である。図5に示す100は、MRLDの一例である。MRLD100は、同期メモリユニットを利用したMLUT30を複数個、アレイ状に配置したMLUTアレイ60b、MLUT30のメモリ読出し動作、書込み動作を特定する行デコーダ61、及び、列デコーダ62を有する。
図5は、本実施形態に係るプログラム可能なデバイスにMRLDを使用した例である。図5に示す100は、MRLDの一例である。MRLD100は、同期メモリユニットを利用したMLUT30を複数個、アレイ状に配置したMLUTアレイ60b、MLUT30のメモリ読出し動作、書込み動作を特定する行デコーダ61、及び、列デコーダ62を有する。
MLUTは、同期メモリユニットで構成される。なお、ここで説明する同期メモリユニットは、MLUTの実施例であり、MLUTは、例えば、MLUTは、1回のみ書込可能、消去不可なOTP ROM (One Time Programmable ROM)で構成されてもよい。メモリの記憶素子には、真理値表とみなされるデータがそれぞれ記憶されることで、MLUTは、論理要素、又は、接続要素、又は、論理要素及び接続要素として動作する論理動作を行う。MLUTは、真理値表データを記憶することで、このような論理動作が可能であるため、MRLDは、図2Bのような真理値表を記憶することで、構成されるプログラム可能なデバイスに、適している。
MRLD100の論理動作では、実線で示される論理用アドレスLA、及び論理用データLDの信号を使用する。論理用アドレスLAは、論理回路の入力信号として使用される。そして、論理用データLDは、論理回路の出力信号として使用される。MLUTアレイ60bにおいて、論理用アドレスLAおよび論理用データLDは、MLUT同士を接続する信号線として使用され、例えば、MLUTの論理用アドレスLAは、隣接するMLUTの論理動作用データLDのデータ線と接続している。
MRLD100の論理動作により実現される論理は、MLUTに記憶される真理値表データにより実現される。いくつかのMLUTは、AND回路、加算器などの組み合わせ回路としての論理要素として動作する。他のMLUTは、組み合わせ回路を実現するMLUT間を接続する接続要素として動作する。MLUTが、論理要素、及び接続要素を実現するための真理値表データの書き換えは、メモリへの書き込み動作によりなされる。
MRLD100の書き込み動作は、メモリ動作用アドレスAD、及び書込用データWDによりなされ、読出し動作は、メモリ動作用アドレスAD、及び読出用データRDによりなされる。
メモリ動作用アドレスADは、MLUT内のメモリセル(図5等で後述)を特定するアドレスであり、メモリの読出し動作、書き込み動作、両方の場合で使用される。メモリ動作用アドレスADは、m本の信号線で、2のm乗の数nのメモリセルを特定する。行デコーダ61は、m本の信号線を介してMLUTアドレスを受け取るとともに、MLUTアドレスをデコードして、メモリ動作の対象となるMLUT内のメモリセルを特定する。なお本実施形態においては、後述するが、論理用アドレスLAのデコードは、MLUT内のデコーダにより行う。
行デコーダ61、および列デコーダ62の構成は、図4に示すメモリの例と同じである。
なお、MLUTのアレイがs行t列である場合、MLUTアレイ60bからはn×tビットのデータが列デコーダ62に入力される。ここで、各行毎のMLUTを選択するために行デコーダ61はo行分のre,weを出力する。つまり、o行は、MLUTのs行に相当する。ここでoビットのうち、1ビットだけをアクティブにすることで、特定のメモリセルのワード線が選択される。そしてt個のMLUTがnビットのデータを出力するため、n×tビットのデータがMLUTアレイ60bから選択され、そのうち1列を選択するのに列デコーダ62が使われる。
双方向MLUT配置
図6は、MLUTを横積みして構成されるMLUTアレイを概略的に示す図である。MLUTアレイ60bは、図示されるように、MLUT30をアレイ状に配置したものである。MLUT30として用いるメモリはアドレス線の幅とデータ線の幅が等しい。アドレス線とデータ線の1ビットずつを対にして、擬似的な双方向線を定義する。この擬似的な双方向線を「AD対」と呼ぶ。図6では、双方向線が、双方向矢印で示され、4ビットのデータ線幅の双方向線が示される。アドレス線の幅とデータ線の幅がNビットのメモリを用いることで、AD対をN本もつMLUTが実現される。
図6は、MLUTを横積みして構成されるMLUTアレイを概略的に示す図である。MLUTアレイ60bは、図示されるように、MLUT30をアレイ状に配置したものである。MLUT30として用いるメモリはアドレス線の幅とデータ線の幅が等しい。アドレス線とデータ線の1ビットずつを対にして、擬似的な双方向線を定義する。この擬似的な双方向線を「AD対」と呼ぶ。図6では、双方向線が、双方向矢印で示され、4ビットのデータ線幅の双方向線が示される。アドレス線の幅とデータ線の幅がNビットのメモリを用いることで、AD対をN本もつMLUTが実現される。
図7は、8ビットのデータ線幅をもつMLUTの一例を示す図である。図6では、双方向矢印で示したが、図7では、アドレス線およびデータ線をそれぞれ、単方向矢印で示す。MLUT30は、左方向から図7に示すアドレスA0L~A7L(論理用アドレスLAの例である。以下同じ。)の入力があり、及び、右方向から図7に示すアドレスA0R~A7Rの入力があり、また、左方向へ図7に示すデータD0L~D7L(論理用データLDの例である。以下同じ。)の出力があり、右方向へ図7に示すデータD0R~D7Rの出力がある。n値=8のMLUTは従来方式では1MビットとなりCLB(Configurable Logic Blocks)相当が4Mビットと大規模化してしまう。それに対して本実施形態に係るMLUTは、後述するように、4K(256ワード×16ビット)ビット×2で構成される。
なお、n値とは、隣接するMLUT30に向かい合う1辺から出るアドレス線又はデータ線の数を言う。4ビット長型MLUTは、複数ビット伝送を要件としているので、1辺からでるアドレス線又はデータ線は「4」であり、n値は「4」である。双方向型MLUTでは、隣接するMLUTとの関係で、データ伝送量がn値の半分となり、且つ、信号パスが1段ずれるので、最長信号パスを実現するには信号パスを(n値/2)で割った段数だけ必要である。なお、「段数」とは、回路において、接続する素子の数を示す。MLUTの「段数」も、通常の回路の段数のように、接続するMLUTの数を示す。MLUT論理段数は、以下の式で示される。
式1: MLUT論理段数 = m/(n値/2)
なお、ここでmは、信号バスであり、論理コーンにする入力信号線を示す。
n値は「4」であるが、隣接するMLUTは、一方向に2つあるので、n値/2は「2」となる。C言語の論理演算が、8ビットで演算されており、論理コーンの入力信号線mが8本であった場合、MLUT論理段数は、「8/(4/2)=4」となる。つまり、8ビット演算をMLUTで行う場合、4つの段数を構成するMLUTが必要になる。尚、本MLUTは双方向性であるので、折り返しをすることで、段数を少なくすることが出来る。
式1: MLUT論理段数 = m/(n値/2)
なお、ここでmは、信号バスであり、論理コーンにする入力信号線を示す。
n値は「4」であるが、隣接するMLUTは、一方向に2つあるので、n値/2は「2」となる。C言語の論理演算が、8ビットで演算されており、論理コーンの入力信号線mが8本であった場合、MLUT論理段数は、「8/(4/2)=4」となる。つまり、8ビット演算をMLUTで行う場合、4つの段数を構成するMLUTが必要になる。尚、本MLUTは双方向性であるので、折り返しをすることで、段数を少なくすることが出来る。
このように、上記のMLUTを有するMRLDは、隣接するMLUTに対して複数ビットのデータ処理を行うとともに、複数のメモリユニットで論理部を構成する。メモリユニットは、アドレス線の二乗に比例して増えるので、データ線の数は同じであっても、各メモリユニットのアドレス数を少なくすれば、トータルに必要なメモリセルの数を少なくすることができる。
よって、安価な大容量メモリを利用する場合、容量が使える場合、大容量メモリをつかったプログラム可能なデバイスで構築し、メモリ容量に制限がある場合、プログラム可能な専用デバイスであるMRLDと使い分け可能になる。
図8は、構成データをMLUTに展開した例を示す図である。図8に示されるMLUTアレイ60bは、MLUT30A~30Eから構成され、それぞれが、単方向矢印で示す入力アドレス線または出力データ線で接続されている。図8に示す構成データを示す例では、MLUT30AおよびMLUT30Bでは、MLUT30Cに接続する接続回路として構成される。MLUT30Cは、MLUT30Fに接続する接続回路であるとともに、AND回路を構成する。MLUT30Fは、後述される出力バッファとして構成される。
MLUTは、メモリユニットの出力データが、他のメモリユニットの入力データに接続される。また、メモリユニットは、SRAM(Static Random Access Memory)等の大型メモリを使用できるために、入出力線を増やすことができる。
MLUT30はさらに、アドレスデコーダ11Aおよび11C、出力バッファ13Aおよび13Cを有する。なお、図示しないが、アドレスデコーダ11A、11Cの前段に、論理用アドレスLA及びメモリ動作用アドレスADを切り替えるための選択回路を有する。出力バッファ13Aおよび13Cは、出力データD0~D7、又は、読出用データRDを切り替える選択回路であるとともに、出力データを、クロック(CLK)に従い一時的に保持するバッファとして動作する。
出力バッファ
出力バッファ13Aおよび13C(後述する第2例では、13A~13Dである。以下同じ)は、クロックに同期して、メモリユニットのデータ線からデータを読み出し、それを保持することで、FF(フリップフロップ)の機能を提供している。つまり、FFのQ出力を、I/Oバッファに維持し、その前段の論理回路と接続関係を、真理値表データで実現することで、同期メモリユニットから構成されるMLUTがFF機能を提供できる。なお、出力バッファ13Aおよび13Cは、メモリセルのビット線から出力される電圧を増幅するセンスアンプを含んでいる。なお、遅延素子から出力されるクロックを受け取る非同期MLUTも同様に、I/Oバッファを有する。しかし、非同期MLUTは、組合せ論理回路用に使用されるため、FFを構成しないように使用される。同期動作については、「3.MLUTの論理、接続、及び同期動作」で説明される。
出力バッファ13Aおよび13C(後述する第2例では、13A~13Dである。以下同じ)は、クロックに同期して、メモリユニットのデータ線からデータを読み出し、それを保持することで、FF(フリップフロップ)の機能を提供している。つまり、FFのQ出力を、I/Oバッファに維持し、その前段の論理回路と接続関係を、真理値表データで実現することで、同期メモリユニットから構成されるMLUTがFF機能を提供できる。なお、出力バッファ13Aおよび13Cは、メモリセルのビット線から出力される電圧を増幅するセンスアンプを含んでいる。なお、遅延素子から出力されるクロックを受け取る非同期MLUTも同様に、I/Oバッファを有する。しかし、非同期MLUTは、組合せ論理回路用に使用されるため、FFを構成しないように使用される。同期動作については、「3.MLUTの論理、接続、及び同期動作」で説明される。
出力バッファを用いた同期動作
同期設計では、その遅延時間を包括的にクロック期間に収まるように最大のクロック時間で同期させ、このようなタイミング制約内で、回路構成されるので、配線やLUTの遅延時間が影響しないように見えている。このようにすると、FPGAを構成するLU(Logic Unit)単位で、クロックへの同期待ちが生じ、各同期待ち時間が、FPGA全体として直列的に付加されることで、FPGAの動作速度が遅くなる。
同期設計では、その遅延時間を包括的にクロック期間に収まるように最大のクロック時間で同期させ、このようなタイミング制約内で、回路構成されるので、配線やLUTの遅延時間が影響しないように見えている。このようにすると、FPGAを構成するLU(Logic Unit)単位で、クロックへの同期待ちが生じ、各同期待ち時間が、FPGA全体として直列的に付加されることで、FPGAの動作速度が遅くなる。
MRLDの同期設計では、同期用のメモリユニットに、非同期のメモリユニットと逆の向き(バックフォワードともいう)にクロックを入れて、配線遅延による誤動作を回避している。メモリIPのスペックから算出して、メモリデータがアクセスされる最大時間を遅延量としている。
3.MLUTの論理、接続、及び同期動作
以下、MLUTの論理、接続、及び同期動作を、例を用いて説明する。なお、上記においては、MLUT30のアドレスはA0~A7、および、出力データは、D0~D7でそれぞれ、8つのアドレス又はデータがあったが、ここでは、説明の簡易化のために、4つのアドレス又はデータで説明する。
以下、MLUTの論理、接続、及び同期動作を、例を用いて説明する。なお、上記においては、MLUT30のアドレスはA0~A7、および、出力データは、D0~D7でそれぞれ、8つのアドレス又はデータがあったが、ここでは、説明の簡易化のために、4つのアドレス又はデータで説明する。
図9は、真理値表に対応するMLUTの一例を示す図である。図9に示すMLUT30a、30bは、4つのアドレスA0~A3と、4つの出力データD0~D3に接続される。MLUT30aのアドレスA2は、隣接するMLUT30bの出力データD0と接続しており、MLUT30aは、MLUT30bから出力される論理用データを、論理用アドレス入力として受け取る。また、MLUT30aの出力データD2は、MLUT30bのアドレスA0と接続しており、MLUT30aが出力する論理用データは、MLUT30bで論理用アドレス入力として受け取られる。
以下に示す回路構成をMLUTで実現するための構成データ(真理値表データ)は、図9に示すMLUT30a又は30bのものである。
以下に示す回路構成をMLUTで実現するための構成データ(真理値表データ)は、図9に示すMLUT30a又は30bのものである。
A.論理回路を構成する真理値表データ
図10は、論理回路として動作するMLUTの一例を示す図である。本例では、アドレスA0及びA1を2入力NOR回路701の入力とし、アドレスA2及びA3を2入力NAND回路702の入力とする。そして、2入力NOR回路701の出力と、2入力NAND回路702の出力を、2入力NAND回路703に入力し、2入力NAND回路703の出力を出力データD0に出力する論理回路を構成する。
図10は、論理回路として動作するMLUTの一例を示す図である。本例では、アドレスA0及びA1を2入力NOR回路701の入力とし、アドレスA2及びA3を2入力NAND回路702の入力とする。そして、2入力NOR回路701の出力と、2入力NAND回路702の出力を、2入力NAND回路703に入力し、2入力NAND回路703の出力を出力データD0に出力する論理回路を構成する。
図11は、図10に示す論理回路の真理値表を示す図である。図10の論理回路は、4入力のため、入力A0~A3の全ての入力を入力として使用する。一方、出力は、1つのみなので、出力D0のみを出力として使用する。真理値表の出力D1~D3の欄には「*」が記載されている。これは、「0」又は「1」のいずれの値でもよいことを示す。しかしながら、実際に再構成のために真理値表データをMLUTに書き込むときには、これらの欄には、「0」又は「1」のいずれかの値を書き込む必要がある。
B.接続回路を構成する真理値表データ
図12は、接続回路として動作するMLUTの一例を示す図である。図12では、接続回路としてのMLUTは、アドレスA0の信号を出力データD1に出力し、アドレスA1の信号を出力データD2に出力し、アドレスA2の信号を出力データD3に出力するように動作する。接続回路としてのMLUTはさらに、アドレスA3の信号を出力データD0に出力するように動作する。
図12は、接続回路として動作するMLUTの一例を示す図である。図12では、接続回路としてのMLUTは、アドレスA0の信号を出力データD1に出力し、アドレスA1の信号を出力データD2に出力し、アドレスA2の信号を出力データD3に出力するように動作する。接続回路としてのMLUTはさらに、アドレスA3の信号を出力データD0に出力するように動作する。
図13は、図12に示す接続回路の真理値表を示す図である。図12に示す接続回路は、4入力4出力である。したがって、アドレスA0~A3の全ての入力と、出力データD0~D3の全ての出力が使用される。図13に示す真理値表によって、MLUTは、アドレスA0の信号を出力データD1に出力し、アドレスA1の信号を出力データD2に出力し、アドレスA2の信号を出力データD3に出力し、アドレスA3の信号を出力データD0に出力する接続回路として動作する。
C.論理回路と接続回路を構成する真理値表データ
図14は、1つのMLUTが、論理回路及び接続回路として動作する一例を示す図である。図14に示す例では、アドレスA0及びA1を2入力NOR回路171の入力とし、2入力NOR回路171の出力と、アドレスA2とを2入力NAND回路172の入力とし、2入力NAND回路172の出力を出力データD0に出力する論理回路を構成する。また同時に、アドレスA3の信号を出力データD2に出力する接続回路を構成する。
図14は、1つのMLUTが、論理回路及び接続回路として動作する一例を示す図である。図14に示す例では、アドレスA0及びA1を2入力NOR回路171の入力とし、2入力NOR回路171の出力と、アドレスA2とを2入力NAND回路172の入力とし、2入力NAND回路172の出力を出力データD0に出力する論理回路を構成する。また同時に、アドレスA3の信号を出力データD2に出力する接続回路を構成する。
図15に、図14に示す論理回路及び接続回路の真理値表を示す。図14の論理回路は、アドレスA0~A3の3つの入力を使用し、1つの出力データD0を出力として使用する。一方、アドレスA3の信号を出力データD2に出力する接続回路が構成される。
D.順序回路機能
順序回路は、組合せ回路のように、構成メモリに保持される真理値表データそのもので、その動作を記述できない。本実施形態では、順序回路は、出力バッファ13の機能を用いて実現する。D型フリップフロップは、同期動作するメモリユニットの出力に対して、以下のような真理値表を構成する。
順序回路は、組合せ回路のように、構成メモリに保持される真理値表データそのもので、その動作を記述できない。本実施形態では、順序回路は、出力バッファ13の機能を用いて実現する。D型フリップフロップは、同期動作するメモリユニットの出力に対して、以下のような真理値表を構成する。
4.真理値表データの生成方法
本実施形態を用いて説明したプログラム可能な半導体装置に適用される真理値表データは、論理構成用のソフトウェアプログラムを実行する情報処理装置によって生成される。
本実施形態を用いて説明したプログラム可能な半導体装置に適用される真理値表データは、論理構成用のソフトウェアプログラムを実行する情報処理装置によって生成される。
図16に、情報処理装置のハードウェア構成の一例を示す。情報処理装置210は、プロセッサ211と、入力部212と、出力部213と、メモリユニット214とドライブ装置215を有する。プロセッサ211は、入力部212に入力された構成データ生成方法に係るソフトウェア、集積回路を設計するためのC言語記述またはハードウェア記述言語(HDL)などの回路記述言語、及び、上記ソフトウェアを実行することによって生成される真理値表データをメモリユニット214に記憶する。また、プロセッサ211は、上記ソフトウェアを実行して、メモリユニット214に記憶された回路記述に対して配置・配線の処理を行い、出力部213に、真理値表データを出力する。出力部213には、プログラム可能な半導体装置であるMRLD100を接続することができ、プロセッサ211が論理構成処理を実行して、生成した真理値表データを、出力部213を介してMRLD100に書き込む。出力部213は、外部ネットワークと接続していてもよい。この場合、上記ソフトウェアプログラムは、ネットワークを介して送受信される。ドライブ装置215は、例えば、DVD(Digital Versatile Disc)、フラッシュメモリなどの記憶メディア217を読み書きする装置である。ドライブ装置215は、記憶媒体217を回転させるモータや記憶媒体217上でデータを読み書きするヘッド等を含む。なお、記憶媒体217は、論理構成用のプログラム、又は、真理値表データを格納することができる。ドライブ装置215は、セットされた記憶媒体217からプログラムを読み出す。プロセッサ211は、ドライブ装置215により読み出されたプログラム又は真理値表データを、メモリユニット214に格納する。
真理値表データがプログラム可能なデバイスに読み込まれることにより、プログラムとしての真理値表データとハードウェア資源とが協働した具体的手段によって、論理要素としての機能が構築される。また、真理値表データは、真理値表という論理的構造を示す構造を有するデータともいえる。
以上説明した実施形態は典型例として挙げたに過ぎず、その各実施形態の構成要素の組合せ、変形及びバリエーションは当業者にとって明らかであり、当業者であれば本発明の原理及び請求の範囲に記載した発明の範囲を逸脱することなく上述の実施形態の種々の変形を行えることは明らかである。特に、MRLDの論理又は接続動作において、双方向MLUTを、多方向MLUTの動作とすることは実施形態の変更として可能である。
30 MLUT
60 メモリユニット
60b MLUTアレイ
100 再構成デバイス
60 メモリユニット
60b MLUTアレイ
100 再構成デバイス
Claims (13)
- プログラム可能なデバイスであって、
複数のメモリセルを有し、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを前記論理ゲートに従って論理演算して、生成される出力データと、前記入力データとの対応から、得られる構成データを、前記複数のメモリセルに格納して、前記論理回路として動作するように構成される、メモリユニットと、
前記構成データが格納される前記複数のメモリセルへのアドレス信号を、入力データとして前記メモリユニットに出力するアドレスデコーダと、を備えるプログラム可能なデバイス。 - 前記メモリユニットが有する複数のメモリセルの一部に、構成データを格納する請求項1に記載のプログラム可能なデバイス。
- 前記構成データは、前記メモリユニットのバンク毎に記憶される、請求項1又は2に記載のプログラム可能なデバイス。
- 前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記第1及び第2メモリユニットはそれぞれ、前記構成データを前記メモリセルに記憶し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続される、請求項1~3の何れか1項に記載のプログラム可能なデバイス。 - 前記メモリユニットは、一辺と、前記一辺と反対側の他辺で他のメモリユニットに接続するとともに、複数のメモリユニットを有し、且つ、
前記複数のメモリユニットの少なくとも1つが有する複数のメモリセルは、前記一辺におけるアドレス入力に対して、前記一辺から論理値を出力するための第1構成データと前記他辺から論理値を出力するための第2構成データとを記憶し、
前記構成データを生成するステップは、前記第1構成データと、前記第2構成データを生成するステップを含む、請求項1~3の何れか1つに記載のプログラム可能なデバイス。 - 前記構成データは、真理値表データである、請求項1~4の何れか1項に記載のプログラム可能なデバイス。
- データを記憶するメモリセルを複数備えたメモリユニットを有する、プログラム可能なデバイスの構成データの生成方法であって、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを前記論理ゲートに従って論理演算して、出力データを生成し、
前記入力データと、出力データの対応から、構成データを生成し、
前記生成した構成データを、前記メモリユニットに書き込む、ことを有する方法。 - 前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続され、
前記構成データを、前記第1のメモリユニット用の第1構成データと、前記第2のメモリユニット用の第2構成データに分割する、請求項7に記載の方法。 - 前記構成データは、真理値表データである、請求項7に記載の方法。
- データを記憶するメモリセルを複数備えたメモリユニットを複数有する、プログラム可能なデバイスの構成データを生成するためのプログラムであって、
プロセッサに、
少なくとも2つ以上の論理ゲートを含む論理回路を構成する論理回路構成データにおける、デジタル信号の入力データを論理演算して、出力データを生成し、
前記入力データと、出力データの対応から、構成データを生成し、
前記生成した構成データを、前記プログラム可能なデバイスに書き込む、処理を実行させるプログラム。 - 前記メモリユニットは、第1のメモリユニットと、第2のメモリユニットを有し、
前記メモリユニットは、入力線および出力線の対を少なくとも2のn倍(nは2以上の整数)本有し、
前記メモリユニット同士は、1つのメモリユニットからの2のn倍本の出力線が、他の2つのメモリユニットのn本の入力線に接続され、
前記第1のメモリユニット用の第1構成データと、前記第2のメモリユニット用の第2構成データに分割する処理を実行させる、請求項10に記載のプログラム。 - 前記構成データは、真理値表データである、請求項10又は11に記載のプログラム。
- 請求項10~12の何れか1項に示すプログラムを格納する記憶媒体。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017094352 | 2017-05-11 | ||
JP2017-094352 | 2017-05-11 |
Publications (1)
Publication Number | Publication Date |
---|---|
WO2018207801A1 true WO2018207801A1 (ja) | 2018-11-15 |
Family
ID=64104833
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
PCT/JP2018/017853 WO2018207801A1 (ja) | 2017-05-11 | 2018-05-09 | プログラム可能なデバイス、その論理構成方法、及びそのプログラム |
Country Status (1)
Country | Link |
---|---|
WO (1) | WO2018207801A1 (ja) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017038247A (ja) * | 2015-08-11 | 2017-02-16 | 太陽誘電株式会社 | 再構成可能な半導体装置 |
-
2018
- 2018-05-09 WO PCT/JP2018/017853 patent/WO2018207801A1/ja active Application Filing
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2017038247A (ja) * | 2015-08-11 | 2017-02-16 | 太陽誘電株式会社 | 再構成可能な半導体装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9705505B2 (en) | Reconfigurable semiconductor device | |
US5802003A (en) | System for implementing write, initialization, and reset in a memory array using a single cell write port | |
USRE40423E1 (en) | Multiport RAM with programmable data port configuration | |
US9350357B2 (en) | Reconfigurable semiconductor device | |
JP6250548B2 (ja) | 再構成可能な半導体装置の論理構成方法 | |
TWI636667B (zh) | 可再構成之邏輯元件 | |
JPH03132212A (ja) | 構成を変更可能な論理アレイ | |
US8185861B2 (en) | Variable sized soft memory macros in structured cell arrays, and related methods | |
JP5890733B2 (ja) | 再構成可能な半導体装置の配置配線方法、そのプログラム、及び配置配線装置 | |
JP2011514065A (ja) | プログラマブル論理ファブリック | |
JPH065070A (ja) | シリアルアクセスメモリ | |
WO2013011848A1 (ja) | 半導体メモリ装置 | |
US9923561B2 (en) | Reconfigurable device | |
WO2018207801A1 (ja) | プログラム可能なデバイス、その論理構成方法、及びそのプログラム | |
JP6405262B2 (ja) | 再構成可能な論理デバイス | |
US7221185B1 (en) | Method and apparatus for memory block initialization | |
US20160277029A1 (en) | Reconfigurable logic device | |
US9721624B2 (en) | Memory with multiple write ports | |
WO2021064764A1 (ja) | 半導体装置 | |
JP2019057336A (ja) | 半導体集積回路 | |
JP2014143489A (ja) | 半導体回路 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
121 | Ep: the epo has been informed by wipo that ep was designated in this application |
Ref document number: 18798295 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: DE |
|
122 | Ep: pct application non-entry in european phase |
Ref document number: 18798295 Country of ref document: EP Kind code of ref document: A1 |
|
NENP | Non-entry into the national phase |
Ref country code: JP |