US5521529A - Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation - Google Patents
Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation Download PDFInfo
- Publication number
- US5521529A US5521529A US08/459,960 US45996095A US5521529A US 5521529 A US5521529 A US 5521529A US 45996095 A US45996095 A US 45996095A US 5521529 A US5521529 A US 5521529A
- Authority
- US
- United States
- Prior art keywords
- programmable
- switch matrix
- lines
- programmable logic
- cpld
- 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.)
- Expired - Lifetime
Links
- 239000011159 matrix material Substances 0.000 title claims abstract description 398
- 238000009826 distribution Methods 0.000 claims description 42
- 230000004044 response Effects 0.000 claims description 8
- 230000002457 bidirectional effect Effects 0.000 claims description 3
- 230000008878 coupling Effects 0.000 claims description 3
- 238000010168 coupling process Methods 0.000 claims description 3
- 238000005859 coupling reaction Methods 0.000 claims description 3
- 102100040862 Dual specificity protein kinase CLK1 Human genes 0.000 description 23
- 230000014509 gene expression Effects 0.000 description 17
- 230000001934 delay Effects 0.000 description 14
- 238000010586 diagram Methods 0.000 description 14
- 238000013459 approach Methods 0.000 description 12
- 230000009977 dual effect Effects 0.000 description 8
- 238000000034 method Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 6
- XUIMIQQOPSSXEZ-UHFFFAOYSA-N Silicon Chemical compound [Si] XUIMIQQOPSSXEZ-UHFFFAOYSA-N 0.000 description 5
- 230000008569 process Effects 0.000 description 5
- 229910052710 silicon Inorganic materials 0.000 description 5
- 239000010703 silicon Substances 0.000 description 5
- 238000003491 array Methods 0.000 description 4
- 238000013461 design Methods 0.000 description 4
- 238000000638 solvent extraction Methods 0.000 description 4
- 101000579490 Solanum lycopersicum Suberization-associated anionic peroxidase 1 Proteins 0.000 description 3
- 101001073211 Solanum lycopersicum Suberization-associated anionic peroxidase 2 Proteins 0.000 description 3
- 230000015572 biosynthetic process Effects 0.000 description 3
- 230000001419 dependent effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000003786 synthesis reaction Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 2
- 230000000295 complement effect Effects 0.000 description 2
- 239000002184 metal Substances 0.000 description 2
- 230000000630 rising effect Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 239000013598 vector Substances 0.000 description 2
- HRANPRDGABOKNQ-ORGXEYTDSA-N (1r,3r,3as,3br,7ar,8as,8bs,8cs,10as)-1-acetyl-5-chloro-3-hydroxy-8b,10a-dimethyl-7-oxo-1,2,3,3a,3b,7,7a,8,8a,8b,8c,9,10,10a-tetradecahydrocyclopenta[a]cyclopropa[g]phenanthren-1-yl acetate Chemical compound C1=C(Cl)C2=CC(=O)[C@@H]3C[C@@H]3[C@]2(C)[C@@H]2[C@@H]1[C@@H]1[C@H](O)C[C@@](C(C)=O)(OC(=O)C)[C@@]1(C)CC2 HRANPRDGABOKNQ-ORGXEYTDSA-N 0.000 description 1
- 102100040844 Dual specificity protein kinase CLK2 Human genes 0.000 description 1
- 101000749294 Homo sapiens Dual specificity protein kinase CLK1 Proteins 0.000 description 1
- 101000749291 Homo sapiens Dual specificity protein kinase CLK2 Proteins 0.000 description 1
- 230000015556 catabolic process Effects 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000006731 degradation reaction Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000008030 elimination Effects 0.000 description 1
- 238000003379 elimination reaction Methods 0.000 description 1
- 238000013507 mapping Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000000203 mixture Substances 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 238000009827 uniform distribution Methods 0.000 description 1
- 239000002699 waste material Substances 0.000 description 1
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/17736—Structural details of routing 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/17704—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 the logic functions being realised by the interconnection of rows and columns
Definitions
- This invention relates generally to complex programmable logic devices and in particular to very high-density programmable logic devices with a high speed, hierarchical, scalable, multi-tiered switch matrix structure, optimized and flexible logic allocation, and a novel logic macrocell.
- PLDs programmable logic devices
- FPGAs field programmable gate arrays
- CPLDs complex PLDs
- both segmented block-based CPLDs and FPGAs are programmable blocks with programmable interconnects.
- the fundamental difference between the two is in the architecture of the basic programmable block and the programmable interconnect structure.
- Basic goals are same for both architectures--higher density, higher performance, broader application base, low cost, and easy to use solutions. However, the means used to achieve these goals and results are different.
- Each of the basic architectures has its own characteristics, strengths and weaknesses that emanates from the fundamental philosophy behind the architecture.
- Channeled array based FPGA architectures are characterized as an array of a large number of narrow, granular blocks, usually look-up table based or multiplexer based logic, surrounded by a phalanx of uncommitted I/O blocks, and interconnected by distributed programmable interconnect structures.
- Segmented block-based CPLDs are characterized as made up of a smaller number of large programmable logic blocks, that are usually sum-of-products based, interconnected by a centralized switch matrix or interconnect array.
- Narrow granular blocks along with distributed interconnects inherently tend to have variable, non-uniform, path-dependent and somewhat unpredictable signal delays.
- Most channeled array based FPGAs typically exhibit such signal delay characteristics.
- Most segmented block-based CPLDs tend to have fixed, more predictable, uniform and path-independent signal delays.
- the full cross-point programmable interconnect array has the potential advantage of 100% global connectivity for all signals. All global signals are typically brought into a centralized interconnect array and the input signals for each programmable logic block in the CPLD are generated from this centralized array. Though the number of input signals for each block is a subset of the total number of global signals, each input signal can essentially be a function of all global signal sources at the same time. This global connectivity provides 100% connectivity and somewhat simplifies the "Routing" software. Also, since full global connectivity is always available, the routing software is not required to make any particularly intelligent decisions for routing signals.
- the major disadvantages of the full cross-point PIA approach are speed degradation, a larger die size, scalability with increased density, and wasted resources.
- a high-density CPLD incorporating a full cross-point programmable interconnect array tends to be (and is likely to be) slower and more expensive than a comparable CPLD with an optimized sparsely populated switch matrix.
- the full cross-point PIA receives feedback signals from all the internal logic macrocells of all logic blocks and all I/O pin feedback signals, the total number of input signals to the PIA is directly proportional to the total number and size of the logic blocks, and the number of I/O pins in the CPLD. As the number of logic blocks and I/O pins increase, the total number of signals routed to the PIA tends to increase rapidly.
- the other significant drawback of the PIA is its potential waste of significant resources.
- the number of input signals needed for a block is usually significantly smaller than the device's full capability. As a result, most of the signal paths remain unutilized.
- the multiplexer based sparse switch matrix approach focuses on speed, cost, optimized global connectivity, and die size.
- the sparse central switch matrix receives input signals from all macrocells and I/O pins. All programmable logic block input signals, in turn, are derived from the sparse central switch matrix. However, each programmable logic block input line is judiciously connected to a subset of the total input lines of the sparse central switch matrix to provide optimized connectivity. Unlike the PIA approach, each programmable logic block input line is not connected to all input lines of the sparse central switch matrix. Rather, all the input lines of a programmable logic block combined have access to all signals on the input lines to the sparse central switch matrix.
- the sparse central switch matrix approach tends to put some restrictions on the global connectivity. This approach provides particular combinations of input signals to a programmable logic block, and so restricts certain combinations of input signals. However, with an intelligently structured sparse central switch matrix, the global connectivity can be significantly enhanced and the routing restrictions can be significantly minimized.
- a major potential drawback of the single-tiered sparse central switch matrix approach is scalability to higher density devices.
- the number of signals entering the sparse central switch matrix tends to increase linearly with the number of macrocells and I/O pins.
- the capacitive load for driving all signals to a central switch matrix is significantly increased.
- either the number of programmable logic block input lines or the multiplexer size needs to be increased rapidly, resulting in slower and potentially more expensive devices.
- higher-density, block-based CPLDs tend to be comparatively slower than lower-density block-based CPLDs.
- a very high-density complex programmable logic device has a plurality of hierarchical signal paths.
- the lowest level of the hierarchy is independent from all higher levels.
- an intermediate level is independent from all higher levels and utilizes only features of the CPLD associated with the lowest and intermediate hierarchical levels.
- the very high-density complex programmable logic device includes a first hierarchical level circuit having first hierarchical level resources where a first hierarchical level signal path within the first hierarchical level circuit utilizes only the first hierarchical level resources.
- the first hierarchical level resources include a programmable logic block having a plurality of input lines and a plurality of output lines, and a programmable block switch matrix connected to the plurality of input lines of the programmable logic block.
- the CPLD also includes a second hierarchical level circuit having second hierarchial level resources connected to the first hierarchical level resources where a second hierarchical level signal path utilizes only second and first hierarchical level resources.
- the second hierarchical level resources include a programmable segment switch matrix connected to a plurality of input lines of the programmable block switch matrix, and also a plurality of programmable logic blocks grouped as a segment.
- the CPLD of this invention in addition includes a third hierarchical level circuit having third hierarchial level resources connected to the second hierarchical level resources where a third hierarchical level signal path utilizes the third, second, and first hierarchical level resources.
- the third hierarchical level resources include a programmable global switch matrix having global switch matrix lines programmably connected to and disconnected from lines of the programmable segment switch matrix and includes a plurality of segments.
- the first hierarchical level which includes a programmable block switch matrix and a programmable logic block, is a high speed signal path for routing a signal from one I/O pin associated with the programmable logic block through the programmable block switch matrix and programmable logic block to another I/O pin associated with the programmable logic block.
- the signal path has a pin-to-pin time delay that is comparable with low-density programmable logic devices that are referred to as PAL devices. (PAL is a registered U.S. trademark of Advanced Micro Devices of Sunnyvale, Calif.)
- the signal time delay through a block switch matrix is preferably fixed, uniform, deterministic, and predictable, i.e., is a characteristic of the hierarchical level.
- the time delay through the segment switch matrix preferably is also fixed, predictable, uniform, and deterministic, as is the time delay through the global switch matrix. Consequently, the time delay for the signal path in the second hierarchical level, e.g., from a pin associated with one programmable logic block through the segment switch matrix, the block switch matrix, and the programmable logic block back to another pin associated with that programmable logic block is also fixed, predictable, uniform, and deterministic time delay, and is a characteristic of the second hierarchical level.
- a signal from a first programmable logic block in a segment can be fed back through the segment switch matrix, a block switch matrix for a second programmable logic block and the second programmable logic block in the segment with the time delay characteristic of the second hierarchical level.
- a signal path from a programmable logic block in a first segment, or an I/O pin associated with the programmable logic block, to the segment switch matrix, to the global switch matrix, to another segment switch matrix, block switch matrix and programmable logic block in another segment defines the third hierarchical level of the CPLD with a time delay characteristic of the third hierarchical level.
- a programmable logic block receives input signals over a plurality of input lines from a block switch matrix.
- the block switch matrix receives input signals from a plurality of segment switch matrix input lines and a predetermined number of local feedback lines from logic macrocells and from I/O pins in the programmable logic block.
- the block switch matrix arbitrates whether a programmable logic block receives first level or second level hierarchical signals.
- the segment switch matrix has a plurality of lines connected to the global switch matrix and the predetermined number of local feedback lines from the logic macrocells and the I/O pins associated with each programmable logic block in the segment.
- the segment switch matrix arbitrates between routing a signal to the second hierarchical level, i.e., through the segment switch matrix to a block switch matrix, or to the third hierarchical level, i.e., through the segment switch matrix to the global switch matrix.
- the global switch matrix receives input signals from each segment switch matrix in the CPLD and routes the signals to another segment switch matrix.
- each programmable logic block includes a programmable logic array, a programmable optimized-distribution logic allocator, and a plurality of programmable logic macrocells, a macrocell mode control generator circuit, and a plurality of I/O cells that each control the configuration of an I/O pin.
- the programmable logic macrocells can be both output logic macrocells that are coupled to an I/O pin, or buried logic macrocells that only provide feedback signals to the hierarchical switch matrix.
- all the programmable logic macrocells in one programmable logic block are output programmable logic macrocells and all the programmable logic macrocells in another programmable logic block are buried programmable logic macrocells.
- the programmable logic array is a programmable-AND fixed-OR logic array(AND/OR array).
- the programmable-AND array has a plurality of logic product terms and a plurality of control product terms. Each cluster of four product terms drives one OR gate in the fixed-OR gate array. In one embodiment, three of the four product terms are fixedly connected to the OR gate and one of the product terms is programmably connectable to and disconnectable from the OR gate. In another embodiment, all of the four product terms are fixedly connected to the OR gate.
- the sum-of-product terms from an OR gate drives one input line in the plurality of input lines of the programmable optimized-distribution logic allocator.
- the programmable optimized-distribution logic allocator includes a multiplicity of router elements, where each router element steers a sum of a selected number of sum-of-product terms from the programmable array, i.e, a selected number of logic product-term clusters, to a programmably selected logic macrocell. Further, the router elements are configured to optimize the logic efficiency.
- the programmable optimized-distribution logic allocator provides programmable access to a minimum of twenty product terms to each logic macrocell.
- selected macrocells and I/O pins have programmable access to a greater logic depth so that logic functions requiring up to thirty-two product terms, i.e., one-half the total number of product terms available for logic, can be implemented in a single pass through the CPLD.
- the programmable optimized-distribution logic allocator provides programmable access to a uniform, symmetric distribution of twenty product terms to each of the I/O pins without an output switch matrix. Further, the feedback signals from the macrocells are uniform and symmetric for the twenty product terms.
- the uniform and variable logic product-term cluster distribution of the programmable optimized-distribution logic allocator with the twenty product terms provides several major benefits.
- Each logic macrocell in a programmable logic block receives a plurality of radical block clock signals from the macrocell mode control generator circuit.
- the signals from the macrocell mode control generator are referred to as radical block clock signals because the signals can include conventional clock signals as well as signals that configure a macrocell for a particular virtual mode of operation as a particular type of storage element.
- the macrocell mode control generator circuit includes architectural cells that are used to configure the generator circuit to provide the plurality of radical block clock signals to each programmable logic macrocell in the programmable logic block.
- the radical block clock signals can include synchronous clock signals, asynchronous clock signals, and asynchronous preset and reset signals.
- the macrocell mode control generator circuit can be programmed to provide a dual edge-sensitive clock that clocks on both rising and falling edges.
- a macrocell can be clocked at twice the frequency of the external clock signal.
- the radical block clock signals also can include two clock signals from a single source that are exactly 180° out of phase with each other, or mixed clock signals that include combinations of sum-of-product term clocks, product-term clocks, and pin clocks.
- each programmable logic macrocell includes a programmable multiplexer that receives the plurality of radical block clock signals from the macrocell mode control generator circuit and a configurable storage element.
- the configurable storage element can be configured to provide a combinatorial output signal.
- An input terminal of the configurable storage element is coupled to an output line from the logic allocator and a configuration input/clock terminal of the configurable storage element is connected to the output line from the programmable multiplexer.
- the particular radical block clock signal passed through the programmable multiplexer by an input select signal determines the characteristics of the configurable storage element.
- the configurable storage element can be configured at least as any one of D-type flip-flop, a T-type register, a latch, and a combinatorial output signal.
- the functionality of the programmable macrocell of this invention is similar to that in prior art CPLDs, the implementation of the functionality using only a programmable multiplexer and a three-terminal configurable storage element is fundamentally different from prior art macrocells.
- the registers and latches in the macrocell were thought of as storage elements with each storage element having a clock terminal, an asynchronous preset terminal, an asynchronous reset terminal, and possibly an enable terminal in addition to the input and output terminals.
- the signals used to drive the clock terminal, the asynchronous preset terminal, and the asynchronous reset terminal were either implemented using macrocell specific resources, e.g., a product-term from the cluster associated with the macrocell, or resources common to the programmable logic block containing the macrocell.
- the preset, reset, and clock signals for a register or a latch are not independent from the partitioning process for a programmable logic block.
- the preset, reset and clock signals are combined into a radical block clock expression that is implemented by the programming macrocell mode control generator circuit.
- an output line from the logic macrocell drives a feedback line to the hierarchical switch matrix, and an input line to an I/O cell.
- the programmable logic macrocells are divided into output logic macrocells and buried logic macrocells, as indicated above.
- the output logic macrocells function as just described.
- the buried logic macrocells only provide feedback signals to the hierarchical switch matrix.
- Each I/O cell selectively connects and disconnects the programmable logic macrocell output signal to an I/O pin.
- each I/O cell can be configured to connect the programmable logic macrocell output signal to the I/O pin, to tri-state the I/O pin, or to control the signal supplied to I/O pin with one of the two product terms that are common to all the I/O cells in the programmable logic block.
- FIG. 1 is a block diagram of a very high-density programmable logic device (CPLD) including the hierarchical switch matrix of this invention.
- CPLD very high-density programmable logic device
- FIG. 2 is a more detailed block diagram of the CPLD of FIG. 1 that illustrates the global switch matrix, segment switch matrices, and the block switch matrices that comprise the hierarchical switch matrix of this invention.
- FIG. 3 is a detailed block diagram of the hierarchical switch matrix and the programmable logic block of this invention.
- FIGS. 4A and 4B illustrate the programmable interconnect between the segment switch matrices and the global switch matrix of this invention.
- FIG. 5 is a block diagram that illustrates the interconnections between router elements and the steering of product-term clusters by the logic allocator of this invention.
- FIG. 6A is one embodiment of a product-term cluster, and a router element in the logic allocator of this invention.
- FIG. 6B is a more detailed diagram of the programmable signal connector of FIG. 6A.
- FIG. 6C is another embodiment of a product-term cluster with the router element of the logic allocator of this invention.
- FIG. 7, presented as FIGS. 7A and 7B, is a schematic diagram of one embodiment of the macrocell mode control generator circuit of this invention.
- FIG. 8A is a more detailed block diagram of the programmable logic macrocell of this invention.
- FIG. 8B is a trace of a clock signal used with the programmable logic macrocell of this invention.
- FIG. 8C is a trace of a clock pulses generated by a pulse generator in the macrocell mode control generator circuit of this invention in response to a signal like that illustrated in FIG. 8B.
- FIG. 9 is a diagram that illustrates one embodiment of the configuration cells, product-term cluster, router element, and programmable logic macrocell that is used to demonstrate the use of the programmable logic macrocell of this invention.
- FIG. 10 is a schematic diagram of one embodiment of an I/O cell for this invention.
- a new very high-density complex programmable logic device (CPLD) 100 includes a new hierarchical switch matrix 160 that programmably interconnects a multiplicity of programmable segments 101 to 104 that each includes a plurality of programmable logic blocks, e.g, in this embodiment four programmable logic blocks 101-A to 101-D, 102-A to 102-D, 103-A to 103-D, and 104-A to 104-D, respectively.
- each of the programmable logic blocks is a 32V16-like programmable logic block that has thirty-two input lines, sixteen macrocells, and sixteen I/O pins.
- Hierarchical switch matrix 160 Two levels of hierarchical switch matrix 160 are illustrated in FIG. 1, i.e., a plurality of programmable segment switch matrices 161 to 164, and a programmable global switch matrix 165. In another embodiment, as described more completely below, a plurality of block switch matrices is included in hierarchical switch matrix 160.
- the various levels of hierarchy in hierarchical switch matrix 160 and CPLD 100 are defined by the signal paths through CPLD 100. Each hierarchical signal path has a predetermined time delay associated with the path.
- all programmable logic blocks within a segment communicate with each other through the programmable segment switch matrix, sometimes referred to as the segment switch matrix, for that segment.
- programmable logic blocks 101-A to 101-D communicate with each other through segment switch matrix 161.
- the signal path through segment switch matrix 161 to programmable logic block 101-D defines a hierarchical level within PLD, e.g., intra-segment signal paths are one level of hierarchy.
- Global switch matrix 165 programmably interconnects and disconnects segment switch matrices 161 to 165 so that signals can be communicated between programmable logic blocks in different segments.
- a programmable logic block in one segment communicates with a programmable logic block in another segment using programmable global switch matrix 165, sometimes referred to as global switch matrix 165.
- programmable logic block 102-A in segment 102 drives a signal onto programmable segment switch matrix 162 which provides the signal to global switch matrix 165.
- Global switch matrix 165 routes the signal to segment switch matrix 161, which in turn provides the signal to programmable logic block 101-B.
- a signal path through global switch matrix 165 to a segment switch matrix to a programmable logic block defines another level of hierarchy within CPLD 100.
- Hierarchial switch matrix 160 provides numerous programmably selectable signal path combinations to each programmable logic block, and so has significant signal path flexibility.
- Hierarchical switch matrix 160 has a fixed, path independent, uniform, predictable and deterministic time delay through each level of hierarchical switch matrix 160.
- the speed of CPLDs containing hierarchical switch matrix 160 is dependent on the signal path though hierarchical switch matrix 160, i.e, the number of levels of hierarchical switch matrix 160 traversed by the signal.
- Each segment 101 to 104 in CPLD 100 is modular. As explained more completely below, the modularity results in significantly easier scalability to higher densities.
- global switch matrix 165 is easily extended to support any number of segments with no change in the basic global switch matrix architecture.
- Each segment is completely independent and has its own programmable interconnect with global switch matrix 165.
- CPLD 100 to be configured as multiple independent CPLDs that are interconnected by global switch matrix 165. Consequently, instead of laying out a circuit board to support multiple CPLDs and routing the signals among the various CPLDs, CPLD 100 of this invention can be used.
- the replacement of the circuit board layout with the programmability of global switch matrix 165 greatly enhances the designer's ability to quickly and effectively implement changes. Consequently, CPLD 100 of this invention reduces the time-to-market of circuits utilizing two or more interconnected CPLDs.
- Hierarchical switch matrix 160 is suitable for CPLDs having gate densities in the range of about 64 to about 500 or more macrocells.
- very high-density programmable logic device refers to a CPLD having in the range of 64 to 512 or more macrocells and 64 to 256 or more I/O pins.
- the pluralities of I/O pins 105-A to 105-D are coupled to programmable logic blocks 101-A to 101-D, respectively; the pluralities of I/O pins 106-A to 106-D are coupled to programmable logic blocks 102-A to 102-D, respectively; the pluralities of I/O pins 107-A to 107-D are coupled to programmable logic blocks 103-A to 103-D, respectively; and the pluralities of I/O pins 108-A to 108-D are coupled to programmable logic blocks 104-A to 104-D, respectively.
- hierarchial switch matrix 160 provides a new level of architectural flexibility and speed. Generally, in comparison to the prior art centralized sparse switch matrices, hierarchical switch matrix 160 provides increased signal routing flexibility and scalability to higher densities without encountering signal routing limitations.
- hierarchical switch matrix 160 A more detailed description of hierarchical switch matrix 160 is provided in copending, commonly filed, and commonly assigned U.S. patent application Ser. No. 08/459,230, entitled “A MULTI-TIERED HIERARCHICAL HIGH SPEED SWITCH MATRIX STRUCTURE FOR VERY HIGH-DENSITY COMPLEX PROGRAMMABLE LOGIC DEVICES" of Om P. Agrawal et al. that was filed on Jun. 2, 1995, and is incorporated herein by reference in its entirety.
- FIG. 2 is a block diagram of one module, i.e., segment 101, of a very high-density CPLD 100A that includes both a three-level hierarchical switch matrix 160 and the programmable logic block of this invention.
- Hierarchical switch matrix 160 in this embodiment, includes global switch matrix 165, segment switch matrix 161, as well as each of the other segment switch matrices illustrated in FIG. 1, and a plurality of programmable block switch matrices that includes programmable block switch matrices 266-A to 266-D.
- the architecture of hierarchical switch matrix 160 for each of the other segments will be apparent to those skilled in the art in view of this disclosure.
- each programmable logic block 101-A to 101-D has associated with that programmable logic block a programmable block switch matrix 266-A to 266-D, respectively.
- programmable block switch matrix 266-A to 266-D are associated with that programmable logic block.
- elements with the same alphanumeric character in the reference numeral are associated elements.
- Programmable block switch matrices 266-A to 266-D are a first level within hierarchical switch matrix 160.
- Each programmable block switch matrix has a plurality of output lines that provide a plurality of input signals on input lines to the associated programmable logic block, e.g., output lines 207-A of block switch matrix 266-A provide input signals to input lines of programmable logic block 101-A.
- Each programmable block switch matrix 266-A to 266-D receives a plurality of input signals from segment switch matrix 161 over lines 209-A to 209-D, respectively.
- Each programmable block switch matrix also receives a plurality of feedback signals from the programmable logic blocks and I/O pins associated with the block switch matrix.
- each of a plurality of programmable logic macrocells in programmable logic block 101-A e.g., sixteen programmable output logic macrocells
- All feedback signals of a programmable logic block 101-A i.e., all I/O pins feedback signals, and all macrocell feedback signals, communicate directly only with block switch matrix 266-A and with segment switch matrix 161. For clarity the feedback signals are not shown in FIG. 2.
- a programmable logic block 101-A and an associated block switch matrix 266-A define a first hierarchical level in CPLD 100A.
- a signal in CPLD 100 that is generated at this first hierarchical level can be fed back to the first hierarchical level independent of any other hierarchical levels in CPLD 100, i.e, a signal from programmable logic block 101-A can be fed back through block switch matrix 266-A to block 101-A.
- a signal from an I/O pin can be passed through the first hierarchical level to another I/O pin associated with block 101-A independent of any other hierarchical levels in CPLD 100, i.e., from an I/O pin to block switch matrix 266-A to block 101-A to another I/O pin associated with block 101-A.
- a signal can traverse the first hierarchical level independent of any other hierarchical level in CPLD 100.
- a programmable block switch matrix e.g. block switch matrix 266-A
- a programmable block switch matrix is a high speed programmable switch matrix for routing a signal from one I/O pin in I/O pins 105-A through programmable logic block 101-A to another I/O pin in I/O pins 105-A.
- the signal path has a pin-to-pin time delay that is comparable with low-density programmable logic devices that are referred to as PAL devices.
- PAL is a registered U.S. trademark of Advanced Micro Devices of Sunnyvale, Calif.
- the signal time delay through a block switch matrix is preferably fixed, uniform, deterministic, and predictable, and is a characteristic of the hierarchical level.
- the time delay through segment switch matrix 161 preferably is also fixed, predictable, uniform, and deterministic, as is the time delay through global switch matrix 165. Consequently, the time delay for the signal path from a pin associated with one programmable logic block through segment switch matrix 161, block switch matrix 266-A, and programmable logic block 101-A back to another pin associated with that programmable logic block is also fixed, predictable uniform, and deterministic, and is characteristic of the second hierarchical level.
- a signal from a first programmable logic block 101-B can be fed back through segment switch matrix 161 and block switch matrix 266-A to programmable logic block 101-A with the time delay characteristic of the second hierarchical level.
- a signal from a programmable logic block 101-A in a first segment 101, or an I/O pin associated with programmable logic block 101-A, to segment switch matrix 161 to global switch matrix 165 to another segment switch matrix, block switch matrix and programmable logic block in another segment defines a third hierarchical level of CPLD 100 with a characteristic time delay of the third hierarchical level.
- Hierarchical switch matrix 160 breaks routing congestion, is that none of the feedback signals from the macrocells and I/O pins connect directly to global switch matrix 165. These feedback signals communicate with global switch matrix 165 only via segment switch matrix 161.
- This architecture for hierarchical switch matrix 160 maintains the modularity of each segment and so is important to the scalability that can be obtained with hierarchical switch matrix 160.
- each segment switch matrix 161 includes a multiplicity of strips 161-A to 161-D, i.e., the multiplicity includes one strip for each programmable logic block in the segment.
- the lines in a strip are programmably connectable and disconnectable from the input lines to each block switch matrix 266-A to 266-D.
- Each strip for example, strip 161-A, receives input signals only from the corresponding programmable logic block, e.g, programmable logic block 101-A, and programmably connects and disconnects the input signals to output lines of segment switch matrix 161.
- each strip includes programmable 1:n demultiplexers that can provide each input signal up to n paths through segment switch matrix 161, as explained more completely below.
- the strip architecture of a segment switch matrix facilitates scaling a segment for various numbers of programmable logic blocks.
- FIG. 3 is a more detailed block diagram of one embodiment of a CPLD 100A.
- CPLD 100A includes a plurality of programmable logic blocks and each programmable logic block in CPLD 100A is similar to programmable logic block 101-A.
- Programmable logic block 101-A receives input signals over thirty-two input lines 207-A from block switch matrix 266-A.
- Block switch matrix 266-A receive 128 input signals from segment switch matrix 161 over input lines 209-A and a predetermined number of local feedback lines, e.g., sixteen feedback lines 322 from logic macrocells 320 and sixteen feedback lines 321 from I/O pins 105-A.
- block switch matrix 266-A arbitrates whether programmable logic block 101-A receives first level or second level hierarchical signals.
- feedback lines 321 carry the signals on I/O pins 105-A to input cells 304.
- Input cells 304 are simply a straight pass through so that the signals on feedback lines 321 are passed directly to block switch matrix 266-A and to segment switch matrix 161.
- one I/O pin drives a cell in input cells 304-A that passes one of (i) the signal on the one I/O pin; and (ii) a registered/latched output signal that is driven by the signal on the one I/O pin to an input line of logic allocator 315 in programmable logic block 101-A.
- another I/O pin drives another cell in input cells 304 that passes one of (i) the signal on the another I/O pin; and (ii) a registered/latched output signal that is driven by the signal on the another I/O pin to another input line of logic allocator 315 in programmable logic block 101-A.
- Segment switch matrix 161 has a predetermined number of input lines, e.g., 128 input lines, from global switch matrix 465; the predetermined number of local feedback lines, e.g., sixteen feedback lines 322 from logic macrocells 320 and sixteen feedback lines 321 from I/O pins 105-A to strip 161-A; and yet another predetermined number of input lines, e.g., ninety-six input lines, from other programmable logic blocks 101-B to 101-D within segment 101 to strips 161-B to 161-D, respectively.
- the predetermined number of local feedback lines e.g., sixteen feedback lines 322 from logic macrocells 320 and sixteen feedback lines 321 from I/O pins 105-A to strip 161-A
- yet another predetermined number of input lines e.g., ninety-six input lines
- output lines 209-A from segment switch matrix 161 are bidirectional, but the input lines to block switch matrix 266-A that are driven by segment switch matrix 165 only provide signals to block switch matrix 266-A.
- Segment switch matrix 166 arbitrates between routing a signal to the second hierarchical level, i.e, through segment switch matrix 166 to block switch matrix 266-A, or to the third hierarchical level, i.e., through segment switch matrix 166 to global switch matrix 165.
- global switch matrix 165 receives 128 input signals from each segment switch matrix in CPLD 100A.
- the input signals from global switch matrix 165 to segment switch matrix 161 and the input signals from segment switch matrix 161 to global switch matrix 165 are shown as separate sets of lines.
- a single set of bi-directional signal lines interconnect global switch matrix 165 and segment switch matrix 161 as illustrated in FIGS. 4A and 4B.
- Programmable logic block 101-A includes a programmable logic array 310, a programmable optimized-distribution logic allocator 315, and a plurality of programmable logic macrocells 320 that includes macrocells BC0 to BC15, and a macrocell mode control generator circuit 325.
- I/O cells 330 include a plurality of I/O cells IOC0 to IOC15 and I/O pins 105-A include I/O pins 105-A0 to 105-A15.
- programmable logic array 310 is a programmable-AND fixed-OR logic array (AND/OR array), i.e, a PAL structure. While PAL structure 310 is described herein in terms of an AND/OR array, the AND/OR array is implemented in one embodiment as NOR/NOR logic with NAND/NAND arrays that are functionally equivalent to the AND/OR arrays described herein. Accordingly, the use of AND/OR array logic is illustrative only and is not intended to limit the scope of the invention.
- Programmable logic block input lines 207-A from block switch matrix 266-A provide the input signals to a programmable-AND array in PAL structure 310.
- each input signal and its complement are provided to the programmable-AND array so that the programmable-AND array has sixty-four input lines.
- the programmable-AND array in PAL structure 310 has a total of sixty-four logic product terms and a plurality of control product terms 311.
- the plurality of control product terms 311 includes twelve product terms. Ten of the control product terms are provided to macrocell mode control generator circuit 325 and two of the control product terms are provided to each of I/O cells 330. However, generally, the number of control product terms is dependent upon the specific configuration of logic macrocells 320, and I/O cells 330.
- Each cluster of four product terms drives one OR gate in the fixed-OR gate array of PAL structure 310.
- three of the four product terms are fixedly connected to the OR gate and one of the product terms is programmably connectable to and disconnectable from the OR gate.
- all of the four product terms are fixedly connected to the OR gate.
- the sum-of-product terms from an OR gate drives one input line in sixteen input lines 312 of programmable optimized-distribution logic allocator 315.
- Programmable optimized-distribution logic allocator 315 is programmable so that sums of product terms from PAL structure 310 are distributed to logic macrocells BC0 to BC15 as required by the user of the CPLD of this invention.
- programmable optimized-distribution logic allocator 315 includes a multiplicity of router elements, that are represented by the horizontal lines within logic allocator 315, where each router element steers a sum of a selected number of sum-of-product terms from PAL structure 310, i.e, a selected number of logic product-term clusters, to a programmably selected logic macrocell. Further, the router elements are configured to optimize the logic efficiency.
- programmable optimized-distribution logic allocator 315 provides to each logic macrocell BCi, programmable access to a minimum of twenty product terms without any additional product terms and with only a depth of four product terms per cluster.
- selected macrocells and I/O pins have programmable access to a greater logic depth so that logic functions requiring up to thirty-two product terms, i.e., one-half the total number of product terms available for logic, can be implemented in a single pass through CPLD 100A.
- Programmable optimized-distribution logic allocator 315 uses a fixed amount of resources, i.e, sixty-four logic product terms, more effectively than the logic allocator described in copending and commonly assigned U.S. patent application Ser. No. 07/924,685, entitled "Architecture Of A Multiple Array High Density Programmable Logic Device With A Plurality Of Programmable Switch Matrices", of Om P. Agrawal et al., filed on Aug. 3, 1992, and issued as U.S. Pat. No. 5,457,409 on Oct. 10, 1995, (the Agrawal patent) which is incorporated herein by reference in its entirety.
- the logic allocator in the Agrawal patent would require 95 product terms (5 PT/cluster* 16 clusters+15PTs) to achieve the same result. Further, since each I/O pin in CPLD 100A has programmable access to at least twenty product terms, the output switch matrix in the Agrawal patent is no longer required to accommodate changes in logic design and maintain a given pin-out.
- the feedback signal from each logic macrocell and each I/O pin has programmable access to the same uniform number of product terms, i.e., twenty product terms.
- the feedback signals from I/O pins could be manipulated to provide twenty product terms from a particular I/O pin, but the manipulation resulted in other I/O pins having access to less than twenty product terms.
- the product-term distribution at the I/O pins could be varied from I/O pin to I/O pin by the output switch matrix, the feedback product-term distribution from the logic macrocells was fixed.
- the output switch matrix introduced another time delay and so reduced the speed of the PLD.
- programmable optimized-distribution logic allocator 315 eliminates all of these potential problems, while providing a greater logic depth than was previously possible for a fixed number of product terms.
- Programmable optimized-distribution logic allocator 315 of this invention has less silicon associated with the logic allocator than the silicon in the prior art PLD associated with the fifteen additional product terms, the logic allocator, and the output switch matrix and so facilitates greater functionality in high-density CPLDs.
- the speed has been enhanced by elimination of the time delay associated with the output switch matrix.
- programmable optimized-distribution logic allocator 315 provides programmable access to a uniform, symmetric distribution of twenty product terms to each of the I/O pins without an output switch matrix. Further, the feedback signals from the macrocells on lines 322 are uniform and symmetric for the twenty product terms.
- the uniform and variable logic product-term cluster distribution of programmable optimized-distribution logic allocator 315 with twenty product terms provides several major benefits.
- Programmable optimized-distribution logic allocator 315 achieves the flexibility of optimal routability of logic product-term clusters to I/O pins which allows retaining a prior pin-out while changing a logic design.
- the twenty logic product terms can be routed to a particular logic macrocell without any additional speed penalty. This number of product terms is typically sufficient to allow complete shuffling of the logic mapped on to the CPLD with the ability to retain prior pin-outs and removes any dependencies of product-term clusters between adjacent macrocells.
- the number of product term clusters per router element may be selected in numerous ways.
- the selected number of product terms per cluster is preferably three or four and there is one router element in programmable optimized-distribution logic allocator 315 for each logic macrocell BC0 to BC15.
- no router element is permanently connected to a product term cluster.
- Programmable optimized-distribution logic allocator 315 programmably couples and decouples PAL structure 310 from logic macrocells BC0 to BC15.
- the maximum number of product terms available to a logic macrocell and consequently an I/O pin from the router element ranges from twenty to one-half of the total number of product terms dedicated to logic in programmable logic block 101-A for a plurality of the I/O pins and macrocells.
- the total number of product terms available to each logic macrocell in the programmable logic block and consequently, each I/O pin, is symmetric and variable.
- each logic macrocell BCi where i ranges from 0 to 15, in macrocells 320 receives a plurality of radical block clock signals from macrocell mode control generator circuit 325.
- the signals are referred to as radical block clock signals because the signals can include conventional clock signals as well as signals that configure a macrocell for a particular virtual mode of operation as a particular type of storage element.
- macrocell mode control generator circuit 325 also receives four signals from four dedicated global clock pins CLKPIN.
- the signals from the plurality of dedicated global clock pins CLKPIN are provided to the macrocell mode control generator in each programmable logic block of CPLD 100A directly, and also routed through a segment switch matrix 165 for use as logic input signals.
- each segment switch matrix may receive any signal on one of the global clock pins.
- the signals on dedicated global clock pins CLKPIN can be used either as direct input signal pins to segment switch matrices, or as global dedicated clock pins. Note that if there are more than four segments, some segment switch matrices have no clock input.
- Macrocell mode control generator circuit 325 includes a plurality of architectural cells that are used to configure macrocell mode control generator circuit 325 to provide a plurality of radical block clock signals to each programmable logic macrocell BCi in programmable logic block 101-A.
- the plurality of radical block clock signals can include synchronous clock signals, asynchronous clock signals, and asynchronous preset and reset signals.
- macrocell mode control generator circuit 325 can be programmed to provide a dual-edge-sensitive clock that clocks on both rising and falling edges. Thus, a macrocell can be clocked at twice the frequency of the external clock signal.
- the plurality of radical block clock signals also can include two clock signals that are exactly 180° out of phase with each other, and mixed clock signals, as described above.
- each programmable logic macrocell BCi includes a programmable multiplexer that receives the plurality of radical block clock signals from macrocell mode control generator circuit 325 and a configurable storage element.
- the configurable storage element can be configured to provide a combinatorial output signal.
- an input terminal of the configurable storage element is coupled to an output line from logic allocator 315 and a configuration input/clock terminal of the configurable storage element is connected to the output line from the programmable multiplexer.
- the particular radical block clock signal passed through the programmable multiplexer determines the characteristics of the configurable storage element.
- the configurable storage element can be configured at least as any one of D-type flip-flop, a T-type register, a latch, and a combinatorial output signal.
- the signals generated by programmable macrocell mode control generator circuit 325 are used to customize each logic macrocell BCi in programmable logic block 101-A.
- the registers and latches in the macrocell were thought of as storage elements with each storage element having a clock terminal, an asynchronous preset terminal, an asynchronous reset terminal, and possibly an enable terminal in addition to the input and output terminals.
- the signals used to drive the clock terminal, the asynchronous preset terminal, and the asynchronous reset terminal were either implemented using macrocell specific resources, e.g., a product-term from the cluster associated with the macrocell, or resources common to the programmable logic block containing the macrocell.
- the preset, reset, and clock signals for a register or a latch are not independent from the partitioning process for a programmable logic block.
- the preset, reset and clock signals are combined into a radical block clock expression that is implemented by programming macrocell mode control generator circuit 325.
- This radical block clock synthesis is a dynamic part of the partitioning process and includes feasibility of implementation of each logical radical block clock and the simultaneous logical-to-physical mapping of all radical block clock signals for a programmable logic block so as to support all registers and latches in the programmable logic block that receive a radical block clock signal as determined by partitioning or pre-assignment.
- the preset and reset signals also influence the synthesis process for the primary equation.
- the complement of the reset signal is logically ANDed with primary equation elements, and the true state of the reset signal is logically ORed with the clock signal. Also, the true state of the preset signal is logically ORed with the primary equation elements and the clock signal. In effect, the implementation of the preset and reset signals modify the product-term considerations of the synthesis objective for the primary equation.
- an output line Ai from logic macrocell BCi drives a feedback line to hierarchical switch matrix 160, and an input line to an I/O cell.
- the programmable logic macrocells are divided into output logic macrocells and buried logic macrocells. The output logic macrocells function as just described. The buried logic macrocells only provide feedback signals to hierarchical switch matrix 160.
- some programmable logic blocks in the CPLD contain all buried logic macrocells, e.g., these programmable logic blocks are not tied to any I/O pins and others have all output logic macrocells.
- Each I/O cell IOCi selectively connects and disconnects logic macrocell BCi output signal to I/O pin 105-Ai.
- each I/O cell IOCi can be configured to connect logic macrocell BCi output signal to I/O pin 105-Ai, to tri-state I/O pin 105-Ai or to control the signal supplied to I/O pin 105-Ai with one of the two product terms that are common to all the I/O cells in programmable logic block 101-A.
- segment switch matrix 161 is programmably configured to select 128 signals to drive the 128 input lines to each block switch matrix from a total of the 256 signals on the input lines to segment switch matrix 161.
- segment switch matrix 161 receives a maximum of 128 intra-segment signals plus another 128 signals from the global switch matrix 165, and provides 128 input signals to each block switch matrix in a segment.
- the particular number of signals and lines in a switch matrix are illustrative only and are not intended to limit the invention to the particular numbers given.
- Segment switch matrix 161 could be implemented using programmable multiplexers.
- each segment switch matrix output line could be connected to one of a 4:1 or 6:1 or 8:1 programmable multiplexer to provide 2 ways, 3 ways or 4 ways of signal routability, respectively.
- segment switch matrix 161 is preferably implemented using a plurality of programmable demultiplexers.
- each strip 161-A to 161-D of segment switch matrix 161 has a total of thirty-two input lines that carry feedback signals from the associated local block for a total of 128 lines.
- each strip has one input line for each macrocell feedback line and each I/O pin feedback line of the programmable logic block associated with the strip, i.e, one line for each local feedback signal.
- Each strip is designed to be completely independent of the other strips in a segment switch matrix.
- Each feedback line to the strip is connected to the input terminal of a programmable demultiplexer.
- Each output terminal of the programmable demultiplexer is connected to a different line in a segment switch matrix bus.
- the number of demultiplexer output terminals connected to lines in the segment switch matrix bus determines the number of paths through the segment switch matrix for each input signal.
- each strip needs to accommodate the situation in which a local feedback signal is not connected to the segment switch matrix bus and the signal from the global switch matrix is passed through the segment switch matrix to a programmable logic block.
- local is used to distinguish feedback signal generated within the segment from signals provided to the segment through global switch matrix 165. Consequently, two signal paths through segment switch matrix 161 for each local feedback signal plus the option of no connection requires a 1:3 programmable demultiplexer.
- the programmable demultiplexer has two states. In the first state, the programmable demultiplexer programmably connects the input terminal to one output terminal and disconnects the input terminal from all other output terminals.
- segment switch matrix 161 utilizes 1:4 programmable demultiplexers, one for each input line from a macrocell or an I/O pin.
- demultiplexers makes the independent strip architecture of segment switch matrix 161 possible.
- This strip architecture is significant because, as explained above, the various strips are independent.
- the strip architecture is easily scalable and can easily accommodate changes in the number of feedback lines as well as changes in the number of programmable logic blocks per segment.
- segment switch matrix 161 drives 128 input lines to each block switch matrix, which in FIG. 3 are lines 209-A to block switch matrix 266-A.
- Block switch matrix 266-A also has 2*p local feedback input lines that include sixteen feedback lines 322 from the macrocells in programmable logic block 101-A, and sixteen feedback lines 321 that carry signals on I/O pins 105-A.
- the number of I/O pin feedback lines can be different from the number of macrocell feedback lines.
- the output signals from block switch matrix 266-A can be programmably selected from: (i) direct feedback signals from programmable logic block 101-A; (ii) direct feedback signals from I/O pins 10S-A; and (iii) signals from segment switch matrix 161.
- Block switch matrix 266-A drives the selected output signals on the thirty-two input lines 207-A to programmable logic block 101-A.
- the particular number of input lines to a programmable logic block is a function of the number of macrocells in the block. For example, preferably there are at least two input lines for each logic macrocell.
- block switch matrix 266-A is a multiplexer based structure.
- the multiplexer size is appropriately selected for a given number of programmable logic block input lines 207-A to provide a predetermined routability.
- the appropriate multiplexer size for block switch matrix 266-A is given by:
- Integer takes the integer value of the expression.
- One multiplexer is used for each output line of block switch matrix 266-A.
- the total number of input signal lines to block switch matrix 266-A is 160 lines (128 lines 207-A from segment switch matrix 161 and thirty-two local block feedback lines 322 and 321). If a minimum of two ways of routability, i.e., two signal paths through block switch matrix 266-A is desired for each input signal, and block switch matrix has thirty-two output lines 207-A, the block switch matrix multiplexer size is:
- multiplexer sizes can easily be accommodated for a particular routability.
- a larger programmable multiplexer size results in increased routability, and a smaller programmable multiplexer size results in decreased routability.
- each of the signals from segment switch matrix 161 and each of the direct local feedback signals on lines 321 and 322 has two signal paths through block switch matrix 266-A.
- each input signal to block switch matrix 266-A does not have the same number of paths through block switch matrix 266-A. The use of a smaller multiplexer and a different number of signal paths for different signals provides a means to optimize the die area used by block switch matrix 266-A.
- a plurality of 8:1 programmable multiplexers are used with the thirty-two output lines so that there are a total of 256 signal paths.
- Each of the block feedback signals on lines 322 and 321 are provided to an input terminal of a different programmable multiplexer so that each of these signals has a single path through the block switch matrix. Since thirty-two of a possible 256 paths through the block switch matrix are for local feedback signals, 224 paths are available for the 128 input signals from segment switch matrix 161 on lines 209-A. Thus, these signals can have one, two or more paths through block switch matrix 266-A.
- the use of programmable 8:1 multiplexers requires less silicon than the 10:1 multiplexers in the previous embodiment.
- the output signals from block switch matrix 266-A can be programmably selected from: (i) direct feedback signals from programmable logic block 101-A; (ii) direct feedback signals from I/O pins 10S-A; and (iii) signals from segment switch matrix 161.
- Global switch matrix 165 receives a plurality of signals from each segment switch matrix in the CPLD.
- Global switch matrix 165 is implemented as a bus that is programmably connected to and disconnected from each of the Segment switch matrices through a programmable demultiplexer.
- global switch matrix 165 is a 128-line bus and a plurality of programmable demultiplexers.
- the 128-line bus is connected to segment switch matrix 161 by a first programmable demultiplexer; to segment switch matrix 162 by a second programmable demultiplexer; to segment switch matrix 163 by a third programmable demultiplexer; and to segment switch matrix 164 by a fourth programmable demultiplexer.
- each line in the 128-line bus is an input line to a 1:3 programmable demultiplexer where two output terminals of the programmable demultiplexer are connected to two lines in the 128-line bus of the segment switch matrix and the third output terminal has no connection.
- the 128-lines in the global switch matrix 165 matrix are connected via 1:4 demultiplexers to the 128 line bus in the segment switch matrix.
- a line in the segment switch matrix bus drives the input terminal of a demultiplexer in global switch matrix 165 and the output terminals are each connected to one line in the bus of global switch matrix 165.
- FIG. 4A is another representation of hierarchical switch matrix 160, as presented in FIGS. 1 to 3.
- the input cells are taken as a straight pass through and so are not shown.
- the programmable connections in the various demultiplexers and multiplexers of hierarchical switch matrix 160 are implemented using pass transistors.
- the 128 input lines to each block switch matrix are driven by segment switch matrix bus 401 in segment switch matrix 161.
- the 128-lines in segment switch matrix bus 401 are connected and disconnected through demultiplexers 402 to the 128-line global switch matrix bus 405.
- local feedback lines from I/O pins and macrocells drive input lines of multiplexers in the block switch matrix and input lines of demultiplexers in the segment switch matrix strip.
- the output lines of the demultiplexers in the segment switch matrix strip are connected to selected lines in segment switch matrix bus 401.
- the lines of segment switch matrix bus 401 for each strip are selected so as to optimize signal routability. However, the particular selection for a given strip is not an important aspect of this invention.
- FIG. 4A illustrates the various hierarchical levels in CPLD 100A.
- Signal paths 420-A and 420-B through a block switch matrix and a programmable logic block define a first hierarchical level.
- Signal path 430 through segment switch matrix 161, block switch matrix 266-B and programmable logic block 101-B defines a second hierarchical level.
- Signal path 440 from a segment switch matrix to global switch matrix 165 through segment switch matrix 161 to block switch matrix 266-A and in turn to programmable logic block 101-A defines a third hierarchical level.
- FIG. 4B is the same as FIG. 4A, except FIG. 4B illustrates the layout of the various parts in a more compact representation.
- the CPLDs of this invention are implemented using a 0.5 micron, three-metal layer electrically erasable CMOS technology.
- the CPLDs of this invention are implemented using a 0.65 micron, two-metal layer electrically erasable CMOS technology.
- Global switch matrix 165 can be easily extended to support a number of segments with no change to the basic architecture of a bus and programmable demultiplexers for each segment switch matrix. Each new segment is treated as completely independent and has its own interconnection pattern, i.e., programmable demultiplexer, with the global switch matrix 165.
- a local feedback signal to a programmable logic block through the programmable block switch matrix i.e., a first level hierarchical signal
- has a very fast signal propagation delay Specifically, there is a one pass transistor delay for all intra-block signals.
- a second level hierarchical signal i.e., intra-segment signals, experience two pass transistor delays.
- all programmable logic blocks within a segment can communicate with each other and the signals experience a maximum of two pass transistor delays.
- inter-segment signals For a CPLD with only two segments, inter-segment signals, i.e., third level hierarchical signals, experience three-pass transistor delays and for CPLDs with more than two segments, inter-segment signals experience at least four-pass transistor delays.
- signals within one segment can communicate with any other segment with a worst case delay of four pass transistor delays.
- the time delays are characterized by the number of pass transistor delays.
- the actual delay includes a component associated with the bus in the switch matrix.
- the time delays through each level of hierarchical switch matrix 160 are fixed, predictable, and deterministic.
- all segments are symmetric and exhibit similar timing characteristics, independent of the CPLD density.
- the time delay through a programmable logic block and a programmable block switch matrix is the same for all segments.
- the time delay through a programmable logic block, a programmable block switch matrix, and a segment switch matrix is the same for all segments.
- the only timing characteristic that changes based on the density of the CPLD is the inter-segment communication speed.
- a CPLD could be built using the hierarchical structure of this invention with differing size segments as well as with different programmable logic blocks within a segment.
- a programmable logic block in a segment could have all of the output lines tied to I/O pins of the CPLD, and another programmable logic block in the segment could only drive feedback lines.
- the symmetric segments and the independence of the segments with respect to the global switch matrix significantly enhance the ability to implement a CPLD of this invention in silicon via a step-and-repeat methodology.
- the independence of the global switch matrix size from the segment switch matrices allows the size of the global switch matrix to be changed without affecting the segment switch matrices.
- the global switch matrix has 128 lines.
- the global switch matrix could also be implemented with 160, 192, or 256 lines, for example.
- each programmable logic block and each plurality of I/O pins for that programmable logic block provide feedback signals not only to the programmable logic block switch matrix, but also to an input switch matrix bank of an input switch matrix that in turn programmably connects and disconnects the feedback signals to a segment switch matrix.
- FIG. 5 One embodiment of programmable optimized-distribution logic allocator 315 is illustrated in FIG. 5. Other embodiments of the programmable optimized logic allocator 315 of this invention are described in copending, commonly filed, and commonly assigned U.S. patent application Ser. No. 08/459,570, entitled “A PROGRAMMABLE OPTIMIZED-DISTRIBUTION LOGIC ALLOCATOR FOR A HIGH-DENSITY COMPLEX PLD" of Om P. Agrawal et al. filed on Jun. 2, 1995, which is incorporated herein by reference in its entirety.
- boxes C0 through C15 on the left-hand side of the figure, each of which contains the numeral "4", represent the product-term clusters in product-term array 310.
- boxes BC0 through BC15 which represent logic, e.g., logic macrocells, that couples the output signals of logic allocator 315 to the I/O pins.
- the number within boxes BC0 to BC15 is the maximum number of product terms that logic allocator 315 can route to a particular macrocell and consequently to a particular I/O pin.
- Each horizontal line 5500 to 5515 within logic allocator 315 represents a programmable router element, sometimes called a router element.
- each router element has an output line connected to a logic macrocell and the associated I/O pin.
- the numbers on a horizontal line within logic allocator 315 represent the product-term clusters, as numbered on the left-hand side of the figure, that can be connected to the output line of the programmable router element. Anywhere from none to all of the product-term clusters shown on a line can be connected to the output line of the programmable router element.
- the logic allocator of this invention provides the capability to vary the number of product terms steered to an output line of the logic allocator over a wider range than prior art logic allocators.
- a programmable router element within logic allocator 315 is programmably coupled and decoupled to a maximum of eight logic allocator input lines.
- each output line of router elements 5503 to 5512 is programmably couplable to eight logic allocator input lines.
- a logic allocator input line is coupled to a particular router element output terminal, that input line is not available to any other router element.
- ten router elements can programmably steer any combination of up to eight logic allocator input signals to an I/O pin or other logic in the CPLD.
- ten of the I/O pins can programmably receive up to thirty-two product terms.
- Each output line of router elements 5502 and 5513 is programmably couplable to seven logic allocator input lines. Again, when a logic allocator input line is coupled to one of these router elements, that input line is not available to any other router element. Thus, two router elements can programmably steer any combination of up to seven logic allocator input signals to an I/O pin or other logic in the CPLD. Thus, when a product-term cluster has a maximum of four product terms, two of the I/O pins can programmably receive up to twenty-eight product terms.
- Each output line of router elements 5501 and 5514 is programmably couplable to six logic allocator input lines. Again, when a logic allocator input line is coupled to one of these router elements, that input line is not available to any other router element. Thus, two router elements can programmably steer any combination of up to six logic allocator input signals to an I/O pin or other logic in the CPLD. Thus, when a product-term cluster has a maximum of four product terms, two of the I/O pins can programmably receive up to twenty-four product terms.
- Each output line of router elements 5500 and 5515 is programmably couplable to five logic allocator input lines. Again, when a logic allocator input line is coupled to one of these router elements, that input line is not available to any other router element. Thus, two router elements can programmably steer any combination of up to five logic allocator input signals to an I/O pin or other logic in the CPLD. Thus, when a product-term cluster has a maximum of four product terms, two of the I/O pins can programmably receive up to twenty product terms.
- router elements 5500 and 5515 are coupled to input cells 304. Specifically, router element 5500 receives output signal IR1 from the first input cell that in turn is driven by the signal on the I/O pin associated with macrocell BC2. Router element 5515 receives output signal IR2 from the other input cell that in turn is driven by the signal on the I/O pin associated with macrocell BC13.
- the routing of two I/O pin signals through logic allocator 315 permits direct routing of the two I/O pin signals to two logic macrocells.
- the two I/O pin signals can function as registered input signals for the purpose of synchronizing asynchronous signals and providing fast set up times.
- setup and hold times are not critical, because by definition, the arrival of the signals can not be predicted. Nevertheless, the sum of the setup and hold times is preferably as small as possible.
- Programmable optimized-distribution logic allocator 315 utilizes the fixed product-term resources more efficiently than the prior art logic allocators, and supports logic design changes while maintaining a given pin-out without requiring an output switch matrix.
- FIG. 6A is a schematic of a typical router element 650 in a first embodiment of programmable optimized-distribution logic allocator 315 for router elements 5503 to 5512.
- programmable logic macrocell BCi is only representative of the functionality of the macrocell of this invention and is not intended to necessarily illustrate a specific implementation of the macrocell.
- a product-term cluster 605A includes four product terms 601 to 604A. Three product terms 601 to 603 are each fixedly connected to a different input terminal of OR gate 610 and a fourth product-term 604A is programmably connectable to and disconnectable from OR gate 610 by a programmable connecter 611. Product-term cluster 605A and OR gate 610 are included in programmable logic array 310.
- Logic allocator input line 312-i represents one input line in the plurality of input lines 312 of programmable optimized-distribution logic allocator 315.
- Logic allocator input line 312-i connects an output terminal of OR gate 610, e.g., an output terminal of a logic gate, to an input terminal of a programmable demultiplexer 621, that, in this embodiment, is a 1-to-8 programmable demultiplexer.
- product-term cluster 605A is connected to the input terminal of programmable demultiplexer 621.
- Each output terminal of programmable demultiplexer 621 is connected to an input terminal of a different OR gate within logic allocator 315 so that programmable demultiplexer 621 has one output terminal connected to one input terminal of eight different OR gates in eight different router elements.
- router element 650 is interconnected to seven other router elements by lines m0 to m2 and m4 to m7.
- the fourth output terminal of programmable demultiplexer 621 is connected to an input terminal of OR gate 630.
- the other seven output terminals are connected to input terminals of OR gates in the seven other router elements by lines m0 to m2, and m4 to m7 respectively.
- a signal on input line 312-i is programmably connected to one of the output terminals of programmable demultiplexer 621 and programmably disconnected from the remainder of the output terminals by the configuration of architectural cells 622 to 624 respectively.
- Architectural cells 622 to 624 may be fuses, EPROM cells, EEPROM cells, RAM cells, or CMOS antifuse technology.
- the architectural cells are a means for providing an output terminal select signal to a programmable demultiplexer so that the programmable demultiplexer passes the selected input signal therethrough to a specified output terminal.
- OR gate 630 in router element 650 has one input terminal connected to the fourth output terminal of programmable demultiplexer 621.
- the other seven input lines to OR gate 630 are connected to output terminals of seven programmable demultiplexers by lines n0 to n2 and n4 to n7.
- the output terminal of OR gate 630 is connected to a first input terminal of an exclusive-OR gate 640.
- a second input terminal of exclusive-OR gate 640 is connected to programmable connector 611.
- An output terminal of exclusive-OR gate drives an input line of a logic macrocell BCi that drives a first feedback line 322-i and is coupled to an I/O pin that drives a second feedback line 321-i.
- a first state programmable connector 611 routes product-term 604A to OR gate 610 and in a second state to exclusive-OR gate 640.
- Router elements 5500 to 5502 and 5513 to 5515 are similar to those in FIG. 6A, except not all of the output terminals of demultiplexer 621 and not all of the input terminals of OR gate 630 are utilized.
- the number of horizontal lines on which a particular product-term cluster appears defines the number of output terminals of demultiplexer 621 that are utilized.
- product-term cluster C0 appears on five horizontal lines in FIG. 5, and so in router element 5500 only five of the eight output terminals of the programmable demultiplexer are utilized.
- the number of product terms on a horizontal line within logic allocator 315 in FIG. 5 defines the number of input terminals of OR gate 630 in the router element that are used.
- each programmable router element 650 in programmable optimized-distribution logic allocator 315 is programmable so that product terms clusters are distributed to any one of from five to eight logic macrocells as required by the user of the CPLD of this invention, e.g., to OR gate 630 and consequently to logic macrocell BCi.
- the total number of product terms programmably available to each logic macrocell in the programmable logic block is the same, i.e., the product-term allocation is symmetric, uniform and variable for twenty product terms and symmetric and variable for twenty to thirty-two product terms.
- no product-term clusters are permanently connected to an output line of programmable optimized-distribution logic allocator 315.
- the need for wrap-around has been eliminated as has the need for an output switch matrix.
- router element 650 provides greater flexibility than the prior art logic allocator and output switch matrix combination as described above while eliminating the time delay associated with the output switch matrix.
- programmable optimized-distribution logic allocator 315 made up of router elements 650 include: full product-term distribution symmetry for twenty product terms; up to thirty-two logic product terms for selected macrocells BCi; complete shuffling of logic is possible with the ability to retain prior pin-outs; obviation of the need for an output switch matrix; obviation of the need for any product-term wrap-around for up to twenty product terms; and faster speed relative to the combination of the prior art logic allocator and an output switch matrix combination.
- logic allocator 315 increases the macrocell feedback to thirty-two product terms. This allows a designer to implement up to thirty-two product terms of logic with a single pass of delay.
- product-term cluster 605A which is split into a three product-term cluster and a one product-term cluster
- product-term cluster 605A is a superset of a product-term cluster where all of the product terms are fixedly attached to the OR gate. Since each product-term cluster 605A includes two separate product-term clusters, logic allocator 315 is not forced to steer the whole four product-term cluster to another macrocell. If a macrocell needs a single product-term, the macrocell can use its single product-term and the other three unused product terms can be steered to adjacent macrocells by logic allocator 315 for better logic utilization.
- XOR gate 640 allows macrocell BCi to emulate T or J-K type flip-flops. Also, XOR gate 640 in logic allocator 315 gives built-in polarity control and allows simpler logic macrocells BCi. In another embodiment, the output terminal of OR gate 630 is connected directly to the logic allocator output line.
- FIG. 6B is a more detailed diagram of one embodiment of programmable connecter 611 that includes a programmable two-to-one multiplexer 661, a programmable signal router 662, and an exclusive-OR gate 663.
- router element 650 (FIG. 6C) is utilized in programmable optimized-distribution logic allocator 315, but product-term cluster 605C has three AND product terms fixedly connected to OR gate 610 and a NAND product-term programmably connectable to and disconnectable from OR gate 610 and exclusive-OR gate 640.
- the programmable optimized-distribution logic allocator could be replaced by a programmable uniform distribution logic allocator that is described in copending, commonly filed, and commonly assigned U.S. patent application Ser. No. 08/459,234, entitled “A PROGRAMMABLE UNIFORM SYMMETRICAL DISTRIBUTION LOGIC ALLOCATOR FOR A HIGH-DENSITY COMPLEX PLD" of Om P. Agrawal et al., filed on Jun. 2, 1995, which is incorporated herein by reference in its entirety.
- FIGS. 7A and 7B of that application can be used directly in place of logic allocator 315.
- FIG. 7 is a more detailed diagram of one embodiment of macrocell mode control generator circuit 325.
- the four global clock signals from dedicated clock pins PINCLK are input signals to programmable multiplexers 701 to 703.
- Each of programmable multiplexers has two architectural cells, i.e, cells B2 and B3 for multiplexer 701, cells B4 and B5 for multiplexer 702, and cells B6 and B7 for multiplexer 703, that are programmed to pass one of the four global clock signals therethrough to the output line of the programmable multiplexer.
- the connection of the programmable multiplexer output lines with circuit 325 is described more completely below.
- the numbers within a programmable multiplexer adjacent to a particular input line represent the state of the architectural cell or cells for which the signal on the particular multiplexer input line is passed through the multiplexer to the output line.
- Macrocell mode control generator circuit 325 also includes a plurality of pulse generators PG0 to PG10.
- Each pulse generator PGi has an enable terminal, a clock terminal, and a pulse output terminal.
- pulse generator PGi When the signal on the enable terminal is active and a signal on the clock terminal goes active, pulse generator PGi generates a pulse having a predetermined width on the pulse output terminal.
- the pulse generator provides a narrow pulse that occurs at the leading edge of the pulse on the clock terminal. While in this embodiment pulse generators are utilized, those other techniques used to generate a pulse are described in copending, commonly filed, and commonly assigned U.S. patent application Ser. No.
- Control product terminal PT0 drives an inverter 706 which in turn drives a clock terminal of pulse generator PG0.
- the enable terminal of pulse generator PG0, as well as the enable terminal of each of pulse generators PG1, PG3, PG4, PG6, PG7 and PG10, is tied to the power supply voltage, i.e., a first reference voltage.
- the signal on the output terminal of pulse generator PG0 drives radical block clock line RADCLK0 and a first input terminal of a dual programmable two-to-one multiplexer 707.
- a dual programmable two-to one multiplexer is effectively two programmable two-to-one multiplexers with a common architectural configuration cell.
- a second input terminal of a dual programmable two-to-one multiplexer 707 is tied to ground, i.e., to a second reference voltage.
- the signal passed from one of the first and second input terminals to a first output line of multiplexer 707 is determined by the state of architectural cell B8.
- the signal on the first output line of multiplexer 707 drives a first input terminal of OR gate 708.
- Control product-term PT1 drives a clock terminal of pulse generator PG1 and a third input terminal of dual two-to-one multiplexer 707.
- the fourth input terminal of multiplexer 707 is driven by the signal from the output terminal of pulse generator PG1.
- the signal passed from one of the third and fourth input terminals to a second output line of multiplexer 707 also is determined by the state of architectural cell B8.
- the signal on the second output line of multiplexer 707 drives a second input terminal of OR gate 708.
- the output signal of OR gate 708 drives radical block clock line RADCLK1.
- Control product-term PT2 drives the enable terminal of pulse generator PG2.
- the signal on the output line of multiplexer 701 drives an inverter 711 and a first input terminal of a programmable two-to-one multiplexer 709.
- the second input terminal of multiplexer 709 is driven by the output signal of inverter 711.
- the signal passed through multiplexer 709 to the clock terminal of pulse generator PG2 is determined by the state of architectural cell B9.
- the signal on the output terminal of pulse generator PG2 drives a first input terminal of OR gate 710.
- Control product-term PT3 drives an inverter 712 and a first input terminal of a programmable two-to-one multiplexer 713.
- the second input terminal of multiplexer 713 is driven by the output signal of inverter 712.
- the signal passed through multiplexer 713 to the clock terminal of pulse generator PG3 is determined by the state of architectural cell B10.
- the signal on the output terminal of pulse generator PG3 drives a second input terminal of OR gate 710.
- the output signal of OR gate 710 drives radical block clock line RADCLK2.
- Control product-term PT4 drives an inverter 714 and a first input terminal of a programmable two-to-one multiplexer 715.
- the second input terminal of multiplexer 715 is driven by the output signal of inverter 714.
- the signal passed through multiplexer 715 to the clock terminal of pulse generator PG4 is determined by the a signal on the output line of programmable two-to-one multiplexer 734.
- a first input terminal of multiplexer 734 is connected to the power supply voltage and a second input terminal is connected to ground.
- the signal passed through multiplexer 734 is determined by the state of architectural cell B12.
- the signal on the output terminal of pulse generator PG4 drives a first input terminal of OR gate 718.
- the output signal of OR gate 718 drives radical block clock line RADCLK3.
- a signal on the output line of programmable two-to-one multiplexer 717 drives a second input terminal of OR gate 718.
- a first input terminal of multiplexer 717 is connected to ground, and a second input terminal is driven by the output signal from pulse generator PG6.
- the signal passed through multiplexer 717 is determined by the state of the signal on the output line of programmable two-to-one multiplexer 716.
- a first input terminal of multiplexer 716 is connected to the power supply voltage and a second input terminal is connected to ground.
- the signal passed through multiplexer 716 is determined by the state of architectural cell B15.
- Control product-term PT5 drives the enable terminal of pulse generator PG5.
- the signal on the output line of multiplexer 702 drives an inverter 720 and a first input terminal of a programmable two-to-one multiplexer 719.
- the second input terminal of multiplexer 719 is driven by the output signal of inverter 720.
- the signal passed through multiplexer 719 to the clock terminal of pulse generator PG5 is determined by the state of architectural cell B11.
- the signal on the output terminal of pulse generator PG5 drives a third input terminal of OR gate 718, and a first input terminal of OR gate 724.
- Control product-term PT6 drives an inverter 721 and a first input terminal of a programmable two-to-one multiplexer 722.
- the second input terminal of multiplexer 722 is driven by the output signal of inverter 721.
- the signal passed through multiplexer 722 to the clock terminal of pulse generator PG6 is determined by the a signal on the output line of two-to-one multiplexer 734.
- the signal on the output terminal of pulse generator PG6 drives the input terminal of multiplexer 717 as described above, and a first input terminal of a programmable two-to-one multiplexer 723.
- a second input terminal of multiplexer 723 is connected to ground.
- the signal passed through multiplexer 723 to a second input terminal of OR gate 724 is determined by the output signal from multiplexer 716, that was described above.
- the output signal from OR gate 724 drives radical block clock line RADCLK4.
- Control product-term PT7 drives invertor 725 which in turn drives a clock terminal of pulse generator circuit PG7.
- the output signal from pulse generator PG7 drives a first input terminal of OR gate 729.
- Control product-term PT8 drives an enable terminal of pulse generator PG8 and a first input terminal of programmable two-to-one multiplexer 726.
- the output line of multiplexer 703 drives a clock terminal of pulse generator PG9, and an invertor 727, which in turn drives a clock terminal of pulse generator PG8.
- the output signal from pulse generator PG8 drives a second input terminal of a dual programmable two-to-one multiplexer 728, and a second input terminal of OR gate 729.
- First and third input terminals of multiplexer 728 are grounded.
- the signal passed through multiplexer 728 from one of the first and second input terminals to a first output line, that is connected to a first input terminal of OR gate 730, is determined by the state of the signal from invertor 732.
- a first input terminal of a programmable two-to one multiplexer 705 is connected to the power supply voltage and a second input terminal is connected to ground.
- the signal passed through multiplexer 705 to an output line, that is connected a second input terminal of multiplexer 726 and to a first input terminal of AND gate 731, is determined by the state of architectural cell B14.
- the signal passed through multiplexer 726 to an enable terminal of pulse generator PG9 is determined by the output signal from programmable two-to-one multiplexer 704.
- a first input terminal of multiplexer 704 is connected to the power supply voltage and a second input terminal is connected to ground.
- the signal passed through multiplexer 704 to an output line, that is also connected a second input terminal of AND gate 731, is determined by the state of architectural cell B13.
- the output signal from AND gate 731 drives invertor 732, which in turn provides a signal select signal to multiplexer 728, as described above.
- the output signal from pulse generator PG9 drives a fourth input terminal of multiplexer 728 and a second input terminal of OR gate 730.
- the signal passed through multiplexer 728 from the third and fourth input terminals to a second output line, that is connected to a third input terminal of OR gate 729, is determined by the state of the signal from invertor 732.
- the output signal of OR gate 729 drives radical block clock line RADCLK5.
- Control product-terminal PT9 drives an inverter 733 which in turn drives the clock terminal of pulse generate PG10.
- the signal on the output terminal of pulse generator PG10 drives a third input terminal of OR gate 730.
- the output signal of OR gate 730 drives radical block clock line RADCLK6.
- the various radical block clock signals RADCLKi, where i varies from zero to six, generated by this embodiment of macrocell mode control generator circuit 325 can be summarized as follows. Define:
- RAD -- CLKj jth radical block clock signal.
- PICKn[a, . . . , b] a fuse selected component of vector [a, . . . , b] where index n in PICKn is a unique identifier that corresponds directly to the architectural cell number in FIG. 7 where n ranges from 8 to 14.
- PLG( ⁇ enable>, ⁇ primary -- sig>) a pulse generator output signals where ⁇ enable> is the signal connected to the enable terminal of the pulse generator and ⁇ primary -- sig> is the signal connected to the clock terminal of the pulse generator.
- PTj the jth control product-term within macrocell mode control generator circuit 325.
- PT -- PLj PLG(VCC, PTj) which is the output signal generated by a pulse generator that has the power supply voltage connected to the enable terminal and the jth product-term connected to the clock terminal.
- PT -- PLj PLG(VCC, PTj)
- TMP1 PLG(PT5, PlCK11[PIN -- CLK[1], /PIN -- CLK[1]).
- TMP2 TMP3*TMP4
- TMP3 PSG(PT8, /PIN -- CLK[2])
- TMP4 PEG(PT8, PIN -- CLK[2])
- TMP5 PICKY[GNC, VCC, PT8], PIN -- CLK[2]
- PICKX AND PICKY are controlled by a combination of architectural cells B13 and B14.
- PICKX[e,f] the selection of the first component e corresponds to when architectural cells B13 and B14 are both a logical one.
- the second component f must be selected for each of the other three configurations of architectural cells B13 and B14, i.e, in each of the other three modes of radical block clocks RADCLK5 and RADCLK6.
- PICKY[GNC, VCC, PT8] is the mechanism for selecting one of the other three modes. These modes correspond component wise within PICKY to setting (0,0), (0,1), and (1,0) respectively of architectural cells B13, and B14.
- FIG. 8A is a block diagram of one embodiment of a programmable logic macrocell BCi of this invention.
- the plurality of radical block clock lines are input lines to a programmable multiplexer 801.
- the power supply voltage is supplied to one input terminal of programmable multiplexer 801.
- Programmable multiplexer 801 has three architectural cells 810 to 812 that are configured to select one of the input signals for passing through multiplexer 801 to a configuration input/clock terminal of configurable storage element 802.
- An input terminal of configurable storage element 802 is connected to an output line of logic allocator 315.
- An output terminal of configurable storage element 802 drives a macrocell output line and a feedback line to hierarchical switch matrix 160.
- One embodiment of programmable macrocell is described in copending, commonly filed and commonly assigned U.S. patent application Ser. No. 08/458,865, entitled “MACROCELL AND CLOCK SIGNAL ALLOCATION CIRCUIT FOR A PROGRAMMABLE LOGIC DEVICE (PLD) ENABLING PLD RESOURCES TO PROVIDE MULTIPLE FUNCTIONS," of Bradley A. Sharpe-Geisler, filed on Jun. 2, 1995, which is incorporated herein by reference in its entirety.
- the signals on radical block clock lines RADCLK0 to RADCLK6 are used to configure the mode of operation of configurable storage element 802 and to provide clocking signals to configurable storage element 802. For instance, by applying an appropriate clock and mode select signals to multiplexer 801, configurable storage element can be configured in a latch mode, a edge triggered flip-flop mode, or a combinatorial mode. By applying appropriate clock and data signals, configurable storage element 802 can also provide asynchronous reset and preset capability provided in a conventional macrocell without requiring additional circuitry for preset and reset terminals. Unlike conventional macrocells, appropriate signals can be generated on the radical block clock lines to provide dual-edge clocking, clock edge selection, asynchronous clocking, clock enabling, or a mixture of different type clock signals.
- the combinatorial mode is selected by passing the power supply voltage through multiplexer 801 to the configuration input/clock terminal of configurable storage element 802.
- configurable storage element 802 appears transparent to the signal received on the input terminal and so macrocell BCi is configured for combinatorial operation.
- the combinatorial mode of operations is independent from the radical block clock signals and is configured locally within each macrocell.
- macrocell mode control generator circuit 325 is configured to generate a radical block clock signal 860 (FIG. 8B) on one of the radical block lines RADCLK0 to RADCLK6.
- Latch mode clock signal 860 may be allocated to one of the dedicated clock input pins or to an appropriately configured control product-term.
- macrocell mode control generator circuit 325 is configured to generate a radical block clock signal 864 (FIG. 8C) on one of the radical block lines RADCLK0 to RADCLK6 using one of the pulse generators in circuit 325 in response to a clock signal such as that in FIG. 8B.
- the narrow pulses in signal 864 are generated by the pulse generator at the leading edge of pulses of clock signal 860 (FIG. 8B).
- the narrow pulses in signal 864 cause configurable storage element 802 to function in a manner similar to the function of a conventional D-type flip-flop. Specifically, the output signal on output terminal Q of configurable storage element 802 changes states to conform to an input data signal on terminal D only at each positive going edge of the clock signal 860.
- Metastability defines a state for a D-type flip-flop where the flip-flop does not accurately generate the appropriate output signal in response to an edge of a clock pulse. For example, for configurable storage element 802, if initially the signal on input terminal is a first level and a clock edge is applied to the configuration input/clock terminal, the output signal should also go to the first level to properly emulate a D-type flip-flop. However, if the clock signal is too broad and the input signal changes state while the clock signal is active, the output signal of element 508 changes state and so element 508 functions as a D-type flip-flop with metastability.
- configurable storage element 802 is configured to operate as a P-type flip-flop.
- a P-type flip-flop is defined where the P-type flip-flop functions as a D-type flip-flop in response to a clock pulse with an active pulse width less than or equal to a time period ⁇ , and as a latch in response to a clock pulse with an active pulse width greater than time period ⁇ .
- the output signal on terminal Q of configurable storage element 802 goes to the signal on data input terminal D in response to a leading edge of a radical block clock signal on the configuration input/clock terminal.
- Configurable storage element 802 holds the output signal for a period of time ⁇ independent of any changes in the signal state on data input terminal D that occur after the leading clock edge.
- time period ⁇ is set to be slightly greater than the active pulse width ⁇ of a clock pulse generated by a pulse generator to provide a D flip-flop mode signal.
- Table 1 is a summary of the capabilities provided by the radical block clocks to configurable storage element 802.
- macrocell mode control generator circuit 325 In fitting various user logic to macrocell mode control generator circuit 325, various restrictions can be placed on the fitting process to facilitate development of particular application software in a desired time frame. The particular limitations placed on the fitter for macrocell mode control generator circuit 325 are not an important aspect of this invention.
- One important aspect of this invention is the use of macrocell mode control generator circuit 325 to both select a mode of operation of the programmable logic macrocell of this invention and provide a wide variety of clock/control combinations including various mixed clocks and the other types of clock/control signals described above.
- the radical block clocks in combination with configurable storage element 802 eliminate the need for separate reset and preset input terminals for the storage element in the macrocell as well as the associated logic and architecture bits. According to the principles of this invention, reset and preset for each macrocell in CPLD 100A is emulated in the boolean expressions on a macrocell by macrocell basis.
- asynchronous register or latch capability is afforded by forming the logical OR of the reset signal and/or the preset signal with the global clock. Specifically, for a registered or latched signal, the original specified clock signal or latch enable signal CLK, the original specified preset signal P and the original specified reset signal R are logically ORed to form the radical block clock signal, i.e.,
- macrocell BCi with radical block blocks RADCLK1Z, RADCLK2Z, and RADCLK3Z (FIG. 9) is demonstrated herein by consideration of a specific example. Again, the architecture used in macrocell BCi of FIG. 9 is intended only to demonstrate the functionality of the macrocell and not to necessarily demonstrate a specific implementation.
- a Z is added to the reference numeral for a radical block clock line to indicate that the radical block clock signal can be generated by a circuit other than that shown in FIG. 7.
- architectural cells F1 to F4 are used with the three radical block clocks to configure macrocell BCi.
- the signals at node N1, the input signal to macrocell BCi, and at node N2, the output signal from macrocell BCi are defined.
- Reference numeral A represents three product terms 601 to 603 and reference numeral B represents product-term 605 in product-term cluster 605B.
- the logical operators have the usual definitions. Specifically,
- Table 2 illustrate the input and output signals and the type of output signal when an asynchronous reset or preset is not utilized
- Q is the feedback signal from the output terminal of a configurable storage element to product-term B;
- CLK is the specified clock signal
- CLK is the specified clock signal
- Q is the feedback signal from the output terminal of a configurable storage element to product-term B;
- a D-type flip-flop with a reset R can be emulated in two different ways. First, Table 5 is utilized and input signals A and B are redefined considering the function of the reset signal and a sum of four product terms is used.
- CLK is the specified clock signal
- S is the sum of four product terms.
- Table 6 is utilized and input signals A and B are redefined considering the function of the reset signal and the exclusive-OR of a sum of three product terms and product-term B is used.
- CLK is the specified clock signal
- Y is the expression implemented with product-term B.
- S is the sum of three product terms.
- a D-type flip-flop with a preset P also can be emulated in two different ways. First, Table 7 is utilized and input signals A and B are redefined considering the function of the reset signal and a sum of only three product terms is used. The fourth product-term is consumed.
- CLK is the specified clock signal
- S is the sum of three product terms.
- Table 8 is utilized and input signals A and B are redefined considering the function of the preset signal and the exclusive-OR of a sum of three product terms and an expression implemented with inverted product-term B.
- CLK is the specified clock signal
- Y is the expression implemented with the inverse of product-term B.
- S is the sum of three product terms.
- radical block clock lines are provided.
- a radical block clock line can be chosen which does not have the reset or preset ORed with the clock.
- I/O cell IOCi of this invention is illustrated in FIG. 10.
- I/O cell IOCi has a single three-state buffer 1040 coupled to I/O pin 1041.
- the input terminal of three-state buffer 1040 is connected to output line from a logic macrocell BCi.
- the control terminal of buffer 1040 is connected to the output line of a four-to-one programmable multiplexer 1042.
- the output terminal of buffer 1040 is also coupled to hierarchical switch matrix 160.
- Two output enable product terms are connected to the first two inputs of four-to-one multiplexer 1042.
- the third input terminal is tied to power supply voltage V cc and the fourth terminal is grounded.
- Multiplexer 1042 selectively provides an output enable signal to buffer 1040.
- Four-to-one multiplexer 1042 has two architectural cells 1043, 1044.
- first cell 1043 is programmed to a logic 0 and second cell 1044 is programmed to a logic 1
- the first output enable product-term is supplied to the control terminal of tristate buffer 1040.
- both architectural cells 1043, 1044 are programmed to a logic 1
- the second output enable product-term is supplied to the output control terminal of tristate buffer 1040.
- power supply voltage V cc is supplied to the terminal of buffer 1040 and when both of the architectural cells 1043, 1044 are programmed to a logic 0 the terminal of tristate buffer 1040 is grounded.
- buffer 1040 When power supply voltage V cc is supplied to tristate buffer 1040, buffer 1040 is permanently enabled for use as an output buffer and conversely when the control terminal is grounded, buffer 1040 is tristated so that I/O pin 1041 functions permanently as an input pin. When either of the output enable terms is applied to the control terminal, the I/O pin functions as a bidirectional I/O pin which is controlled by the applied product-term.
- the two product terms are common to up to sixteen I/O cells 330.
- the two product terms permit the sixteen I/O cells 330 to be configured as two separate banks within I/O macrocells 330.
- One of the product terms controls the first bank of I/O macrocells and the other product-term controls the second bank of I/O macrocells.
- An important feature of the I/O cell structure of this invention is that this structure decouples logic macrocells 320 from I/O pins 105-A.
- the embodiments described above are only illustrative of the principles of this invention and are not intended to limit the invention to the particular embodiments described.
- the CPLDs described above could be implemented with segments of a smaller size with a corresponding adjustment to the hierarchical switch matrix.
- the hierarchical switch matrix may be implemented with a wide variety of programmable multiplexer sizes.
Landscapes
- Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Logic Circuits (AREA)
Abstract
Description
Mux size=Integer{((Total no. of input signals to block switch matrix)×(Number of signal paths through block switch matrix))/(No. of block switch matrix output lines)}
160*2/32=10:1
RADCLK0=/PT.sub.-- PL0
RADCLK1=PICK8[PT1+/PT.sub.-- PL0, PT.sub.-- PL1]
RADCLK2=PICK10[PT.sub.-- PL3, /PR.sub.-- PL3]+PLG(PT2, PICK9[PIN.sub.-- CLK[0], /PIN.sub.-- CLK[0]]) .
RADCLK3=PICK12[PT.sub.-- PL4+PT.sub.-- PL6, /PT.sub.-- PL4]+TMP1
RADCLK4=PICK12[PTPL6, /PT.sub.-- PL6]+TMP1
RADCLK5=/PT.sub.-- PL7+/PICKX[TMP2, TMP3]
RADCLK6=/PT.sub.-- PL9+/PICKX[TMP2, TMP5]
TABLE 1 ______________________________________ Product Product Term Latch Term Pin Clock Sum RADCLK Enable Clock Clock Enable Clock ______________________________________ 0 NA NA NA NA /PT0 1 PT1 PT1 NA NA /PT0 2 NA PT3 YES PT2 /PT3 3 NA PT4 + YES PT5 /PT4 + PT6 /PT6 4 NA PT6 YES PT5 /PT6 5 NA NA DUAL PT8 /PT7 EDGE 6 NA NA DUAL PT8 OR /PT9 EDGE VCC OR GND ______________________________________
RADCLK=CLK+P+R
TABLE 2 ______________________________________ F1 F2 F3 F4 N1 N2 ______________________________________ 1 1 1 1 A(+)B =A*/B+/A*B Combinatorial 0 1 1 1 A+B Combinatorial 1 0 1 1 /(A(+)B) =A*B+/A*/B Combinatorial 0 0 1 1 /(A+B) =/A*/B Combinatorial 1 1 0 1 A(+)B =A*/B+/A*B Q=D flip-flop using RADCLK3Z 0 1 1 0 A+B Q=D flip-flop using RADCLK2Z 1 0 0 0 /(A(+)B) =A*B+/A*/B Q=D flip-flop using RADCLK1Z ______________________________________
TABLE 3 ______________________________________ F1 F2 F3 F4 N1 N2 ______________________________________ 1 1 1 1 A(+)B =A*/B+/A*B Q=D flip-flop using RADCLK1Z ______________________________________
A=S*/R
B=Q*/R
RADCLK1Z=CLK+R
TABLE 4 ______________________________________ F1 F2 F3 F4 N1 N2 ______________________________________ 1 0 1 0 /(A(+)B) =A*B+/A*/B Q=D flip-flop using RADCLK2Z ______________________________________
A=S*/P
B=/Q*/P
RADCLK2=CLK+P
TABLE 5 ______________________________________ F1 F2 F3 F4 N1 N2 ______________________________________ 0 1 0 0 A+B Q=D flip-flop using RADCLK1 ______________________________________
A+B=S*/R
RADCLK1Z=CLK+R
A+B=S*/R
TABLE 6 ______________________________________ F1 F2 F3 F4 B1 N2 ______________________________________ 1 1 0 0 A(+)B =A*/B+/A*B Q=D flip-flop using CLK1 ______________________________________
A=S*/R
B=Y*/R
RADCLK1Z=CLK+R
TABLE 7 ______________________________________ F1 F2 F3 F4 N1 N2 ______________________________________ 0 1 0 0 A+B Q=D flip-flop using RADCLK1 ______________________________________
A=S
B=P
RADCLKi=CLK+P
TABLE 8 ______________________________________ F1 F2 F3 F4 N1 N2 ______________________________________ 1 0 1 0 /(A(+)B) =A*B+/A*/B Q=D flip-flop using CLK2 ______________________________________
A=S*/P
B=/Y*/P
RADCLK2=CLK+P
Claims (55)
Priority Applications (4)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/459,960 US5521529A (en) | 1995-06-02 | 1995-06-02 | Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation |
PCT/US1996/004612 WO1996038917A1 (en) | 1995-06-02 | 1996-04-03 | Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation |
US08/653,186 US5789939A (en) | 1995-06-02 | 1996-05-24 | Method for providing a plurality of hierarchical signal paths in a very high-density programmable logic device |
US08/740,948 US5811987A (en) | 1995-06-02 | 1996-11-05 | Block clock and initialization circuit for a complex high density PLD |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/459,960 US5521529A (en) | 1995-06-02 | 1995-06-02 | Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/653,186 Continuation US5789939A (en) | 1995-06-02 | 1996-05-24 | Method for providing a plurality of hierarchical signal paths in a very high-density programmable logic device |
Publications (1)
Publication Number | Publication Date |
---|---|
US5521529A true US5521529A (en) | 1996-05-28 |
Family
ID=23826859
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/459,960 Expired - Lifetime US5521529A (en) | 1995-06-02 | 1995-06-02 | Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation |
US08/653,186 Expired - Fee Related US5789939A (en) | 1995-06-02 | 1996-05-24 | Method for providing a plurality of hierarchical signal paths in a very high-density programmable logic device |
Family Applications After (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
US08/653,186 Expired - Fee Related US5789939A (en) | 1995-06-02 | 1996-05-24 | Method for providing a plurality of hierarchical signal paths in a very high-density programmable logic device |
Country Status (2)
Country | Link |
---|---|
US (2) | US5521529A (en) |
WO (1) | WO1996038917A1 (en) |
Cited By (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5789939A (en) * | 1995-06-02 | 1998-08-04 | Advanced Micro Devices, Inc. | Method for providing a plurality of hierarchical signal paths in a very high-density programmable logic device |
US5818254A (en) * | 1995-06-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Multi-tiered hierarchical high speed switch matrix structure for very high-density complex programmable logic devices |
US5886904A (en) * | 1996-09-23 | 1999-03-23 | Quickturn Design Systems, Inc. | Latch optimization in hardware logic emulation systems |
EP0919938A2 (en) * | 1997-11-12 | 1999-06-02 | Quickturn Design Systems, Inc | Optimized emulation and prototyping architecture |
US5923868A (en) * | 1994-07-29 | 1999-07-13 | Cypress Semiconductor Corp. | Methods for maximizing routability in a programmable interconnect matrix having less than full connectability |
US5959466A (en) * | 1997-01-31 | 1999-09-28 | Actel Corporation | Field programmable gate array with mask programmed input and output buffers |
US6091892A (en) * | 1996-11-13 | 2000-07-18 | Xilinx, Inc. | Method for mapping product terms in a complex programmable logic device |
US6137308A (en) * | 1998-01-20 | 2000-10-24 | Cypress Semiconductor Corporation | Programmable interconnect matrix architecture for complex programmable logic device |
US6150837A (en) | 1997-02-28 | 2000-11-21 | Actel Corporation | Enhanced field programmable gate array |
US6201407B1 (en) * | 1997-10-07 | 2001-03-13 | Cypress Semiconductor Corp | Circular product term allocations scheme for a programmable device |
US6243664B1 (en) | 1998-10-27 | 2001-06-05 | Cypress Semiconductor Corporation | Methods for maximizing routability in a programmable interconnect matrix having less than full connectability |
US6388464B1 (en) | 1999-12-30 | 2002-05-14 | Cypress Semiconductor Corp. | Configurable memory for programmable logic circuits |
US20020108006A1 (en) * | 2000-10-26 | 2002-08-08 | Warren Snyder | Microcontroller programmable system on a chip |
US6476636B1 (en) | 2000-09-02 | 2002-11-05 | Actel Corporation | Tileable field-programmable gate array architecture |
US6608500B1 (en) | 2000-03-31 | 2003-08-19 | Cypress Semiconductor Corp. | I/O architecture/cell design for programmable logic device |
US6637017B1 (en) * | 2000-03-17 | 2003-10-21 | Cypress Semiconductor Corp. | Real time programmable feature control for programmable logic devices |
US20030201795A1 (en) * | 2000-09-02 | 2003-10-30 | Jung-Cheun Lien | Tileable field-programmable gate array architecture |
WO2004086621A1 (en) * | 2003-03-25 | 2004-10-07 | Utstarcom Korea Limited | Method for optimizing a dsp input clock using a comparing/analyzing circuit |
US6864710B1 (en) | 1999-12-30 | 2005-03-08 | Cypress Semiconductor Corp. | Programmable logic device |
US6937063B1 (en) | 2000-09-02 | 2005-08-30 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US7015719B1 (en) | 2000-09-02 | 2006-03-21 | Actel Corporation | Tileable field-programmable gate array architecture |
US7139292B1 (en) * | 2001-08-31 | 2006-11-21 | Cypress Semiconductor Corp. | Configurable matrix architecture |
US7426665B1 (en) | 2000-09-02 | 2008-09-16 | Actel Corporation | Tileable field-programmable gate array architecture |
US20080258759A1 (en) * | 2007-04-17 | 2008-10-23 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US20080288755A1 (en) * | 2007-04-17 | 2008-11-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US20080301619A1 (en) * | 2001-11-19 | 2008-12-04 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US7796464B1 (en) | 2003-06-27 | 2010-09-14 | Cypress Semiconductor Corporation | Synchronous memory with a shadow-cycle counter |
US7825688B1 (en) | 2000-10-26 | 2010-11-02 | Cypress Semiconductor Corporation | Programmable microcontroller architecture(mixed analog/digital) |
US7893724B2 (en) | 2004-03-25 | 2011-02-22 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US7893772B1 (en) | 2007-12-03 | 2011-02-22 | Cypress Semiconductor Corporation | System and method of loading a programmable counter |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US8069428B1 (en) | 2001-10-24 | 2011-11-29 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US8069436B2 (en) | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US8078894B1 (en) | 2007-04-25 | 2011-12-13 | Cypress Semiconductor Corporation | Power management architecture, method and configuration system |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
US8085100B2 (en) | 2005-02-04 | 2011-12-27 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US8120408B1 (en) | 2005-05-05 | 2012-02-21 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US8402313B1 (en) | 2002-05-01 | 2013-03-19 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
CN103196478A (en) * | 2013-02-23 | 2013-07-10 | 中北大学 | Time base unifying system of multiple testing recording instruments |
US8499270B1 (en) | 2007-04-25 | 2013-07-30 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US8527949B1 (en) | 2001-11-19 | 2013-09-03 | Cypress Semiconductor Corporation | Graphical user interface for dynamically reconfiguring a programmable device |
CN104135260A (en) * | 2014-08-15 | 2014-11-05 | 中北大学 | Relatively synchronous trigger method for track shoe storage testers comprising clock modules |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US10698662B2 (en) | 2001-11-15 | 2020-06-30 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
CN115428340A (en) * | 2019-12-09 | 2022-12-02 | 美国莱迪思半导体公司 | Input/output bus protection system and method for programmable logic device |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6175247B1 (en) * | 1998-04-14 | 2001-01-16 | Lockheed Martin Corporation | Context switchable field programmable gate array with public-private addressable sharing of intermediate data |
US6236230B1 (en) * | 1998-07-21 | 2001-05-22 | Cypress Semiconductor Corp. | Method, architecture and circuit for product term allocation |
US6326808B1 (en) * | 1998-12-03 | 2001-12-04 | Vantis Corporation | Inversion of product term line before or logic in a programmable logic device (PLD) |
US6184713B1 (en) * | 1999-06-06 | 2001-02-06 | Lattice Semiconductor Corporation | Scalable architecture for high density CPLDS having two-level hierarchy of routing resources |
US6445242B2 (en) * | 1999-11-23 | 2002-09-03 | Texas Instruments Incorporated | Fuse selectable pinout package |
US6653860B2 (en) | 2001-08-10 | 2003-11-25 | Lattice Semiconductor Corporation | Enhanced macrocell module having expandable product term sharing capability for use in high density CPLD architectures |
JP5158195B2 (en) * | 2008-06-06 | 2013-03-06 | 日本電気株式会社 | Circuit design system and circuit design method |
WO2014125979A1 (en) * | 2013-02-13 | 2014-08-21 | Semiconductor Energy Laboratory Co., Ltd. | Programmable logic device and semiconductor device |
EP3217240A1 (en) * | 2016-03-07 | 2017-09-13 | Aldebaran Robotics | Data communication bus for a robot |
Citations (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4742252A (en) * | 1985-03-29 | 1988-05-03 | Advanced Micro Devices, Inc. | Multiple array customizable logic device |
US4758746A (en) * | 1985-08-12 | 1988-07-19 | Monolithic Memories, Inc. | Programmable logic array with added array of gates and added output routing flexibility |
US4771285A (en) * | 1985-11-05 | 1988-09-13 | Advanced Micro Devices, Inc. | Programmable logic cell with flexible clocking and flexible feedback |
US4789951A (en) * | 1986-05-16 | 1988-12-06 | Advanced Micro Devices, Inc. | Programmable array logic cell |
US4963768A (en) * | 1985-03-29 | 1990-10-16 | Advanced Micro Devices, Inc. | Flexible, programmable cell array interconnected by a programmable switch matrix |
US5015884A (en) * | 1985-03-29 | 1991-05-14 | Advanced Micro Devices, Inc. | Multiple array high performance programmable logic device family |
US5130574A (en) * | 1991-05-06 | 1992-07-14 | Lattice Semiconductor Corporation | Programmable logic device providing product term sharing and steering to the outputs of the programmable logic device |
US5151623A (en) * | 1985-03-29 | 1992-09-29 | Advanced Micro Devices, Inc. | Programmable logic device with multiple, flexible asynchronous programmable logic blocks interconnected by a high speed switch matrix |
US5191243A (en) * | 1991-05-06 | 1993-03-02 | Lattice Semiconductor Corporation | Output logic macrocell with enhanced functional capabilities |
US5204556A (en) * | 1991-05-06 | 1993-04-20 | Lattice Semiconductor Corporation | Programmable interconnect structure for logic blocks |
US5220214A (en) * | 1991-04-22 | 1993-06-15 | Altera Corporation | Registered logic macrocell with product term allocation and adjacent product term stealing |
US5258668A (en) * | 1992-05-08 | 1993-11-02 | Altera Corporation | Programmable logic array integrated circuits with cascade connections between logic modules |
US5260611A (en) * | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic array having local and long distance conductors |
US5260610A (en) * | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic element interconnections for programmable logic array integrated circuits |
US5341044A (en) * | 1993-04-19 | 1994-08-23 | Altera Corporation | Flexible configuration logic array block for programmable logic devices |
US5371422A (en) * | 1991-09-03 | 1994-12-06 | Altera Corporation | Programmable logic device having multiplexers and demultiplexers randomly connected to global conductors for interconnections between logic elements |
US5394033A (en) * | 1993-09-01 | 1995-02-28 | Lattice Semiconductor Corporation | Structure and method for implementing hierarchical routing pools in a programmable logic circuit |
US5426335A (en) * | 1985-03-29 | 1995-06-20 | Advanced Micro Devices, Inc. | Pinout architecture for a family of multiple segmented programmable logic blocks interconnected by a high speed centralized switch matrix |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5457409A (en) * | 1992-08-03 | 1995-10-10 | Advanced Micro Devices, Inc. | Architecture of a multiple array high density programmable logic device with a plurality of programmable switch matrices |
GB9223226D0 (en) * | 1992-11-05 | 1992-12-16 | Algotronix Ltd | Improved configurable cellular array (cal ii) |
US5404055A (en) * | 1993-09-01 | 1995-04-04 | Lattice Semiconductor Corporation | Input routing pool |
US5521529A (en) * | 1995-06-02 | 1996-05-28 | Advanced Micro Devices, Inc. | Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation |
-
1995
- 1995-06-02 US US08/459,960 patent/US5521529A/en not_active Expired - Lifetime
-
1996
- 1996-04-03 WO PCT/US1996/004612 patent/WO1996038917A1/en active Application Filing
- 1996-05-24 US US08/653,186 patent/US5789939A/en not_active Expired - Fee Related
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4931671A (en) * | 1985-03-29 | 1990-06-05 | Advanced Micro Devices, Inc. | Multiple array customizable logic device |
US4963768A (en) * | 1985-03-29 | 1990-10-16 | Advanced Micro Devices, Inc. | Flexible, programmable cell array interconnected by a programmable switch matrix |
US5015884A (en) * | 1985-03-29 | 1991-05-14 | Advanced Micro Devices, Inc. | Multiple array high performance programmable logic device family |
US5426335A (en) * | 1985-03-29 | 1995-06-20 | Advanced Micro Devices, Inc. | Pinout architecture for a family of multiple segmented programmable logic blocks interconnected by a high speed centralized switch matrix |
US5151623A (en) * | 1985-03-29 | 1992-09-29 | Advanced Micro Devices, Inc. | Programmable logic device with multiple, flexible asynchronous programmable logic blocks interconnected by a high speed switch matrix |
US4742252A (en) * | 1985-03-29 | 1988-05-03 | Advanced Micro Devices, Inc. | Multiple array customizable logic device |
US4758746A (en) * | 1985-08-12 | 1988-07-19 | Monolithic Memories, Inc. | Programmable logic array with added array of gates and added output routing flexibility |
US4771285A (en) * | 1985-11-05 | 1988-09-13 | Advanced Micro Devices, Inc. | Programmable logic cell with flexible clocking and flexible feedback |
US4789951A (en) * | 1986-05-16 | 1988-12-06 | Advanced Micro Devices, Inc. | Programmable array logic cell |
EP0445909A1 (en) * | 1990-03-07 | 1991-09-11 | Advanced Micro Devices, Inc. | Integrated circuit |
US5220214A (en) * | 1991-04-22 | 1993-06-15 | Altera Corporation | Registered logic macrocell with product term allocation and adjacent product term stealing |
US5191243A (en) * | 1991-05-06 | 1993-03-02 | Lattice Semiconductor Corporation | Output logic macrocell with enhanced functional capabilities |
US5204556A (en) * | 1991-05-06 | 1993-04-20 | Lattice Semiconductor Corporation | Programmable interconnect structure for logic blocks |
US5130574A (en) * | 1991-05-06 | 1992-07-14 | Lattice Semiconductor Corporation | Programmable logic device providing product term sharing and steering to the outputs of the programmable logic device |
US5260611A (en) * | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic array having local and long distance conductors |
US5260610A (en) * | 1991-09-03 | 1993-11-09 | Altera Corporation | Programmable logic element interconnections for programmable logic array integrated circuits |
US5371422A (en) * | 1991-09-03 | 1994-12-06 | Altera Corporation | Programmable logic device having multiplexers and demultiplexers randomly connected to global conductors for interconnections between logic elements |
US5376844A (en) * | 1991-09-03 | 1994-12-27 | Altera Corporation | Programmable logic device with multiplexer-based programmable interconnections |
US5258668A (en) * | 1992-05-08 | 1993-11-02 | Altera Corporation | Programmable logic array integrated circuits with cascade connections between logic modules |
US5341044A (en) * | 1993-04-19 | 1994-08-23 | Altera Corporation | Flexible configuration logic array block for programmable logic devices |
US5394033A (en) * | 1993-09-01 | 1995-02-28 | Lattice Semiconductor Corporation | Structure and method for implementing hierarchical routing pools in a programmable logic circuit |
Non-Patent Citations (14)
Title |
---|
"EPM7032 EPLD, High-Performance 32-Macrocell Device", Data Sheet, Altera Corp., Ver. 1, Dec. 1991, pp. 1-15. |
"pLSI 1032 programmable Large Scale Integration", Rev. A., Lattice Semiconductor Corp., Jan. 1992, pp. 2-1 through 2-29. |
Doug Conner, "PLD Architectures Require Scrutiny", EDN Electrical Design News, vol. 34, No. 20, Sep. 28, 1989, pp. 91, 93, 94, 96, 98, 100. |
Doug Conner, PLD Architectures Require Scrutiny , EDN Electrical Design News, vol. 34, No. 20, Sep. 28, 1989, pp. 91, 93, 94, 96, 98, 100. * |
EPM7032 EPLD, High Performance 32 Macrocell Device , Data Sheet, Altera Corp., Ver. 1, Dec. 1991, pp. 1 15. * |
Om P. Agrawal, "AMD's Next Generation MACH™ 3xx/4xx Family Breaks New PLD Density/Speed Barrier", Conference Record, Wescon 92, Nov. 1992, pp. 100-106. |
Om P. Agrawal, AMD s Next Generation MACH 3xx/4xx Family Breaks New PLD Density/Speed Barrier , Conference Record, Wescon 92, Nov. 1992, pp. 100 106. * |
pLSI 1032 programmable Large Scale Integration , Rev. A., Lattice Semiconductor Corp., Jan. 1992, pp. 2 1 through 2 29. * |
Raymond Leung et al., "A 7.5 ns 350 mW BiCMOS PAL®-type Device", Proceedings of the 1989 IEEE Custom Integrated Circuits Conference, May 1989, pp. 5.6.1-5.6.4. |
Raymond Leung et al., A 7.5 ns 350 mW BiCMOS PAL type Device , Proceedings of the 1989 IEEE Custom Integrated Circuits Conference, May 1989, pp. 5.6.1 5.6.4. * |
Stan Kopec et al., "Obtaining 70 MHz Performance in the MAX Architecture", Electronic Engineering, vol. 63, No. 773, May 1991, pp. 69, 70, 72, 74. |
Stan Kopec et al., Obtaining 70 MHz Performance in the MAX Architecture , Electronic Engineering, vol. 63, No. 773, May 1991, pp. 69, 70, 72, 74. * |
Steve Landry, "Application--Specific IC's Relying on RAM, Implement Almost any Logic Function", Electronic Design, vol. 33, No. 25, Oct. 1985, pp. 123-128, 130. |
Steve Landry, Application Specific IC s Relying on RAM, Implement Almost any Logic Function , Electronic Design, vol. 33, No. 25, Oct. 1985, pp. 123 128, 130. * |
Cited By (106)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5923868A (en) * | 1994-07-29 | 1999-07-13 | Cypress Semiconductor Corp. | Methods for maximizing routability in a programmable interconnect matrix having less than full connectability |
US5818254A (en) * | 1995-06-02 | 1998-10-06 | Advanced Micro Devices, Inc. | Multi-tiered hierarchical high speed switch matrix structure for very high-density complex programmable logic devices |
US5789939A (en) * | 1995-06-02 | 1998-08-04 | Advanced Micro Devices, Inc. | Method for providing a plurality of hierarchical signal paths in a very high-density programmable logic device |
US5886904A (en) * | 1996-09-23 | 1999-03-23 | Quickturn Design Systems, Inc. | Latch optimization in hardware logic emulation systems |
US6091892A (en) * | 1996-11-13 | 2000-07-18 | Xilinx, Inc. | Method for mapping product terms in a complex programmable logic device |
US6362649B1 (en) | 1997-01-31 | 2002-03-26 | Actel Corporation | Field programmable gate array with mask programmed input and output buffers |
US5959466A (en) * | 1997-01-31 | 1999-09-28 | Actel Corporation | Field programmable gate array with mask programmed input and output buffers |
US6150837A (en) | 1997-02-28 | 2000-11-21 | Actel Corporation | Enhanced field programmable gate array |
US6201407B1 (en) * | 1997-10-07 | 2001-03-13 | Cypress Semiconductor Corp | Circular product term allocations scheme for a programmable device |
US6625793B2 (en) | 1997-11-12 | 2003-09-23 | Quickturn Design Systems, Inc. | Optimized emulation and prototyping architecture |
EP0919938A3 (en) * | 1997-11-12 | 2002-04-17 | Quickturn Design Systems, Inc | Optimized emulation and prototyping architecture |
EP0919938A2 (en) * | 1997-11-12 | 1999-06-02 | Quickturn Design Systems, Inc | Optimized emulation and prototyping architecture |
US6137308A (en) * | 1998-01-20 | 2000-10-24 | Cypress Semiconductor Corporation | Programmable interconnect matrix architecture for complex programmable logic device |
US6243664B1 (en) | 1998-10-27 | 2001-06-05 | Cypress Semiconductor Corporation | Methods for maximizing routability in a programmable interconnect matrix having less than full connectability |
US6388464B1 (en) | 1999-12-30 | 2002-05-14 | Cypress Semiconductor Corp. | Configurable memory for programmable logic circuits |
US6864710B1 (en) | 1999-12-30 | 2005-03-08 | Cypress Semiconductor Corp. | Programmable logic device |
US6512395B1 (en) | 1999-12-30 | 2003-01-28 | Cypress Semiconductor Corp. | Configurable memory for programmable logic circuits |
US6637017B1 (en) * | 2000-03-17 | 2003-10-21 | Cypress Semiconductor Corp. | Real time programmable feature control for programmable logic devices |
US6608500B1 (en) | 2000-03-31 | 2003-08-19 | Cypress Semiconductor Corp. | I/O architecture/cell design for programmable logic device |
US6937063B1 (en) | 2000-09-02 | 2005-08-30 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US6476636B1 (en) | 2000-09-02 | 2002-11-05 | Actel Corporation | Tileable field-programmable gate array architecture |
US20030201795A1 (en) * | 2000-09-02 | 2003-10-30 | Jung-Cheun Lien | Tileable field-programmable gate array architecture |
US20030218479A1 (en) * | 2000-09-02 | 2003-11-27 | Actel Corporation, A California Corporation | Tileable field-programmable gate array architecture |
US6700404B1 (en) | 2000-09-02 | 2004-03-02 | Actel Corporation | Tileable field-programmable gate array architecture |
US6731133B1 (en) | 2000-09-02 | 2004-05-04 | Actel Corporation | Routing structures for a tileable field-programmable gate array architecture |
US6744278B1 (en) | 2000-09-02 | 2004-06-01 | Actel Corporation | Tileable field-programmable gate array architecture |
US20050206405A1 (en) * | 2000-09-02 | 2005-09-22 | Actel Corporation, A California Corporation | Method and apparatus of memory clearing with monitoring ram memory cells in a field programmable gated array |
US6611153B1 (en) | 2000-09-02 | 2003-08-26 | Actel Corporation | Tileable field-programmable gate array architecture |
US6870396B2 (en) | 2000-09-02 | 2005-03-22 | Actel Corporation | Tileable field-programmable gate array architecture |
US7342416B2 (en) | 2000-09-02 | 2008-03-11 | Actel Corporation | Tileable field-programmable gate array architecture |
US6888375B2 (en) | 2000-09-02 | 2005-05-03 | Actel Corporation | Tileable field-programmable gate array architecture |
US7482835B1 (en) | 2000-09-02 | 2009-01-27 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US6968487B1 (en) | 2000-09-02 | 2005-11-22 | Actel Corporation | User available body scan chain |
US7015719B1 (en) | 2000-09-02 | 2006-03-21 | Actel Corporation | Tileable field-programmable gate array architecture |
US20060114024A1 (en) * | 2000-09-02 | 2006-06-01 | Actel Corporation | Tileable field-programmable gate array architecture |
US7126856B2 (en) | 2000-09-02 | 2006-10-24 | Actel Corporation | Method and apparatus of memory clearing with monitoring RAM memory cells in a field programmable gated array |
US7137095B1 (en) | 2000-09-02 | 2006-11-14 | Actel Corporation | Freeway routing system for a gate array |
US20080238477A1 (en) * | 2000-09-02 | 2008-10-02 | Actel Corporation | Tileable field-programmable gate array architecture |
US7157938B2 (en) | 2000-09-02 | 2007-01-02 | Actel Corporation | Tileable field-programmable gate array architecture |
US20070075742A1 (en) * | 2000-09-02 | 2007-04-05 | Actel Corporation | Tileable field-programmable gate array architecture |
US20070089082A1 (en) * | 2000-09-02 | 2007-04-19 | Actel Corporation | Freeway routing system for a gate array |
US7426665B1 (en) | 2000-09-02 | 2008-09-16 | Actel Corporation | Tileable field-programmable gate array architecture |
US8358150B1 (en) | 2000-10-26 | 2013-01-22 | Cypress Semiconductor Corporation | Programmable microcontroller architecture(mixed analog/digital) |
US9843327B1 (en) | 2000-10-26 | 2017-12-12 | Cypress Semiconductor Corporation | PSOC architecture |
US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
US10725954B2 (en) | 2000-10-26 | 2020-07-28 | Monterey Research, Llc | Microcontroller programmable system on a chip |
US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
US20020108006A1 (en) * | 2000-10-26 | 2002-08-08 | Warren Snyder | Microcontroller programmable system on a chip |
US8555032B2 (en) | 2000-10-26 | 2013-10-08 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip with programmable interconnect |
US10261932B2 (en) | 2000-10-26 | 2019-04-16 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip |
US10248604B2 (en) | 2000-10-26 | 2019-04-02 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip |
US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
US8736303B2 (en) | 2000-10-26 | 2014-05-27 | Cypress Semiconductor Corporation | PSOC architecture |
US9766650B2 (en) | 2000-10-26 | 2017-09-19 | Cypress Semiconductor Corporation | Microcontroller programmable system on a chip with programmable interconnect |
US10020810B2 (en) | 2000-10-26 | 2018-07-10 | Cypress Semiconductor Corporation | PSoC architecture |
US7825688B1 (en) | 2000-10-26 | 2010-11-02 | Cypress Semiconductor Corporation | Programmable microcontroller architecture(mixed analog/digital) |
US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
US7139292B1 (en) * | 2001-08-31 | 2006-11-21 | Cypress Semiconductor Corp. | Configurable matrix architecture |
US8069428B1 (en) | 2001-10-24 | 2011-11-29 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US8793635B1 (en) | 2001-10-24 | 2014-07-29 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US10466980B2 (en) | 2001-10-24 | 2019-11-05 | Cypress Semiconductor Corporation | Techniques for generating microcontroller configuration information |
US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
US10698662B2 (en) | 2001-11-15 | 2020-06-30 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
US7844437B1 (en) | 2001-11-19 | 2010-11-30 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US8527949B1 (en) | 2001-11-19 | 2013-09-03 | Cypress Semiconductor Corporation | Graphical user interface for dynamically reconfiguring a programmable device |
US8370791B2 (en) | 2001-11-19 | 2013-02-05 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US8533677B1 (en) | 2001-11-19 | 2013-09-10 | Cypress Semiconductor Corporation | Graphical user interface for dynamically reconfiguring a programmable device |
US20080301619A1 (en) * | 2001-11-19 | 2008-12-04 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
US8402313B1 (en) | 2002-05-01 | 2013-03-19 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
US7917794B2 (en) | 2003-03-25 | 2011-03-29 | Transpacific Sonic, Llc | Method for optimizing a DSP input clock using a comparing/analyzing circuit |
US20070153948A1 (en) * | 2003-03-25 | 2007-07-05 | Shin Seoung C | Method for optimizing a dsp input clock using a comparing/analyzing circuit |
WO2004086621A1 (en) * | 2003-03-25 | 2004-10-07 | Utstarcom Korea Limited | Method for optimizing a dsp input clock using a comparing/analyzing circuit |
US7796464B1 (en) | 2003-06-27 | 2010-09-14 | Cypress Semiconductor Corporation | Synchronous memory with a shadow-cycle counter |
US7893724B2 (en) | 2004-03-25 | 2011-02-22 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
US8069436B2 (en) | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
US8085100B2 (en) | 2005-02-04 | 2011-12-27 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
US8120408B1 (en) | 2005-05-05 | 2012-02-21 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
US8085067B1 (en) | 2005-12-21 | 2011-12-27 | Cypress Semiconductor Corporation | Differential-to-single ended signal converter circuit and method |
US8717042B1 (en) | 2006-03-27 | 2014-05-06 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
US8476928B1 (en) | 2007-04-17 | 2013-07-02 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
US20080258759A1 (en) * | 2007-04-17 | 2008-10-23 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US20080288755A1 (en) * | 2007-04-17 | 2008-11-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
US7737724B2 (en) | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
US8078894B1 (en) | 2007-04-25 | 2011-12-13 | Cypress Semiconductor Corporation | Power management architecture, method and configuration system |
US8909960B1 (en) | 2007-04-25 | 2014-12-09 | Cypress Semiconductor Corporation | Power management architecture, method and configuration system |
US8499270B1 (en) | 2007-04-25 | 2013-07-30 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
US7893772B1 (en) | 2007-12-03 | 2011-02-22 | Cypress Semiconductor Corporation | System and method of loading a programmable counter |
US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
CN103196478A (en) * | 2013-02-23 | 2013-07-10 | 中北大学 | Time base unifying system of multiple testing recording instruments |
CN104135260B (en) * | 2014-08-15 | 2017-06-30 | 中北大学 | Creeper tread storage tester relative synchronization triggering method containing clock module |
CN104135260A (en) * | 2014-08-15 | 2014-11-05 | 中北大学 | Relatively synchronous trigger method for track shoe storage testers comprising clock modules |
CN115428340A (en) * | 2019-12-09 | 2022-12-02 | 美国莱迪思半导体公司 | Input/output bus protection system and method for programmable logic device |
Also Published As
Publication number | Publication date |
---|---|
US5789939A (en) | 1998-08-04 |
WO1996038917A1 (en) | 1996-12-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US5521529A (en) | Very high-density complex programmable logic devices with a multi-tiered hierarchical switch matrix and optimized flexible logic allocation | |
US5015884A (en) | Multiple array high performance programmable logic device family | |
US5436514A (en) | High speed centralized switch matrix for a programmable logic device | |
US5811986A (en) | Flexible synchronous/asynchronous cell structure for a high density programmable logic device | |
US5151623A (en) | Programmable logic device with multiple, flexible asynchronous programmable logic blocks interconnected by a high speed switch matrix | |
US4963768A (en) | Flexible, programmable cell array interconnected by a programmable switch matrix | |
US5594365A (en) | Flexible block clock generation circuit for providing clock signals to clocked elements in a multiple array high density programmable logic device | |
EP0829139B1 (en) | A multi-tiered hierarchical high speed switch matrix structure for very high-density complex programmable logic devices | |
US6229337B1 (en) | High-density programmable logic device with flexible local connections and multiplexer based global interconnections | |
US6216257B1 (en) | FPGA device and method that includes a variable grain function architecture for implementing configuration logic blocks and a complimentary variable length interconnect architecture for providing configurable routing between configuration logic blocks | |
US5341044A (en) | Flexible configuration logic array block for programmable logic devices | |
EP0707721B1 (en) | Programmable logic device with regional and universal signal routing | |
JP3325662B2 (en) | Integrated circuit | |
US6466049B1 (en) | Clock enable control circuit for flip flops | |
US6028446A (en) | Flexible synchronous and asynchronous circuits for a very high density programmable logic device | |
US6531890B1 (en) | Programmable optimized-distribution logic allocator for a high-density complex PLD | |
Jacobson et al. | Configurable Device Architectures | |
Navabi et al. | Programmable Logic Devices |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
AS | Assignment |
Owner name: ADVANCED MICRO DEVICES, INC., CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:AGRAWAL, OM P.;SHARPE-GEISLER, BRADLEY A.;SCHMITZ, NICHOLAS A.;AND OTHERS;REEL/FRAME:007519/0820 Effective date: 19950602 |
|
STCF | Information on status: patent grant |
Free format text: PATENTED CASE |
|
CC | Certificate of correction | ||
AS | Assignment |
Owner name: VANTIS CORPORATION, CALIFORNIA Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:ADVANCED MICRO DEVICES, INC.;REEL/FRAME:009472/0719 Effective date: 19971219 |
|
AS | Assignment |
Owner name: VANTIS CORPORATION, CALIFORNIA Free format text: PATENT ASSIGNMENT AGREEMENT;ASSIGNOR:ADVANCED MICRO DEVICES, INC.;REEL/FRAME:009178/0222 Effective date: 19971219 |
|
FPAY | Fee payment |
Year of fee payment: 4 |
|
FEPP | Fee payment procedure |
Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
AS | Assignment |
Owner name: LATTICE SEMICONDUCTOR CORPORATION, OREGON Free format text: MERGER;ASSIGNOR:VANTIS CORPORATION;REEL/FRAME:012937/0738 Effective date: 20020211 |
|
FPAY | Fee payment |
Year of fee payment: 8 |
|
REMI | Maintenance fee reminder mailed | ||
FPAY | Fee payment |
Year of fee payment: 12 |
|
SULP | Surcharge for late payment |
Year of fee payment: 11 |
|
AS | Assignment |
Owner name: JEFFERIES FINANCE LLC, NEW YORK Free format text: SECURITY INTEREST;ASSIGNORS:LATTICE SEMICONDUCTOR CORPORATION;SIBEAM, INC.;SILICON IMAGE, INC.;AND OTHERS;REEL/FRAME:035220/0048 Effective date: 20150310 |
|
AS | Assignment |
Owner name: DVDO, INC., OREGON Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326 Effective date: 20190517 Owner name: SIBEAM, INC., OREGON Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326 Effective date: 20190517 Owner name: LATTICE SEMICONDUCTOR CORPORATION, OREGON Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326 Effective date: 20190517 Owner name: SILICON IMAGE, INC., OREGON Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:JEFFERIES FINANCE LLC;REEL/FRAME:049827/0326 Effective date: 20190517 |