US20080290897A1 - Programmable logic device having logic modules with improved register capabilities - Google Patents
Programmable logic device having logic modules with improved register capabilities Download PDFInfo
- Publication number
- US20080290897A1 US20080290897A1 US11/753,059 US75305907A US2008290897A1 US 20080290897 A1 US20080290897 A1 US 20080290897A1 US 75305907 A US75305907 A US 75305907A US 2008290897 A1 US2008290897 A1 US 2008290897A1
- Authority
- US
- United States
- Prior art keywords
- combinational
- register
- logic
- logic module
- signal
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- 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
- H03K19/17748—Structural details of configuration resources
-
- 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
- H03K19/17724—Structural details of logic blocks
- H03K19/17728—Reconfigurable logic blocks, e.g. lookup tables
Definitions
- the present invention generally relates to Programmable Logic Devices (PLDs), and more particularly, to PLDs with logic modules having more registered outputs than combinational outputs; and/or a combinational output that can drive more than one output register.
- PLDs Programmable Logic Devices
- a Programmable Logic Device is a semiconductor integrated circuit that contains fixed logic circuitry that can be programmed to perform a host of logic functions.
- PLDs are becoming increasingly popular for a number of reasons. Due to the advances of chip manufacturing technology, application specific integrated circuits (ASICs) designs have become incredibly complex. This complexity not only adds to design costs, but also the duration of time needed to develop an application specific design. To compound this problem, product life cycles are shrinking rapidly. As a result, it is often not feasible for original equipment manufacturers (OEMs) to design and use ASICs. OEMs are therefore relying more and more on PLDs. The same advances in fabrication technology have also resulted in PLDs with improved density and speed performance.
- Sophisticated programming software enables complex logic functions to be rapidly developed for PLDs. Furthermore, logic designs generally can also be easily migrated from one generation of PLDs to the next, further reducing product development times. The closing of the price-performance gap with ASICs, and reduced product development times, makes the use of PLDs compelling for many OEMs.
- the architecture of most PLDs defines a two-dimensional array of logic blocks. Row and column inter-logic block lines, typically of varying length and speed, provide signal and clock interconnects between the blocks of logic in the array.
- the blocks of logic are often referred to by various names, for example as Logic Array Blocks or LABs by the Altera Corporation, assignee of the present application, or Complex Logic Blocks (CLBs), as used by Xilinx Corporation.
- CLBs Complex Logic Blocks
- the LABs are further broken into a plurality of individual logic elements, typically referred to as either Logic Elements (LEs) or Adaptive Logic Modules (ALMs).
- the CLBs also include a group of logic elements called Logic Cells or (LCs).
- the LEs, LCs, or ALMS each typically include such elements as look up tables (LUTs), registers for generating registered outputs, adders and other circuitry to implement various logic and arithmetic functions.
- LUTs look up tables
- any module of logic regardless of referring to an LE, an ALM, or a LC, will hereafter be generically referred to as a “logic module”.
- any block of logic whether a LAB or a CLB, is hereafter generically referred to as a “logic array block”.
- logic module or “logic array block” be construed as limiting the present invention to a particular PLD architecture and is intended to cover any PLD architecture that uses any type of module of logic grouped into a logic array block, including but not limited to the PLDs offered by Altera and Xilinx.
- logic modules in PLDs have conventionally included only one register per combinational output from a combinational logic generator, such as a Look Up Table or LUT), in the module.
- a combinational logic generator such as a Look Up Table or LUT
- These logic modules have therefore been conventionally been limited to: (i) generating a single non-registered combinational function; (ii) generating a single a registered combinational function; (iii) generating a single non-registered combinational function while the register was used for an unrelated flip flop operation; or (iv) use of the register only as a flip flop.
- the output register could select from either the combinational output from the LUT, or some other input to the logic module, while driving either a global interconnect or an input to the LUT though a register feedback connection.
- the conventional logic module as described above has become inadequate for a number of practical reasons.
- a large number of flip flops are often required for reasons such as pipelining, the use of shift registers to store data, etc.
- PLDs that use larger lookup tables such as 6 input functions exhibit a reduced ratio of flip flops to combinational logic because of the increased logic functionality of the 6 LUT compared to previous 4 LUT logic blocks.
- This implementation is typically undesirable. It often causes placement constraints, which negatively affect the speed of the design.
- the logic module is typically used to implement either a combinational function or a flip flop function, but not both functions. Consequently, efficiency is detrimentally effected as more logic modules may be needed than ordinarily required to implement the number of combinational and flip flop functions specified for a given logic design. Even when a user's design defines a smaller number of flip flops as compared to combinational functions, the actual implementation may require the use of a larger number of logic modules than otherwise required since some of the modules may be dedicated only for flip flop functions.
- a PLD that has more flip flops per logic module by providing more registered outputs than combinational outputs; and/or a combinational output that can drive more than one register.
- the PLD includes a plurality of logic array blocks arranged in an array and a plurality of inter-logic array block lines interconnecting the logic array blocks of the array.
- At least one of the logic array blocks includes at least one logic module that includes a first combinational element configured to generate a first combinational output signal in response to inputs provided to the one logic module, a first register capable of being driven by the first combinational output signal and a second register capable of being driven by the first combinational output signal.
- the logic module therefore has more registered outputs than combinational outputs and a combinational output that can drive more then one output register.
- the logic module may have one or more combinational element configured to generate one or more combinational output signals in response to inputs provided to the one logic module and a plurality of registers capable of being driven by the one or more combinational outputs signals.
- the number of registers exceeds the number of combinational output signals in the one logic module.
- FIG. 1 is a block diagram of a Programmable Logic Device (PLD) architecture in accordance with one embodiment of the present invention.
- PLD Programmable Logic Device
- FIG. 2 is a diagram of a number of LABs interconnected by a plurality of vertical and horizontal inter-LAB lines according to the present invention.
- FIG. 3 is a block diagram of a second PLD architecture in accordance with another embodiment of the present invention.
- FIG. 4 is a logic module used in a logic array block according to one embodiment of the present invention.
- FIG. 5 is a logic module used in a logic array block according to a second embodiment of the present invention.
- the PLD 10 includes a two dimensional row and column based architecture including a plurality of Input/Output elements (IOEs) 12 arranged around the periphery of the chip, a plurality of Logic Array Blocks (LABs) 14 grouped into rows and columns across the device, Random Access Memory (RAM) blocks 16 grouped into columns between certain LABs 14 , Digital Signal Processing (DSP) blocks 18 grouped into columns across the device, second RAM blocks 20 also grouped into columns across the device and between certain LABs 14 , and one or more M-RAM memory blocks 22 , each provided at different locations across the device.
- IOEs Input/Output elements
- LABs Logic Array Blocks
- RAM Random Access Memory
- DSP Digital Signal Processing
- the LABs 14 include a predetermined number of logic modules (not visible in the figure). In various embodiments, the number of logic modules may vary from two to sixteen or more.
- the RAM blocks 16 are simple dual port memory blocks with a predetermined number of bits and additional parity bits. The RAM blocks 16 provide dedicated simple dual port or single port memory for the device.
- the DSP blocks 18 are provided for performing digital signal processing functions, such as for example, finite impulse response (FIR) and infinite impulse response (IIR) filters.
- the second RAM blocks 20 are true dual port memory blocks with memory bits and parity bits.
- the M-RAM memory blocks 22 are large true dual port memory blocks with both memory and parity bits. It should be noted that the PLD 10 is merely exemplary and in no way should be construed as limiting the invention.
- Each LAB 14 includes a plurality of logic modules 24 .
- Local intra-LAB lines 26 are used to interconnect the individual logic modules 24 within each LAB 14 .
- Vertical and horizontal inter-LAB lines 28 are used to interconnect the LABs 14 of the array.
- Routing drivers 30 (designated by double-sided arrows in the figure) are used to provide routing between the inter-LAB lines 28 and the local intra-LAB lines 26 of each LAB 14 respectively.
- the PLD 30 includes a plurality of Complex Logic Blocks (CLBs) 32 arranged in an array of rows and columns.
- CLBs Complex Logic Blocks
- Each CLB 32 includes a first slice 34 A and a second slice 34 B.
- the slices 34 A of the CLBs 32 in a given column are interconnected by a first carry chain 36 A, as designated by the carry-in (Cin) and carry-out (Cout) lines received and generated by the slices 34 A.
- the slices 34 B are interconnected by a second carry chain 36 B, as designated by the carry-in (Cin) and carry-our (Cout) lines received and generated by the slices 34 B.
- CLBs 32 are interconnected by a plurality of inter-CLB lines, as is well known in the art.
- CLB based PLDs having slices see for example the “Virtex-5 User Guide”, UG190 (v3.0), Feb. 2, 2007, published by Xilinx Corporation, San Jose, Calif., pages 155-181, incorporated by reference herein for all purposes.
- Each slice 34 includes one or more logic modules (not illustrated). In one specific embodiment, each slice 34 includes four logic modules. In other embodiments, either more or fewer logic modules may be used per slice 34 . In alternative embodiments for example, one to three, or five through sixteen or more logic modules may be included per CLB 34 . In general, the specific number of logic modules in a CLB is arbitrary, and should not be construed as limiting in any way.
- the logic module 40 includes a combinational element 42 configured to receive inputs A, B, C and D and to generate a first combinational output 44 , a first register 46 , a second register 48 , a plurality of output multiplexers 50 A, 50 B and 50 C, a control signal selection circuit 52 configured to generate a register control signal 54 and a register clock signal 56 in response to one or more inputs control signals 58 , and data generation logic 60 which includes three multiplexers 62 A- 62 C and two AND gates 64 A and 64 B.
- the third input to the combinational element 42 is provided through multiplexer 66 , which is coupled to receive the C input or the output of first register 46 through register feedback path 68 .
- the select input provided to the multiplexer 66 either the C input or the register feedback signal is provided to the combinational element 42 .
- the multiplexing of the C input is arbitrary and that any of the other inputs A, B or D could be multiplexed with the register feedback signal 68 as well.
- the combinational element 42 During operation, the combinational element 42 generates combinational output 44 in response to a set of inputs, (A, B, C, D) or A, B, register feedback signal 68 , D).
- the logic module 40 can generate either registered or non-registered outputs.
- the combinational output 44 can be outputted either directly through output multiplexers 50 A- 50 C or through the registers 46 and/or 48 and then through the output multiplexers 50 A- 50 C.
- combinational output 44 is provided directly to each of the multiplexers 50 A- 50 C.
- the non-registered output 44 can be selectively coupled to inter-logic array block lines or local logic array block lines within the logic block that contains the logic module 40 .
- the number and particular arrangement of multiplexers 50 A- 50 C shown is arbitrary and other configurations may be used.
- the combinational output 44 is provided to the first register 46 and/or the second register 48 through the data generation logic 60 .
- the first register 46 is configured to receive at its data input 63 A either: (i) the combinational output 44 : or (ii) input C through multiplexer 62 A.
- the second register 48 is configured to receive at its data input either: (i) the combinational output 44 , (ii) input signal A through multiplexers 62 B and 62 C, or (iii) the cascaded output 72 of the first register 46 , also through multiplexers 62 B and 62 C.
- the select input of both multiplexers 62 A and 62 B is controlled by the register control signal 54 generated by the control signal selection circuit 52 , while the select input of multiplexer 62 C is controlled by a configuration bit (not shown).
- the one or more control signals 58 provided to the control signal selection circuit 52 is selected from the group including, but not limited to, a clock signal, a clock enable signal, a synchronous load signal, an asynchronous load signal, a synchronous clear signal, or an asynchronous clear signal.
- the first register 46 and the second register 48 can also both be cleared by the control signal selection circuit 52 .
- the control signal selection circuit 52 By driving the clear signal 70 low and setting the register control signal 54 to select the second input to each of the multiplexers 62 A and 62 B, the control signal selection circuit 52 causes the outputs of AND gates 64 A and 64 B to be low and provided to the data inputs of registers 46 and 48 respectively.
- the outputs of the registers 46 and 48 are partitioned among the multiplexers 50 A- 50 C.
- the output of the first register is applied to the multiplexers 50 A and 50 B, but not 50 C.
- the output of the second register 48 is provided only to the multiplexer 50 C, but not 50 A and 50 B.
- the registered combinational output can therefore be selectively coupled to inter-logic array block lines or local logic array block lines within the logic block that contains the logic module 40 through multiplexers 50 A- 50 C.
- the two registers 46 and 48 may also drive distinct subsets of the inter-logic array block routing. Specifically, in order to reduce the costs of the multiplexers 50 A- 50 C that drive the inter-logic array block routing, the multiplexers 50 A- 50 C may be restricted in their inputs to only selecting from one of the registers 46 or 48 .
- the logic module 40 provides a number of advantages and is more flexible than prior art modules.
- the logic module 40 is capable of (i) providing two registered outputs of the combinational output 44 ; (ii) providing one registered output of the combinational output 44 and using the other register for a flip flop operation; (iii) providing two non-registered outputs of the combinational output 44 and using either one or both of the registers 46 and 48 for unrelated flip flop operations; or (iv) just using one or both of the two registers 46 and 48 for flip flop operations.
- the two registers 46 and 48 share the same control signal selection logic 52 to reduce costs. In alternative embodiments, however, separate control logic can be used. In addition, at least some distinct data generation logic in circuit 60 as described above is necessary to provide a unique data input to each register 46 and 48 as described above. Another useful attribute is that distinct input signals A-C to the logic module 40 or the combinational output may be provided as load data to either register 46 or 48 . Thus, both registers 46 and 48 can be loaded with the same logic module input A-C (provided that the signal is available on both A and C) or combinational output so that two identical copies of a flip flop can be provided, allowing a single logical flip flop to drive onto all routing outputs.
- the two registers 46 and 48 are both capable of being driven by the one combinational output signal 44 .
- the number of registers in the logic module 40 exceeds the number of combinational output signals by a ratio of (2:1). It should be noted, however, that this ratio is arbitrary. In other embodiments, the number of registers and combinational outputs per logic module may vary.
- different embodiments of logic modules 40 with register(s)—to—combinational output(s) ratio may include 3:1, 3:2, 4:1, 4:2, 4:3, 5:1, 5:2, 5:3, or 5:4 for example.
- a logic module with a ratio of three registers versus two combinational outputs (3:2) is described below as an example.
- the logic module 80 is similar to the module 40 , except that it includes: (i) a combinational element 42 that generate first and second combinational outputs 44 A and 44 B; (ii) a third register 82 in addition to registers 46 and 48 ; (iii) additional multiplexers 62 E and 62 F and AND gate 64 C in the data generation logic 60 , and (iv) additional output multiplexers 50 D- 50 F.
- the combinational element 42 is configured to receive inputs A-H.
- the registers 46 , 48 and 82 are each configured to receive one of the combinational output signals 44 A or 44 B, one of the input signals A, B, G or H, or a clear signal.
- the combinational output signals 44 A and 44 B are partitioned among the plurality of output multiplexers 50 A- 50 F. Otherwise, like reference numbers refer to like elements, and therefore are not discussed in detail herein.
- the register 46 is configured to receive only the first combinational output 44 A, but not the second combinational output 44 B.
- the registers 48 and 82 are each configured to receive only the second combinational output 44 B, but not the first combinational output 44 A.
- the logic module 80 provides the same features and advantages as described above with regard to FIG. 4 , except with the additional benefit of a third register 82 , thus providing even a higher degree of efficiency and flexibility.
- the use of three registers per two combinational outputs provides a ratio of flip flops to combinational logic that is higher than the conventional case, while lower than providing two flip flops per combinational output.
- a logic module may include anywhere from one to four or more combinational elements 42 which are capable of generating one, two, three, four or more combinational outputs 44 .
Abstract
A PLD that has more flip flops per logic module by providing more registered outputs than combinational outputs; and/or a combinational output that can drive more than one register is disclosed. The PLD includes a plurality of logic array blocks arranged in an array and a plurality of inter-logic array block lines interconnecting the logic array blocks of the array. At least one of the logic array blocks includes at least one logic module that includes a first combinational element configured to generate a first combinational output signal in response to inputs provided to the one logic module, a first register capable of being driven by the first combinational output signal and a second register capable of being driven by the first combinational output signal. The logic module therefore has more registered outputs than combinational outputs and a combinational output that can drive more then one output register. In alternative embodiments, the logic module may have one or more combinational element configured to generate one or more combinational output signals in response to inputs provided to the one logic module and a plurality of registers capable of being driven by the one or more combinational outputs signals. In these alternative embodiments, the number of registers exceeds the number of combinational output signals in the one logic module.
Description
- 1. Field of the Invention
- The present invention generally relates to Programmable Logic Devices (PLDs), and more particularly, to PLDs with logic modules having more registered outputs than combinational outputs; and/or a combinational output that can drive more than one output register.
- 2. Description of Related Art
- A Programmable Logic Device (PLD) is a semiconductor integrated circuit that contains fixed logic circuitry that can be programmed to perform a host of logic functions. In the semiconductor industry, PLDs are becoming increasingly popular for a number of reasons. Due to the advances of chip manufacturing technology, application specific integrated circuits (ASICs) designs have become incredibly complex. This complexity not only adds to design costs, but also the duration of time needed to develop an application specific design. To compound this problem, product life cycles are shrinking rapidly. As a result, it is often not feasible for original equipment manufacturers (OEMs) to design and use ASICs. OEMs are therefore relying more and more on PLDs. The same advances in fabrication technology have also resulted in PLDs with improved density and speed performance. Sophisticated programming software enables complex logic functions to be rapidly developed for PLDs. Furthermore, logic designs generally can also be easily migrated from one generation of PLDs to the next, further reducing product development times. The closing of the price-performance gap with ASICs, and reduced product development times, makes the use of PLDs compelling for many OEMs.
- The architecture of most PLDs defines a two-dimensional array of logic blocks. Row and column inter-logic block lines, typically of varying length and speed, provide signal and clock interconnects between the blocks of logic in the array. The blocks of logic are often referred to by various names, for example as Logic Array Blocks or LABs by the Altera Corporation, assignee of the present application, or Complex Logic Blocks (CLBs), as used by Xilinx Corporation. In the Altera architectures, the LABs are further broken into a plurality of individual logic elements, typically referred to as either Logic Elements (LEs) or Adaptive Logic Modules (ALMs). With the Xilinx architecture, the CLBs also include a group of logic elements called Logic Cells or (LCs). The LEs, LCs, or ALMS each typically include such elements as look up tables (LUTs), registers for generating registered outputs, adders and other circuitry to implement various logic and arithmetic functions. For the sake of simplicity, any module of logic, regardless of referring to an LE, an ALM, or a LC, will hereafter be generically referred to as a “logic module”. Similarly, any block of logic, whether a LAB or a CLB, is hereafter generically referred to as a “logic array block”. In no way should the terms “logic module” or “logic array block” be construed as limiting the present invention to a particular PLD architecture and is intended to cover any PLD architecture that uses any type of module of logic grouped into a logic array block, including but not limited to the PLDs offered by Altera and Xilinx.
- Historically, logic modules in PLDs have conventionally included only one register per combinational output from a combinational logic generator, such as a Look Up Table or LUT), in the module. These logic modules have therefore been conventionally been limited to: (i) generating a single non-registered combinational function; (ii) generating a single a registered combinational function; (iii) generating a single non-registered combinational function while the register was used for an unrelated flip flop operation; or (iv) use of the register only as a flip flop. Thus, with conventional logic modules, the output register could select from either the combinational output from the LUT, or some other input to the logic module, while driving either a global interconnect or an input to the LUT though a register feedback connection.
- The conventional logic module as described above has become inadequate for a number of practical reasons. In many current user logic designs for PLDs, a large number of flip flops are often required for reasons such as pipelining, the use of shift registers to store data, etc. Furthermore, PLDs that use larger lookup tables such as 6 input functions exhibit a reduced ratio of flip flops to combinational logic because of the increased logic functionality of the 6 LUT compared to previous 4 LUT logic blocks. With designs that require many flip flops, it is possible to use a given logic module to implement both a combinational logic function in the LUT and separately use the output register for some other flip flop operation. This implementation, however, is typically undesirable. It often causes placement constraints, which negatively affect the speed of the design. As a result, the logic module is typically used to implement either a combinational function or a flip flop function, but not both functions. Consequently, efficiency is detrimentally effected as more logic modules may be needed than ordinarily required to implement the number of combinational and flip flop functions specified for a given logic design. Even when a user's design defines a smaller number of flip flops as compared to combinational functions, the actual implementation may require the use of a larger number of logic modules than otherwise required since some of the modules may be dedicated only for flip flop functions.
- A PLD that has more flip flops per logic module by providing (i) more registered outputs than combinational outputs; and/or (ii) a combinational output that can drive more than one output register, is therefore needed.
- A PLD that has more flip flops per logic module by providing more registered outputs than combinational outputs; and/or a combinational output that can drive more than one register is disclosed. The PLD includes a plurality of logic array blocks arranged in an array and a plurality of inter-logic array block lines interconnecting the logic array blocks of the array. At least one of the logic array blocks includes at least one logic module that includes a first combinational element configured to generate a first combinational output signal in response to inputs provided to the one logic module, a first register capable of being driven by the first combinational output signal and a second register capable of being driven by the first combinational output signal. The logic module therefore has more registered outputs than combinational outputs and a combinational output that can drive more then one output register. In alternative embodiments, the logic module may have one or more combinational element configured to generate one or more combinational output signals in response to inputs provided to the one logic module and a plurality of registers capable of being driven by the one or more combinational outputs signals. In these alternative embodiments, the number of registers exceeds the number of combinational output signals in the one logic module.
- The invention may best be understood by reference to the following description taken in conjunction with the accompanying drawings, which illustrate specific embodiments of the present invention.
-
FIG. 1 is a block diagram of a Programmable Logic Device (PLD) architecture in accordance with one embodiment of the present invention. -
FIG. 2 is a diagram of a number of LABs interconnected by a plurality of vertical and horizontal inter-LAB lines according to the present invention. -
FIG. 3 is a block diagram of a second PLD architecture in accordance with another embodiment of the present invention. -
FIG. 4 is a logic module used in a logic array block according to one embodiment of the present invention. -
FIG. 5 is a logic module used in a logic array block according to a second embodiment of the present invention. - It should be noted that like reference numbers refer to like elements in the figures.
- The present invention will now be described in detail with reference to a various embodiments thereof as illustrated in the accompanying drawings. In the following description, specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art, that the present invention may be practiced without using some of the implementation details set forth herein. It should also be understood that well known operations have not been described in detail in order to not unnecessarily obscure the present invention. Further, it should be noted that the techniques of the present invention could be applied to a variety of systems or electronic devices such as programmable devices and application-specific integrated circuit (ASIC) devices.
- Referring to
FIG. 1 , a block diagram of a Programmable Logic Device (PLD) according to one embodiment of the present invention is shown. ThePLD 10 includes a two dimensional row and column based architecture including a plurality of Input/Output elements (IOEs) 12 arranged around the periphery of the chip, a plurality of Logic Array Blocks (LABs) 14 grouped into rows and columns across the device, Random Access Memory (RAM) blocks 16 grouped into columns betweencertain LABs 14, Digital Signal Processing (DSP) blocks 18 grouped into columns across the device,second RAM blocks 20 also grouped into columns across the device and betweencertain LABs 14, and one or more M-RAM memory blocks 22, each provided at different locations across the device. - The
LABs 14 include a predetermined number of logic modules (not visible in the figure). In various embodiments, the number of logic modules may vary from two to sixteen or more. TheRAM blocks 16 are simple dual port memory blocks with a predetermined number of bits and additional parity bits. The RAM blocks 16 provide dedicated simple dual port or single port memory for the device. The DSP blocks 18 are provided for performing digital signal processing functions, such as for example, finite impulse response (FIR) and infinite impulse response (IIR) filters. The second RAM blocks 20 are true dual port memory blocks with memory bits and parity bits. Finally, the M-RAM memory blocks 22 are large true dual port memory blocks with both memory and parity bits. It should be noted that thePLD 10 is merely exemplary and in no way should be construed as limiting the invention. It should also be noted that the practice of the present invention, as described herein, does not require a PLD with all the above-mentioned functional blocks, listed above. Functional blocks such as the RAM blocks 16, DSP blocks 18, RAM blocks 20 and M-RAM blocks 22 are optional and are not required for the practice of the present invention. - Referring to
FIG. 2 , a block diagram of a number of LABs interconnected by a plurality of vertical and horizontal inter-LAB lines according to the present invention is shown. EachLAB 14 includes a plurality oflogic modules 24. Localintra-LAB lines 26 are used to interconnect theindividual logic modules 24 within eachLAB 14. Vertical and horizontalinter-LAB lines 28 are used to interconnect theLABs 14 of the array. Routing drivers 30 (designated by double-sided arrows in the figure) are used to provide routing between theinter-LAB lines 28 and the localintra-LAB lines 26 of eachLAB 14 respectively. - For more information on the
specific PLD architecture 10 illustrated inFIGS. 1 and 2 , see for example “The Stratix Architecture, Functional Description,” pages 2-1 through 2-140, from the Altera Corporation, July, 2005 (Altera Internal document Number S51002-3.2) or “The Stratix® PII Architecture, Functional Description,” pages 2-104, The Stratix® II Device handbook, Volume 1, December 2005 (Altera Document Number S1151002-4.0), both incorporated by reference herein for all purposes. - Referring to
FIG. 3 , a block diagram of a programmable logic device (PLD) according to a second embodiment of the present invention is shown. ThePLD 30 includes a plurality of Complex Logic Blocks (CLBs) 32 arranged in an array of rows and columns. EachCLB 32 includes afirst slice 34A and asecond slice 34B. Theslices 34A of theCLBs 32 in a given column are interconnected by afirst carry chain 36A, as designated by the carry-in (Cin) and carry-out (Cout) lines received and generated by theslices 34A. Similarly, theslices 34B are interconnected by asecond carry chain 36B, as designated by the carry-in (Cin) and carry-our (Cout) lines received and generated by theslices 34B. Although not illustrated, theindividual CLBs 32 are interconnected by a plurality of inter-CLB lines, as is well known in the art. For more details on CLB based PLDs having slices, see for example the “Virtex-5 User Guide”, UG190 (v3.0), Feb. 2, 2007, published by Xilinx Corporation, San Jose, Calif., pages 155-181, incorporated by reference herein for all purposes. - Each slice 34 includes one or more logic modules (not illustrated). In one specific embodiment, each slice 34 includes four logic modules. In other embodiments, either more or fewer logic modules may be used per slice 34. In alternative embodiments for example, one to three, or five through sixteen or more logic modules may be included per CLB 34. In general, the specific number of logic modules in a CLB is arbitrary, and should not be construed as limiting in any way.
- Referring to
FIG. 4 , a logic module used in a logic array block according to one embodiment of the present invention is shown. Thelogic module 40 includes acombinational element 42 configured to receive inputs A, B, C and D and to generate afirst combinational output 44, afirst register 46, asecond register 48, a plurality ofoutput multiplexers signal selection circuit 52 configured to generate aregister control signal 54 and aregister clock signal 56 in response to one or more inputs control signals 58, anddata generation logic 60 which includes threemultiplexers 62A-62C and two ANDgates - In the embodiment shown, the third input to the
combinational element 42 is provided throughmultiplexer 66, which is coupled to receive the C input or the output offirst register 46 throughregister feedback path 68. Depending on the select input provided to themultiplexer 66, either the C input or the register feedback signal is provided to thecombinational element 42. It should be noted that the multiplexing of the C input is arbitrary and that any of the other inputs A, B or D could be multiplexed with theregister feedback signal 68 as well. - During operation, the
combinational element 42 generatescombinational output 44 in response to a set of inputs, (A, B, C, D) or A, B, registerfeedback signal 68, D). Thelogic module 40 can generate either registered or non-registered outputs. In other words, thecombinational output 44 can be outputted either directly throughoutput multiplexers 50A-50C or through theregisters 46 and/or 48 and then through theoutput multiplexers 50A-50C. - In the non-registered mode,
combinational output 44 is provided directly to each of themultiplexers 50A-50C. By selecting the direct input to each of themultiplexers 50A-50C, thenon-registered output 44 can be selectively coupled to inter-logic array block lines or local logic array block lines within the logic block that contains thelogic module 40. Again, the number and particular arrangement ofmultiplexers 50A-50C shown is arbitrary and other configurations may be used. - In the registered output mode, the
combinational output 44 is provided to thefirst register 46 and/or thesecond register 48 through thedata generation logic 60. Specifically, thefirst register 46 is configured to receive at itsdata input 63A either: (i) the combinational output 44: or (ii) input C throughmultiplexer 62A. Thesecond register 48 is configured to receive at its data input either: (i) thecombinational output 44, (ii) input signal A throughmultiplexers output 72 of thefirst register 46, also throughmultiplexers multiplexers register control signal 54 generated by the controlsignal selection circuit 52, while the select input ofmultiplexer 62C is controlled by a configuration bit (not shown). In various embodiments, the one or more control signals 58 provided to the controlsignal selection circuit 52 is selected from the group including, but not limited to, a clock signal, a clock enable signal, a synchronous load signal, an asynchronous load signal, a synchronous clear signal, or an asynchronous clear signal. - The
first register 46 and thesecond register 48 can also both be cleared by the controlsignal selection circuit 52. By driving theclear signal 70 low and setting theregister control signal 54 to select the second input to each of themultiplexers signal selection circuit 52 causes the outputs of ANDgates registers - The outputs of the
registers multiplexers 50A-50C. For example, the output of the first register is applied to themultiplexers second register 48 is provided only to themultiplexer 50C, but not 50A and 50B. The registered combinational output can therefore be selectively coupled to inter-logic array block lines or local logic array block lines within the logic block that contains thelogic module 40 throughmultiplexers 50A-50C. The tworegisters multiplexers 50A-50C that drive the inter-logic array block routing, themultiplexers 50A-50C may be restricted in their inputs to only selecting from one of theregisters - The
logic module 40 provides a number of advantages and is more flexible than prior art modules. For example, thelogic module 40 is capable of (i) providing two registered outputs of thecombinational output 44; (ii) providing one registered output of thecombinational output 44 and using the other register for a flip flop operation; (iii) providing two non-registered outputs of thecombinational output 44 and using either one or both of theregisters registers - In one embodiment of the invention as illustrated in
FIG. 4 , the tworegisters signal selection logic 52 to reduce costs. In alternative embodiments, however, separate control logic can be used. In addition, at least some distinct data generation logic incircuit 60 as described above is necessary to provide a unique data input to eachregister logic module 40 or the combinational output may be provided as load data to either register 46 or 48. Thus, bothregisters register 46 to load as data the output of theother register 48, forming a shift register. - With the
logic module 40 ofFIG. 4 , the tworegisters combinational output signal 44. Thus, in this embodiment, the number of registers in thelogic module 40 exceeds the number of combinational output signals by a ratio of (2:1). It should be noted, however, that this ratio is arbitrary. In other embodiments, the number of registers and combinational outputs per logic module may vary. For example, different embodiments oflogic modules 40 with register(s)—to—combinational output(s) ratio may include 3:1, 3:2, 4:1, 4:2, 4:3, 5:1, 5:2, 5:3, or 5:4 for example. Although too numerous to discuss all the various embodiments listed above in detail herein, a logic module with a ratio of three registers versus two combinational outputs (3:2) is described below as an example. - Referring to
FIG. 5 , a logic module used in a logic array block according to a second embodiment of the present invention is shown. In this embodiment, thelogic module 80 is similar to themodule 40, except that it includes: (i) acombinational element 42 that generate first and secondcombinational outputs third register 82 in addition toregisters additional multiplexers gate 64C in thedata generation logic 60, and (iv) additional output multiplexers 50D-50F. Thecombinational element 42 is configured to receive inputs A-H. Theregisters combinational output signals combinational output signals output multiplexers 50A-50F. Otherwise, like reference numbers refer to like elements, and therefore are not discussed in detail herein. In the embodiment shown, theregister 46 is configured to receive only the firstcombinational output 44A, but not the secondcombinational output 44B. Theregisters combinational output 44B, but not the firstcombinational output 44A. - The
logic module 80 provides the same features and advantages as described above with regard toFIG. 4 , except with the additional benefit of athird register 82, thus providing even a higher degree of efficiency and flexibility. The use of three registers per two combinational outputs provides a ratio of flip flops to combinational logic that is higher than the conventional case, while lower than providing two flip flops per combinational output. - In other embodiments, the number of combinational elements and the number of combinational output signals they generate may vary. For example, a logic module may include anywhere from one to four or more
combinational elements 42 which are capable of generating one, two, three, four or more combinational outputs 44. - While the invention has been particularly shown and described with reference to specific embodiments thereof, it will be understood by those skilled in the art that changes in the form and details of the disclosed embodiments may be made without departing from the spirit or scope of the invention. It is therefore intended that the invention be interpreted to include all variations and equivalents that fall within the true spirit and scope of the present invention.
Claims (31)
1. An apparatus, comprising:
a programmable logic device, the programmable logic device including:
a plurality of logic array blocks arranged in an array;
a plurality of inter-logic array block lines interconnecting the logic array blocks of the array,
wherein at least one of the logic array blocks further includes at least one logic module, the one logic module including:
a first combinational element configured to generate a first combinational output signal in response to inputs provided to the one logic module;
a first register capable of being driven by the first combinational output signal;
a second register capable of being driven by the first combinational output signal, and
a third register capable of being driven by a second combinational output signal generated by the first combinational element.
2. The apparatus of claim 1 , wherein the one logic module further comprises a second combinational element configured to generate a second combinational output signal, wherein the first register is capable of being driven by either the first combinational output signal or the second combinational output signal.
3. The apparatus of claim 1 , wherein the one logic module further comprises a second combinational element configured to generate a second combinational output signal, wherein the first register is capable of being driven by either the first combinational output signal or the second combinational output signal and the second register is capable of being driven only by the first combinational output signal.
4. The apparatus of claim 1 , wherein the one logic module further comprises a control signal selection circuit configured to generate a register control signal to control the first register and the second register respectively.
5. The apparatus of claim 4 , wherein the control signal selection circuit is configured to generate the register control signal in response to one or more control signals provided to the one logic module.
6. The apparatus of claim 5 , wherein the one or more control signals provided to the one logic module is/are selected from the group consisting of: a clock signal, a clock enable signal, a synchronous load signal, an asynchronous load signal, a synchronous clear signal and an asynchronous clear signal.
7. The apparatus of claim 1 , wherein an output of the first register is programmably cascaded as an input to the second register.
8. The apparatus of claim 1 , wherein the one logic module further comprises a plurality of output multiplexers coupled to outputs of the first register and the second register respectively.
9. The apparatus of claim 8 , wherein the outputs of the first register and the second register are partitioned among the plurality of output multiplexers.
10. The apparatus of claim 8 , wherein the output multiplexers selectively couple the outputs of the first register and the second register to either one of the inter-logic array block lines, a logic array block line local to the one logic array block, or both.
11. (canceled)
12. The apparatus of claim 1 , wherein the one logic module further comprises data generation logic to provide a first data input and a second data input to the first register and the second register respectively.
13. The apparatus of claim 12 , wherein the first data input and the second data inputs are inputs provided to the one logic module.
14. The apparatus of claim 13 , wherein the first data input and the second data input provided to the first register and the second register are either the same data input or two different data inputs to the one logic module.
15. The apparatus of claim 1 , wherein the first register is capable of being driven by one of the following:
(i) the first combinational output signal;
(ii) an input signal provided to the one logic module; or
(iii) a clear signal.
16. The apparatus of claim 1 , wherein the second register is capable of being driven by one of the following:
(i) the first combinational output signal;
(ii) an input signal provided to the one logic module; or
(iii) a clear signal.
17. An apparatus, comprising:
a programmable logic device, the programmable logic device including:
a plurality of logic array blocks arranged in an array;
a plurality of inter-logic array block lines interconnecting the logic array blocks of the array,
wherein at least one of the logic array blocks further includes at least one logic module, the one logic module including:
one or more combinational element configured to generate one or more combinational output signals in response to inputs provided to the one logic module; and
a plurality of registers capable of being driven by the one or more combinational outputs signals,
wherein the number of registers exceeds the number of combinational output signals in the one logic module.
18. The apparatus of claim 17 , wherein number of registers versus the number of combinational output signals in the one logic module is defined by one of the following ratios: 2:1, 3:1, 3:2, 4:1, 4:2, 4:3, 5:1, 5:2, 5:3 or 5:4 respectively.
19. The apparatus of claim 18 , wherein the one or more combinational elements further consists one of the following:
(i) a first combinational element configured to generate a first combinational output signal;
(ii) a first combinational element configured to generate a first combinational output signal and a second combinational output signal;
(iii) a first combinational element configured to generate a first combinational output signal and a second combinational output signal and a second combinational element configured to generate a third combinational signal; and
(iv) a first combinational element configured to generate a first combinational output signal and a second combinational output signal and a second combinational element configured to generate a third combinational output signal and a fourth combinational output signal.
20. The apparatus of claim 18 , wherein the plurality of registers capable of being driven by the one or more combinational outputs signals consists one of the following:
(i) two registers in the one logic module;
(ii) three registers in the one logic module;
(iii) four registers in the one logic module; or
(iv) five registers in the one logic module.
21. The apparatus of claim 18 , wherein the one logic module further comprises:
a first combinational element configured to generate a first combinational output signal;
a first register capable of being driven by the first combinational output signal; and
a second register capable of being driven by the first combinational output signal.
22. The apparatus of claim 21 , wherein the first combinational element is further configured to generate a second combinational output signal and the one logic element further comprises a third register capable of being driven by either the first combinational output signal or the second combinational output signal.
23. The apparatus of claim 18 , wherein the one logic module further comprises a control signal selection circuit configured to generate a plurality of register control signals to control the plurality of registers respectively.
24. The apparatus of claim 23 , wherein the control signal selection circuit is configured to generate the plurality of register control signals in response to one or more control signals provided to the one logic module.
25. The apparatus of claim 24 , wherein the one or more control signals provided to the one logic module is/are selected from the group consisting of: a clock signal, a clock enable signal, a synchronous load signal, an asynchronous load signal, a synchronous clear signal and an asynchronous clear signal.
26. The apparatus of claim 18 , wherein the plurality of registers can be programmably cascaded together so that an output of one register is provided to an input of a second register.
27. The apparatus of claim 18 , wherein the one logic module further comprises a plurality of output multiplexers coupled to outputs of the plurality of registers respectively.
28. The apparatus of claim 27 , wherein the outputs of the plurality of registers are partitioned among the plurality of output multiplexers respectively.
29. The apparatus of claim 28 , wherein the plurality of output multiplexers selectively couple the outputs of the plurality of the registers to either one of the inter-logic array block lines or a logic array block line local to the one logic array block respectively.
30. The apparatus of claim 18 , wherein the one logic module further comprises data generation logic to provide one or more data inputs to the plurality of registers respectively.
31. The apparatus of claim 18 , wherein each of the plurality of registers is capable of being driven by one of the following:
(i) one or more of the combinational output signals;
(ii) an input signal provided to the one logic module; or
a clear signal.
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/753,059 US7459932B1 (en) | 2007-05-24 | 2007-05-24 | Programmable logic device having logic modules with improved register capabilities |
CN200810098413.2A CN101312346B (en) | 2007-05-24 | 2008-05-26 | Programmable logic device having logic modules with improved register capabilities |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/753,059 US7459932B1 (en) | 2007-05-24 | 2007-05-24 | Programmable logic device having logic modules with improved register capabilities |
Publications (2)
Publication Number | Publication Date |
---|---|
US20080290897A1 true US20080290897A1 (en) | 2008-11-27 |
US7459932B1 US7459932B1 (en) | 2008-12-02 |
Family
ID=40071816
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US11/753,059 Active US7459932B1 (en) | 2007-05-24 | 2007-05-24 | Programmable logic device having logic modules with improved register capabilities |
Country Status (2)
Country | Link |
---|---|
US (1) | US7459932B1 (en) |
CN (1) | CN101312346B (en) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200036382A1 (en) * | 2016-12-27 | 2020-01-30 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8581624B2 (en) | 2012-03-29 | 2013-11-12 | Altera Corporation | Integrated circuits with multi-stage logic regions |
US10586004B2 (en) | 2015-06-22 | 2020-03-10 | Altera Corporation | Method and apparatus for utilizing estimations for register retiming in a design compilation flow |
US11132207B2 (en) * | 2017-12-29 | 2021-09-28 | Lattice Semiconductor Corporation | Fast boot systems and methods for programmable logic devices |
EP3588779B1 (en) * | 2018-06-22 | 2021-02-24 | Menta | Digital signal processor and method of operation |
CN110018654B (en) * | 2019-03-19 | 2021-09-14 | 中科亿海微电子科技(苏州)有限公司 | Fine-grained programmable sequential control logic module |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5744981A (en) * | 1994-01-27 | 1998-04-28 | Dyna Logic Corporation | Programmable logic cell with input polarity control |
US6107827A (en) * | 1997-02-26 | 2000-08-22 | Xilinx, Inc. | FPGA CLE with two independent carry chains |
US6943580B2 (en) * | 2003-02-10 | 2005-09-13 | Altera Corporation | Fracturable lookup table and logic element |
US7129747B1 (en) * | 2004-10-15 | 2006-10-31 | Xilinx, Inc. | CPLD with fast logic sharing between function blocks |
US7167022B1 (en) * | 2004-03-25 | 2007-01-23 | Altera Corporation | Omnibus logic element including look up table based logic elements |
US7185035B1 (en) * | 2003-10-23 | 2007-02-27 | Altera Corporation | Arithmetic structures for programmable logic devices |
US20070063732A1 (en) * | 2005-09-22 | 2007-03-22 | Altera Corporation | Area efficient fractureable logic elements |
US7268584B1 (en) * | 2005-07-28 | 2007-09-11 | Altera Corporation | Adder circuitry for a programmable logic device |
US7274214B1 (en) * | 2005-06-14 | 2007-09-25 | Xilinx, Inc. | Efficient tile layout for a programmable logic device |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5761483A (en) * | 1995-08-18 | 1998-06-02 | Xilinx, Inc. | Optimizing and operating a time multiplexed programmable logic device |
US7659838B2 (en) * | 2005-08-03 | 2010-02-09 | Altera Corporation | Deserializer circuitry for high-speed serial data receivers on programmable logic device integrated circuits |
-
2007
- 2007-05-24 US US11/753,059 patent/US7459932B1/en active Active
-
2008
- 2008-05-26 CN CN200810098413.2A patent/CN101312346B/en not_active Expired - Fee Related
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5744981A (en) * | 1994-01-27 | 1998-04-28 | Dyna Logic Corporation | Programmable logic cell with input polarity control |
US6107827A (en) * | 1997-02-26 | 2000-08-22 | Xilinx, Inc. | FPGA CLE with two independent carry chains |
US6943580B2 (en) * | 2003-02-10 | 2005-09-13 | Altera Corporation | Fracturable lookup table and logic element |
US7185035B1 (en) * | 2003-10-23 | 2007-02-27 | Altera Corporation | Arithmetic structures for programmable logic devices |
US7167022B1 (en) * | 2004-03-25 | 2007-01-23 | Altera Corporation | Omnibus logic element including look up table based logic elements |
US7129747B1 (en) * | 2004-10-15 | 2006-10-31 | Xilinx, Inc. | CPLD with fast logic sharing between function blocks |
US7274214B1 (en) * | 2005-06-14 | 2007-09-25 | Xilinx, Inc. | Efficient tile layout for a programmable logic device |
US7268584B1 (en) * | 2005-07-28 | 2007-09-11 | Altera Corporation | Adder circuitry for a programmable logic device |
US20070063732A1 (en) * | 2005-09-22 | 2007-03-22 | Altera Corporation | Area efficient fractureable logic elements |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20200036382A1 (en) * | 2016-12-27 | 2020-01-30 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device |
US10797706B2 (en) * | 2016-12-27 | 2020-10-06 | Semiconductor Energy Laboratory Co., Ltd. | Semiconductor device |
Also Published As
Publication number | Publication date |
---|---|
CN101312346B (en) | 2013-04-24 |
US7459932B1 (en) | 2008-12-02 |
CN101312346A (en) | 2008-11-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US7675319B2 (en) | Programmable logic device having complex logic blocks with improved logic cell functionality | |
US7890910B1 (en) | Programmable logic device having logic elements with dedicated hardware to configure look up tables as registers | |
US7075333B1 (en) | Programmable circuit optionally configurable as a lookup table or a wide multiplexer | |
US7911230B1 (en) | Omnibus logic element for packing or fracturing | |
US7274211B1 (en) | Structures and methods for implementing ternary adders/subtractors in programmable logic devices | |
US6998872B1 (en) | Lookup table circuit optionally configurable as two or more smaller lookup tables with independent inputs | |
US6107822A (en) | Logic element for a programmable logic integrated circuit | |
US7567997B2 (en) | Applications of cascading DSP slices | |
US8543635B2 (en) | Digital signal processing block with preadder stage | |
US20050218929A1 (en) | Field programmable gate array logic cell and its derivatives | |
US8072238B1 (en) | Programmable logic device architecture with the ability to combine adjacent logic elements for the purpose of performing high order logic functions | |
EP2645574B1 (en) | Integrated circuits with multi-stage logic regions | |
US7459932B1 (en) | Programmable logic device having logic modules with improved register capabilities | |
US7164290B2 (en) | Field programmable gate array logic unit and its cluster | |
US7598769B2 (en) | Apparatus and method for a programmable logic device having improved look up tables | |
US7268584B1 (en) | Adder circuitry for a programmable logic device | |
US20100192118A1 (en) | Method of and circuit for implementing a filter in an integrated circuit | |
US7812633B1 (en) | Apparatus and method for the arithmetic over-ride of look up table outputs in a programmable logic device | |
US7508231B2 (en) | Programmable logic device having redundancy with logic element granularity | |
US7378869B1 (en) | Lookup table circuits programmable to implement flip-flops | |
US20050275427A1 (en) | Field programmable gate array logic unit and its cluster | |
US7368942B1 (en) | Dedicated resource interconnects | |
US7579866B1 (en) | Programmable logic device with configurable override of region-wide signals |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ALTERA CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:LEWIS, DAVID;REEL/FRAME:019496/0503 Effective date: 20070523 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
MAFP | Maintenance fee payment |
Free format text: PAYMENT OF MAINTENANCE FEE, 12TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1553); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY Year of fee payment: 12 |