US20190181863A1 - Programmable pipeline interface circuit - Google Patents

Programmable pipeline interface circuit Download PDF

Info

Publication number
US20190181863A1
US20190181863A1 US15/836,571 US201715836571A US2019181863A1 US 20190181863 A1 US20190181863 A1 US 20190181863A1 US 201715836571 A US201715836571 A US 201715836571A US 2019181863 A1 US2019181863 A1 US 2019181863A1
Authority
US
United States
Prior art keywords
clock signal
input
clock
circuit
signals
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
US15/836,571
Other versions
US10320386B1 (en
Inventor
Ilya K. Ganusov
Brian C. Gaide
Henri Fraisse
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Xilinx Inc
Original Assignee
Xilinx Inc
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Xilinx Inc filed Critical Xilinx Inc
Priority to US15/836,571 priority Critical patent/US10320386B1/en
Assigned to XILINX, INC. reassignment XILINX, INC. ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: GAIDE, BRIAN C., FRAISSE, HENRI, GANUSOV, ILYA K.
Priority to CN201811504036.8A priority patent/CN109905116B/en
Application granted granted Critical
Publication of US10320386B1 publication Critical patent/US10320386B1/en
Publication of US20190181863A1 publication Critical patent/US20190181863A1/en
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/003Modifications for increasing the reliability for protection
    • H03K19/00323Delay compensation
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/0175Coupling arrangements; Interface arrangements
    • H03K19/017581Coupling arrangements; Interface arrangements programmable
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/1733Controllable logic circuits
    • H03K19/1737Controllable logic circuits using multiplexers
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/02Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components
    • H03K19/173Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits using specified components using elementary logic circuits as components
    • H03K19/177Logic 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/17736Structural details of routing resources
    • H03K19/1774Structural details of routing resources for global signals, e.g. clock, reset
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K19/00Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits
    • H03K19/20Logic circuits, i.e. having at least two inputs acting on one output; Inverting circuits characterised by logic function, e.g. AND, OR, NOR, NOT circuits
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03KPULSE TECHNIQUE
    • H03K3/00Circuits for generating electric pulses; Monostable, bistable or multistable circuits
    • H03K3/02Generators characterised by the type of circuit or by the means used for producing pulses
    • H03K3/027Generators characterised by the type of circuit or by the means used for producing pulses by the use of logic circuits, with internal or external positive feedback
    • H03K3/037Bistable circuits

Definitions

  • the disclosure generally relates to fixing hold time violations and improving performance of synchronous circuits.
  • Setup time and “hold time” describe the timing requirements on the data input of a sequential logic element, such as a flip-flop or register, with respect to a clock input.
  • the set-up and hold times define a window of time during which data must be stable to guarantee predictable performance over a full range of operating conditions and manufacturing tolerances.
  • the setup time is the minimum amount of time that an input data signal must be held steady before a clock event, such as a rising or falling edge of a clock signal, in order for the state of the data signal to be reliably captured.
  • Hold time is the minimum amount of time the input data signal should be held steady after the clock event in order for the state of the data signal to be reliably captured.
  • a setup time violation which is sometimes referred to as a long path problem, can be remedied by reducing the path length or reducing the clock speed.
  • a hold time violation which is sometimes referred to as a short path problem, can be remedied by increasing the path length or adding delay circuitry to the signal path.
  • circuit timing problems may not be discovered until late in a design flow. That is, after a circuit design has been implemented as a circuit, errors may be discovered during testing. Fixing the circuit design at this late stage may be prohibitively expensive.
  • some designs include pipeline registers nearly “everywhere” in the circuit design, for example, at the input and output of each flip-flop. Circuits having pipeline registers at every location may be advantageous for optimizing timing but can be very costly.
  • the disclosed circuit arrangements include a logic circuit, multiple bi-stable circuits, and control circuitry coupled to the bi-stable circuits.
  • Each bi-stable circuit has a data input, a clock input, and an output coupled to the logic circuit.
  • the control circuitry is programmable to selectively connect outputs of the bi-stable circuits or signals at the data inputs of the plurality of bi-stable circuits to inputs of the logic circuit.
  • the control circuitry generates one or more delayed clock signals from the clock signal, and selectively provides one of the one or more delayed clock signals or the clock signal without delay to the clock input of each of the first plurality of bi-stable circuits.
  • Another disclosed circuit arrangement includes a plurality of blocks of programmable logic circuitry. Each block of programmable logic circuitry is configurable to implement a logic function.
  • the programmable interconnect circuitry is configurable to selectively route signals between the plurality of blocks of programmable logic.
  • Interface circuits are coupled to the blocks of programmable logic circuitry, respectively.
  • Each interface circuit includes multiple bi-stable circuits, and control circuitry coupled to the bi-stable circuits.
  • Each bi-stable circuit has a data input, a clock input, and an output coupled to the logic circuit.
  • the control circuitry is programmable to selectively connect outputs of the bi-stable circuits or signals at the data inputs of the plurality of bi-stable circuits to inputs of the logic circuit.
  • the control circuitry generates one or more delayed clock signals from the clock signal, and selectively provides one of the one or more delayed clock signals or the clock signal without delay to the clock input of each of the first plurality of bi-stable circuits.
  • FIG. 1 shows a system having multiple blocks of logic circuitry, each of which has a respective pipeline interface circuit that can be used to enhance performance of the system;
  • FIG. 2 shows a pipeline interface circuit connected to a logic circuit
  • FIG. 3 shows an exemplary implementation of the control circuit of a pipeline interface circuit
  • FIG. 4 shows a pulsed clock signal provided to a latch of a pipeline interface circuit
  • FIG. 5 shows waveforms of clock signals selected for pipelining a critical path according to one approach
  • FIG. 6 shows waveforms of clock signals selected for pipelining a critical path according to another approach
  • FIG. 7 shows waveforms of clock signals that provide pipelining by the pipeline interface circuit and time borrowing for the interface circuit and the logic block
  • FIG. 8 shows one approach in which the pipeline interface circuit can be used to stall fast data paths and prevent hold violations
  • FIG. 9 shows another approach in which the pipeline interface circuit can be used to stall fast data paths and prevent hold violations.
  • FIG. 10 shows a programmable integrated circuit (IC) on which the disclosed circuits and processes may be implemented.
  • IC programmable integrated circuit
  • the disclosed circuits and methods involve interface circuits at the inputs of blocks of logic circuitry.
  • Each interface circuit selectively enables pipelining, selectively time borrows, and/or selectively increases delays on minimum delay paths for the inputs to a block of logic circuitry.
  • Each block of logic circuitry can have an associated interface circuit that individually controls each bit input to the block.
  • the interface circuit can selectively allow input data signals to bypass the interface for input to the block, selectively pipeline the input data signals before input to the block, selectively pipeline the input data signals with a delayed clock signal for time borrowing, and selectively stall fast paths to enable time borrowing on other paths.
  • the interface circuit can also be used to facilitate globally aggressive time borrowing by stalling faster data paths and to more generally fix hold violations. Because placement of the interface registers is concentrated near the inputs of the block of logic circuitry, the interface registers are more likely to share the same control set (clock, clock-enable, and reset) as the block of logic circuitry, thereby reducing the cost of enabling registers as no multiplexers are needed for selection of signals from the control set.
  • each interface circuit is programmable to provide selective pipelining of input signals to a block of logic circuitry.
  • Each interface circuit includes multiple bi-stable circuits and control circuitry.
  • Each of the bi-stable circuits is coupled to receive an input data signal and coupled to output a data signal to an input of the block of logic circuitry.
  • the control circuitry controls the clock signal to the bi-stable circuits.
  • the control circuitry is programmable to selectively provide a delayed clock signal or the clock signal without delay to the clock input of each of the bi-stable circuits.
  • the control circuitry is also programmable to selectively connect outputs of the bi-stable circuits or signals at the data inputs of the bi-stable circuits to inputs of the block of logic circuitry.
  • FIG. 1 shows a system having multiple blocks of logic circuitry, each of which has a respective pipeline interface circuit that can be used to enhance performance of the system.
  • the system includes multiple blocks of logic circuitry, which are shown as blocks 102 , 104 , 106 , 108 , and which may be referred to as “logic circuits” or “logic blocks.”
  • Each block of logic circuitry includes combinational logic, which can be either hardwired logic or programmable logic circuitry.
  • Hardwired logic is a circuit having a fixed logic function.
  • Programmable logic can be configured to implement different combinational logic functions by storing configuration data in a configuration memory, which configures the states of look-up tables and routing circuitry, for example.
  • a block of logic circuitry may be alternatively referred to as a “logic circuit” or a “logic block” herein.
  • Each of the logic blocks has an associated set of one or more output flip-flops (“FFs”) for registering the state of output signals.
  • the sets of output flip-flops are shows as blocks 110 , 112 , 114 , and 118 .
  • the output signals from each set of FFs 110 , 112 , 114 , and 116 may be connected to the inputs of one or more of the logic blocks or to output pins of an IC die, depending on the implemented circuit.
  • a particular implemented circuit might have the output signals from output FFs 110 connected to the inputs of logic circuit 106 through the pipeline interface circuit 122 .
  • the connections may be hardwired, such as in an application specific integrated circuit (ASIC) implementation, or programmable such as in a field programmable gate array (FPGA) implementation.
  • ASIC application specific integrated circuit
  • FPGA field programmable gate array
  • Each of the logic blocks has an associated pipeline interface circuit that can be used to selectively pipeline and control the timing of input signals to the logic block.
  • Pipeline interface circuit 118 is coupled to the inputs of logic block 102
  • pipeline interface circuit 120 is coupled to the inputs of logic block 104
  • pipeline interface circuit 122 is coupled to the inputs of logic block 106
  • pipeline interface circuit 124 is coupled to the inputs of logic block 108 .
  • Each input signal to the logic block can be controlled individually by the associated pipeline interface circuit.
  • the pipeline interface circuit can pipeline one input signal and bypass pipelining of another input signal.
  • the pipeline interface circuit can individually control the timing of the input signals.
  • Each pipeline interface circuit includes a set of bi-stable circuits, which can be either level-sensitive latches or edge-triggered flip-flops.
  • the pipeline interface circuit uses the bi-stable circuits in selectively pipelining signals to the associated logic block.
  • Each of the pipeline interface circuits generates different clock signals from an input clock signal 126 .
  • each pipeline interface circuit can generate a pulsed clock signal, a delayed pulse clock signal, and a wide pulse clock signal and selectively provide the clock signals to the set of bi-stable circuits in the pipeline interface circuit.
  • each pipeline interface circuit can provide a selected clock signal to the output FFs associated with the logic block to which the pipeline interface circuit controls input signals.
  • each pipeline interface circuit can selectively provide a delayed version of clock signal 126 or a non-delayed version of clock signal 126 to the clock inputs of the output FFs.
  • FIG. 1 generally illustrates a physical layout of logic blocks and the associated sets of output FFs and associated pipeline interface circuits.
  • Each pipeline interface circuit is disposed proximate the inputs of the associated logic block. That is, the pipeline interface circuit associated with a logic block is placed adjacent to the logic block on an IC die. No other logic blocks, FFs, memories, etc., are disposed between the pipeline interface circuit and the associated logic block. Because the pipeline interface circuit is disposed proximate the inputs of the associated logic block, the bank of bi-stable circuits in the pipeline interface circuit are more likely to share the same control set (clock, clock-enable, and reset) as the associated logic block, thereby eliminating the resources needed to route the control set from a distant register to the logic block.
  • FIG. 2 shows a pipeline interface circuit connected to a logic circuit 202 .
  • the pipeline interface circuit includes a set of bi-stable circuits, such as latches 204 , 206 , 208 , . . . , 210 and control circuitry.
  • the control circuitry of the pipeline interface circuit includes control circuit 212 and multiplexers 214 , 216 , 218 , . . . 220 , along with signal line connections from the control circuit 212 to the latches and multiplexers.
  • the pipeline interface circuit is configurable to selectively bypass a latch for asynchronous feedthrough of an input signal, pipeline non-timing-critical signals to the logic circuit, pipeline timing-critical signals to the logic circuit, pipeline and time shift signals to the logic circuit, and stall data signals to fix hold violations and enable more aggressive time borrowing.
  • edge-triggered flip-flops can be substituted for the latches 204 , 206 , 208 , . . . , 210 , with the control circuit 212 no longer utilizing a pulse generator.
  • the control circuit 212 provides respective control signals to the multiplexers 214 , 216 , 218 , . . . 220 for selectively pipelining the input signals to the logic circuit.
  • the single control line 236 represents the multiple control signals to the multiplexers.
  • the control circuit controls the associated multiplexer to select the output signal from the latch.
  • the control circuit controls the associated multiplexer to select the signal that bypasses the latch.
  • the control circuit signals multiplexer 214 to select the output signal from latch 204 .
  • the control circuit can control selection of input signals 222 , 224 , 226 , . . . 228 or the pipelined versions individually and separate from one another.
  • the control circuit can include respective configuration memory cells that are programmable to control the selection of pipelined or non-pipelined signals.
  • the control circuit 212 is further configured to generate multiple different clock signals based on the input clock signal 126 .
  • the control circuit 212 generates a pulsed clock signal, a delayed pulsed clock signal, and a wide pulse clock signal.
  • the control circuit selects one of the clock signals to connect to the clock input of the latch.
  • the selections of the clock signals for connecting to the latches are independent of one another. That is, different latches can be provided with different ones of the generated clock signals.
  • the selected clock signals are shown by line 240 that connects to the clock input of latch 210 and the lines to the clock inputs of the other latches 204 , 206 , and 208 .
  • the pipeline interface circuit can be configured to provide a selected clock signal, which is shown as signal line 238 , to the clock inputs of the output flip-flops 230 , 232 , . . . , 234 .
  • the control circuit is configurable to borrow time for the logic circuit 202 as well as the downstream logic circuit (not shown) driven by the output signals from the logic circuit 202 and captured in the flip-flops 230 , 232 , . . . , 234 .
  • the control circuit is programmable to selectively provide either the clock signal or a delayed version of the clock signal to the clock input of each of the output flip-flops 230 , 232 , . . . , 234 .
  • FIG. 3 shows an exemplary implementation of the control circuit 212 of a pipeline interface circuit.
  • the control circuit generally generates multiple alternative clock signals from an input clock signal 126 and selects one of the clock signals for input to the clock input of each of the latches 204 , . . . , 210 .
  • the clock signal 126 is routed on one clock path to wide pulse generator 302 .
  • the wide pulse generator is a circuit that generates a clock pulse having a pulse width that is greater than the pulse width of the clock signals generated by narrow pulse generators 304 and 306 .
  • the wide pulse clock signal can be selected in order to time borrow on a desired path the amount of time of the width of the pulse.
  • the clock signal 126 is also routed on another clock path to delay circuit 308 , which phase shifts the clock signal 126 to produce a delayed version of the clock signal 126 .
  • the delay circuit is programmable to introduce a desired amount of delay to the clock signal.
  • the delayed version of the clock signal is routed to the narrow pulse generator 304 , which produces a narrow pulse from the delayed clock signal.
  • the pulse width of the clock signal produced by the narrow pulse generator 304 is narrower than the pulse width of the clock signal 126 .
  • the clock signal 126 is routed on yet another clock path to narrow pulse generator 306 .
  • the narrow pulse generator receives one of two clock signals as selected by multiplexer 310 , and generates a narrow pulse clock signal from the selected clock signal.
  • the pulse width of the clock signal produced by the narrow pulse generator 306 is narrower than the pulse width of the clock signal 126 .
  • the multiplexer 310 selects between the output inverted clock signal from inverter 312 and the input clock signal 126 .
  • the narrow pulse generator produces a narrow pulse of the input clock signal or a narrow pulse during the negative phase of the input clock signal 126 .
  • the control circuit 212 includes multiplexers 314 , 316 , 318 , 320 , . . . , 322 and clock selection control circuit 324 for selecting clocks signals for the latches 204 , . . . , 210 .
  • the multiple levels of multiplexers can be used to reduce routing requirements for delivering the different clock signals to the latches.
  • the each of the multiplexers 314 , 316 , and 318 selects from a subset of the generated clock signals, and collectively, the multiplexers 314 , 316 , and 318 provide a subset of the clock signal from which clock signals can be selected for the latches.
  • multiplexer 314 selects from the wide pulse clock signal from wide pulse generator 302 , the delayed narrow pulse clock signal from narrow pulse generator 304 , and the narrow pulse clock signal from narrow pulse generator 306 .
  • Each of multiplexers 320 , 322 selects a clock signal from a subset of clock signals provided by multiplexers 314 , . . . , 316 , 318 .
  • multiplexer 320 can select from clock signals i, j, and k, where clock i, clock j, and clock k include three of the clock signals from clock 1, . . . , clock N, and block clock.
  • “Block clock” is the clock signal selected to drive the logic block associated with the pipeline interface circuit.
  • the clock selection control circuit 324 controls selection of the clock signals by the multiplexers 314 , . . . , 316 , 318 , 320 , . . . , 322 .
  • the clock selection control can include configuration memory cells that are programmable with values that control the selections.
  • FIGS. 4-9 show the different clock signals that can be generated and selected for the bi-stable circuits of the pipeline interface circuits and the output flip-flops of the associated logic block.
  • FIG. 4 shows a pulsed clock signal provided to a latch of a pipeline interface circuit.
  • the narrow pulse clock signal applied to the clock input of a latch between the transmit flip-flop and the receive flip-flop can be used to provide pipelining of a non-critical path and thereby potentially improve performance.
  • Waveform 402 shows the clock signal at the transmit flip-flop
  • waveform 404 shows the narrow pulse clock signal provided to a latch in the pipeline interface circuit
  • waveform 406 shows the clock at the receiving flip-flop.
  • FIG. 5 shows waveforms of clock signals selected for pipelining a critical path according to one approach
  • FIG. 6 shows waveforms of clock signals selected for pipelining a critical path according to another approach.
  • Two differences between pipelining critical versus non-critical paths are that 1) critical paths can often benefit from borrowing time from the subsequent pipeline stage; and 2) non-critical paths may have shorter paths which can cause hold time violations with time borrowing. Thus, it is desirable to delay the clock pulse to critical paths but not to non-critical paths.
  • FIGS. 5 and 6 illustrate two approaches for time borrowing.
  • waveform 408 shows a delayed pulsed clock signal provided to a latch of a pipeline interface circuit
  • waveform 410 shows a wide pulse clock signal provided to the latch of a pipeline interface circuit. Note that the pulse width of the clock signal 408 ( FIG. 5 ) is narrower than the pulse width of clock signal 410 ( FIG. 6 ).
  • Each disclosed pipeline interface circuit can also be used to borrow time for the associated logic block as well as the pipeline interface. Time borrowing for both the interface circuit and the logic block can be useful if the data path delay between pipeline interface and logic block is too large and does not have timing slack for time-borrowing, but the next path originating from the same logic block to the next is short.
  • FIG. 7 shows waveforms of clock signals that provide pipelining by the pipeline interface circuit and time borrowing for the interface circuit and the logic block.
  • Waveform 412 shows a delayed pulse clock signal at a latch in the pipeline interface circuit
  • waveform 414 shows the delayed clock signal at the output flip-flop of the logic block.
  • FIGS. 8 and 9 show how the pipeline interface circuit can be used to stall fast data paths and prevent hold violations according to alternative approaches.
  • waveform 416 shows that the delayed pulse clock signal is delayed to a latch in the pipeline interface circuit by an amount that that is beyond the metastable region of the arrival of an input data signal.
  • waveform 418 shows that the delayed pulse clock signal is delayed to the negative edge of the clock signal at the transmit flip-flop (waveform 402 ), which delays the clock beyond the metastable region of the arrival of an input data signal.
  • FIG. 10 shows a programmable integrated circuit (IC) 500 on which the disclosed circuits and processes may be implemented.
  • the programmable IC may also be referred to as a System On Chip (SOC) that includes field programmable gate array logic (FPGA) along with other programmable resources.
  • FPGA logic may include several different types of programmable logic blocks in the array. For example, FIG.
  • FIG. 10 illustrates programmable IC 500 that includes a large number of different programmable tiles including multi-gigabit transceivers (MGTs) 501 , configurable logic blocks (CLBs) 502 , random access memory blocks (BRAMs) 503 , input/output blocks (IOBs) 504 , configuration and clocking logic (CONFIG/CLOCKS) 505 , digital signal processing blocks (DSPs) 506 , specialized input/output blocks (I/O) 507 , for example, clock ports, and other programmable logic 508 such as digital clock managers, analog-to-digital converters, system monitoring logic, and so forth.
  • Some programmable IC having FPGA logic also include dedicated processor blocks (PROC) 510 and internal and external reconfiguration ports (not shown).
  • PROC dedicated processor blocks
  • each programmable tile includes a programmable interconnect element (INT) 511 having standardized connections to and from a corresponding interconnect element in each adjacent tile. Therefore, the programmable interconnect elements taken together implement the programmable interconnect structure for the illustrated FPGA logic.
  • the programmable interconnect element INT 511 also includes the connections to and from the programmable logic element within the same tile, as shown by the examples included at the top of FIG. 10 .
  • a CLB 502 can include a configurable logic element (CLE) 512 that can be programmed to implement user logic, plus a single programmable interconnect element INT 511 .
  • a BRAM 503 can include a BRAM logic element (BRL) 513 in addition to one or more programmable interconnect elements.
  • BRAM logic element BRAM logic element
  • the number of interconnect elements included in a tile depends on the height of the tile. The illustrated BRAM tile has the same height as five CLBs, but other numbers (e.g., four) can also be used.
  • a DSP tile 506 can include a DSP logic element (DSPL) 514 in addition to an appropriate number of programmable interconnect elements.
  • DSPL DSP logic element
  • An 10 B 504 can include, for example, two instances of an input/output logic element (IOL) 515 in addition to one instance of the programmable interconnect element INT 511 .
  • IOL input/output logic element
  • INT programmable interconnect element
  • a columnar area near the center of the die (shown shaded in FIG. 10 ) is used for configuration, clock, and other control logic. Horizontal areas 509 extending from this column are used to distribute the clocks and configuration signals across the breadth of the programmable IC. Note that the references to “columnar” and “horizontal” areas are relative to viewing the drawing in a portrait orientation.
  • Some programmable ICs utilizing the architecture illustrated in FIG. 10 include additional logic blocks that disrupt the regular columnar structure making up a large part of the programmable IC.
  • the additional logic blocks can be programmable blocks and/or dedicated logic.
  • the processor block PROC 510 shown in FIG. 10 spans several columns of CLBs and BRAMs.
  • FIG. 10 is intended to illustrate only an exemplary programmable IC architecture.
  • the numbers of logic blocks in a column, the relative widths of the columns, the number and order of columns, the types of logic blocks included in the columns, the relative sizes of the logic blocks, and the interconnect/logic implementations included at the top of FIG. 10 are purely exemplary.
  • more than one adjacent column of CLBs is typically included wherever the CLBs appear, to facilitate the efficient implementation of user logic.
  • circuits and methods are thought to be applicable to a variety of systems for optimizing timing of integrated circuits. Other aspects and features will be apparent to those skilled in the art from consideration of the specification.
  • the circuits and methods may be implemented as an application specific integrated circuit (ASIC) or as programmable logic. It is intended that the specification and drawings be considered as examples only, with a true scope of the invention being indicated by the following claims.

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Mathematical Physics (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Design And Manufacture Of Integrated Circuits (AREA)
  • Logic Circuits (AREA)

Abstract

The disclosed circuit arrangements include a logic circuit, multiple bi-stable circuits, and control circuitry coupled to the bi-stable circuits. Each bi-stable circuit has a data input, a clock input, and an output coupled to the logic circuit. The control circuitry is programmable to selectively connect outputs of the bi-stable circuits or signals at the data inputs of the plurality of bi-stable circuits to inputs of the logic circuit. The control circuitry generates one or more delayed clock signals from the clock signal, and selectively provides one of the one or more delayed clock signals or the clock signal without delay to the clock input of each of the first plurality of bi-stable circuits.

Description

    TECHNICAL FIELD
  • The disclosure generally relates to fixing hold time violations and improving performance of synchronous circuits.
  • BACKGROUND
  • “Setup time” and “hold time” describe the timing requirements on the data input of a sequential logic element, such as a flip-flop or register, with respect to a clock input. The set-up and hold times define a window of time during which data must be stable to guarantee predictable performance over a full range of operating conditions and manufacturing tolerances. The setup time is the minimum amount of time that an input data signal must be held steady before a clock event, such as a rising or falling edge of a clock signal, in order for the state of the data signal to be reliably captured. Hold time is the minimum amount of time the input data signal should be held steady after the clock event in order for the state of the data signal to be reliably captured. A setup time violation, which is sometimes referred to as a long path problem, can be remedied by reducing the path length or reducing the clock speed. A hold time violation, which is sometimes referred to as a short path problem, can be remedied by increasing the path length or adding delay circuitry to the signal path.
  • Some circuit timing problems may not be discovered until late in a design flow. That is, after a circuit design has been implemented as a circuit, errors may be discovered during testing. Fixing the circuit design at this late stage may be prohibitively expensive. In an effort to address late-discovered timing problems, some designs include pipeline registers nearly “everywhere” in the circuit design, for example, at the input and output of each flip-flop. Circuits having pipeline registers at every location may be advantageous for optimizing timing but can be very costly.
  • SUMMARY
  • The disclosed circuit arrangements include a logic circuit, multiple bi-stable circuits, and control circuitry coupled to the bi-stable circuits. Each bi-stable circuit has a data input, a clock input, and an output coupled to the logic circuit. The control circuitry is programmable to selectively connect outputs of the bi-stable circuits or signals at the data inputs of the plurality of bi-stable circuits to inputs of the logic circuit. The control circuitry generates one or more delayed clock signals from the clock signal, and selectively provides one of the one or more delayed clock signals or the clock signal without delay to the clock input of each of the first plurality of bi-stable circuits.
  • Another disclosed circuit arrangement includes a plurality of blocks of programmable logic circuitry. Each block of programmable logic circuitry is configurable to implement a logic function. The programmable interconnect circuitry is configurable to selectively route signals between the plurality of blocks of programmable logic. Interface circuits are coupled to the blocks of programmable logic circuitry, respectively. Each interface circuit includes multiple bi-stable circuits, and control circuitry coupled to the bi-stable circuits. Each bi-stable circuit has a data input, a clock input, and an output coupled to the logic circuit. The control circuitry is programmable to selectively connect outputs of the bi-stable circuits or signals at the data inputs of the plurality of bi-stable circuits to inputs of the logic circuit. The control circuitry generates one or more delayed clock signals from the clock signal, and selectively provides one of the one or more delayed clock signals or the clock signal without delay to the clock input of each of the first plurality of bi-stable circuits.
  • Other features will be recognized from consideration of the Detailed Description and Claims, which follow.
  • BRIEF DESCRIPTION OF THE DRAWINGS
  • Various aspects and features of the circuitry will become apparent upon review of the following detailed description and upon reference to the drawings in which:
  • FIG. 1 shows a system having multiple blocks of logic circuitry, each of which has a respective pipeline interface circuit that can be used to enhance performance of the system;
  • FIG. 2 shows a pipeline interface circuit connected to a logic circuit;
  • FIG. 3 shows an exemplary implementation of the control circuit of a pipeline interface circuit;
  • FIG. 4 shows a pulsed clock signal provided to a latch of a pipeline interface circuit;
  • FIG. 5 shows waveforms of clock signals selected for pipelining a critical path according to one approach;
  • FIG. 6 shows waveforms of clock signals selected for pipelining a critical path according to another approach;
  • FIG. 7 shows waveforms of clock signals that provide pipelining by the pipeline interface circuit and time borrowing for the interface circuit and the logic block;
  • FIG. 8 shows one approach in which the pipeline interface circuit can be used to stall fast data paths and prevent hold violations;
  • FIG. 9 shows another approach in which the pipeline interface circuit can be used to stall fast data paths and prevent hold violations; and
  • FIG. 10 shows a programmable integrated circuit (IC) on which the disclosed circuits and processes may be implemented.
  • DETAILED DESCRIPTION
  • In the following description, numerous specific details are set forth to describe specific examples presented herein. It should be apparent, however, to one skilled in the art, that one or more other examples and/or variations of these examples may be practiced without all the specific details given below. In other instances, well known features have not been described in detail so as not to obscure the description of the examples herein. For ease of illustration, the same reference numerals may be used in different diagrams to refer to the same elements or additional instances of the same element.
  • The disclosed circuits and methods involve interface circuits at the inputs of blocks of logic circuitry. Each interface circuit selectively enables pipelining, selectively time borrows, and/or selectively increases delays on minimum delay paths for the inputs to a block of logic circuitry. Each block of logic circuitry can have an associated interface circuit that individually controls each bit input to the block. The interface circuit can selectively allow input data signals to bypass the interface for input to the block, selectively pipeline the input data signals before input to the block, selectively pipeline the input data signals with a delayed clock signal for time borrowing, and selectively stall fast paths to enable time borrowing on other paths.
  • By concentrating registers in an interface circuit near the inputs to blocks of logic circuitry and coupling the registers to clock delay elements to borrow time, much of the advantage of having pipeline registers nearly everywhere can be achieved without the high cost by forcing registers near the inputs to behave as if the registers were placed nearer the source flip-flop on a given path. The interface circuit can also be used to facilitate globally aggressive time borrowing by stalling faster data paths and to more generally fix hold violations. Because placement of the interface registers is concentrated near the inputs of the block of logic circuitry, the interface registers are more likely to share the same control set (clock, clock-enable, and reset) as the block of logic circuitry, thereby reducing the cost of enabling registers as no multiplexers are needed for selection of signals from the control set.
  • In an effort to improve performance of integrated circuitry, the interface circuits are provided proximate blocks of logic circuitry. Each interface circuit is programmable to provide selective pipelining of input signals to a block of logic circuitry. Each interface circuit includes multiple bi-stable circuits and control circuitry. Each of the bi-stable circuits is coupled to receive an input data signal and coupled to output a data signal to an input of the block of logic circuitry. The control circuitry controls the clock signal to the bi-stable circuits. The control circuitry is programmable to selectively provide a delayed clock signal or the clock signal without delay to the clock input of each of the bi-stable circuits. The control circuitry is also programmable to selectively connect outputs of the bi-stable circuits or signals at the data inputs of the bi-stable circuits to inputs of the block of logic circuitry.
  • FIG. 1 shows a system having multiple blocks of logic circuitry, each of which has a respective pipeline interface circuit that can be used to enhance performance of the system. The system includes multiple blocks of logic circuitry, which are shown as blocks 102, 104, 106, 108, and which may be referred to as “logic circuits” or “logic blocks.” Each block of logic circuitry includes combinational logic, which can be either hardwired logic or programmable logic circuitry. Hardwired logic is a circuit having a fixed logic function. Programmable logic can be configured to implement different combinational logic functions by storing configuration data in a configuration memory, which configures the states of look-up tables and routing circuitry, for example. A block of logic circuitry may be alternatively referred to as a “logic circuit” or a “logic block” herein.
  • Each of the logic blocks has an associated set of one or more output flip-flops (“FFs”) for registering the state of output signals. The sets of output flip-flops are shows as blocks 110, 112, 114, and 118. The output signals from each set of FFs 110, 112, 114, and 116 may be connected to the inputs of one or more of the logic blocks or to output pins of an IC die, depending on the implemented circuit. For example, a particular implemented circuit might have the output signals from output FFs 110 connected to the inputs of logic circuit 106 through the pipeline interface circuit 122. The connections may be hardwired, such as in an application specific integrated circuit (ASIC) implementation, or programmable such as in a field programmable gate array (FPGA) implementation.
  • Each of the logic blocks has an associated pipeline interface circuit that can be used to selectively pipeline and control the timing of input signals to the logic block. Pipeline interface circuit 118 is coupled to the inputs of logic block 102, pipeline interface circuit 120 is coupled to the inputs of logic block 104, pipeline interface circuit 122 is coupled to the inputs of logic block 106, and pipeline interface circuit 124 is coupled to the inputs of logic block 108. Each input signal to the logic block can be controlled individually by the associated pipeline interface circuit. For example, the pipeline interface circuit can pipeline one input signal and bypass pipelining of another input signal. Similarly, the pipeline interface circuit can individually control the timing of the input signals.
  • Each pipeline interface circuit includes a set of bi-stable circuits, which can be either level-sensitive latches or edge-triggered flip-flops. The pipeline interface circuit uses the bi-stable circuits in selectively pipelining signals to the associated logic block.
  • Each of the pipeline interface circuits generates different clock signals from an input clock signal 126. For example, each pipeline interface circuit can generate a pulsed clock signal, a delayed pulse clock signal, and a wide pulse clock signal and selectively provide the clock signals to the set of bi-stable circuits in the pipeline interface circuit.
  • In another aspect, each pipeline interface circuit can provide a selected clock signal to the output FFs associated with the logic block to which the pipeline interface circuit controls input signals. For example, each pipeline interface circuit can selectively provide a delayed version of clock signal 126 or a non-delayed version of clock signal 126 to the clock inputs of the output FFs.
  • Along with the operational characteristics, FIG. 1 generally illustrates a physical layout of logic blocks and the associated sets of output FFs and associated pipeline interface circuits. Each pipeline interface circuit is disposed proximate the inputs of the associated logic block. That is, the pipeline interface circuit associated with a logic block is placed adjacent to the logic block on an IC die. No other logic blocks, FFs, memories, etc., are disposed between the pipeline interface circuit and the associated logic block. Because the pipeline interface circuit is disposed proximate the inputs of the associated logic block, the bank of bi-stable circuits in the pipeline interface circuit are more likely to share the same control set (clock, clock-enable, and reset) as the associated logic block, thereby eliminating the resources needed to route the control set from a distant register to the logic block.
  • FIG. 2 shows a pipeline interface circuit connected to a logic circuit 202. The pipeline interface circuit includes a set of bi-stable circuits, such as latches 204, 206, 208, . . . , 210 and control circuitry. The control circuitry of the pipeline interface circuit includes control circuit 212 and multiplexers 214, 216, 218, . . . 220, along with signal line connections from the control circuit 212 to the latches and multiplexers. The pipeline interface circuit is configurable to selectively bypass a latch for asynchronous feedthrough of an input signal, pipeline non-timing-critical signals to the logic circuit, pipeline timing-critical signals to the logic circuit, pipeline and time shift signals to the logic circuit, and stall data signals to fix hold violations and enable more aggressive time borrowing. In an alternative implementation, edge-triggered flip-flops can be substituted for the latches 204, 206, 208, . . . , 210, with the control circuit 212 no longer utilizing a pulse generator.
  • The control circuit 212 provides respective control signals to the multiplexers 214, 216, 218, . . . 220 for selectively pipelining the input signals to the logic circuit. The single control line 236 represents the multiple control signals to the multiplexers. To pipeline an input signal to the logic circuit 202, the control circuit controls the associated multiplexer to select the output signal from the latch. To bypass pipelining, the control circuit controls the associated multiplexer to select the signal that bypasses the latch. For example, to pipeline the signal 222 for input to the logic circuit, the control circuit signals multiplexer 214 to select the output signal from latch 204. The control circuit can control selection of input signals 222, 224, 226, . . . 228 or the pipelined versions individually and separate from one another. In an exemplary implementation, the control circuit can include respective configuration memory cells that are programmable to control the selection of pipelined or non-pipelined signals.
  • The control circuit 212 is further configured to generate multiple different clock signals based on the input clock signal 126. The control circuit 212 generates a pulsed clock signal, a delayed pulsed clock signal, and a wide pulse clock signal. For each of the latches 204, 206, 208, . . . , 210, the control circuit selects one of the clock signals to connect to the clock input of the latch. The selections of the clock signals for connecting to the latches are independent of one another. That is, different latches can be provided with different ones of the generated clock signals. The selected clock signals are shown by line 240 that connects to the clock input of latch 210 and the lines to the clock inputs of the other latches 204, 206, and 208.
  • In another implementation, the pipeline interface circuit can be configured to provide a selected clock signal, which is shown as signal line 238, to the clock inputs of the output flip- flops 230, 232, . . . , 234. The control circuit is configurable to borrow time for the logic circuit 202 as well as the downstream logic circuit (not shown) driven by the output signals from the logic circuit 202 and captured in the flip- flops 230, 232, . . . , 234. The control circuit is programmable to selectively provide either the clock signal or a delayed version of the clock signal to the clock input of each of the output flip- flops 230, 232, . . . , 234.
  • FIG. 3 shows an exemplary implementation of the control circuit 212 of a pipeline interface circuit. The control circuit generally generates multiple alternative clock signals from an input clock signal 126 and selects one of the clock signals for input to the clock input of each of the latches 204, . . . , 210.
  • The clock signal 126 is routed on one clock path to wide pulse generator 302. The wide pulse generator is a circuit that generates a clock pulse having a pulse width that is greater than the pulse width of the clock signals generated by narrow pulse generators 304 and 306. The wide pulse clock signal can be selected in order to time borrow on a desired path the amount of time of the width of the pulse.
  • The clock signal 126 is also routed on another clock path to delay circuit 308, which phase shifts the clock signal 126 to produce a delayed version of the clock signal 126. The delay circuit is programmable to introduce a desired amount of delay to the clock signal. The delayed version of the clock signal is routed to the narrow pulse generator 304, which produces a narrow pulse from the delayed clock signal. The pulse width of the clock signal produced by the narrow pulse generator 304 is narrower than the pulse width of the clock signal 126.
  • The clock signal 126 is routed on yet another clock path to narrow pulse generator 306. The narrow pulse generator receives one of two clock signals as selected by multiplexer 310, and generates a narrow pulse clock signal from the selected clock signal. The pulse width of the clock signal produced by the narrow pulse generator 306 is narrower than the pulse width of the clock signal 126. The multiplexer 310 selects between the output inverted clock signal from inverter 312 and the input clock signal 126. Thus, depending on the control signal applied to multiplexer 310, the narrow pulse generator produces a narrow pulse of the input clock signal or a narrow pulse during the negative phase of the input clock signal 126.
  • The control circuit 212 includes multiplexers 314, 316, 318, 320, . . . , 322 and clock selection control circuit 324 for selecting clocks signals for the latches 204, . . . , 210. The multiple levels of multiplexers can be used to reduce routing requirements for delivering the different clock signals to the latches. In an exemplary implementation, the each of the multiplexers 314, 316, and 318 selects from a subset of the generated clock signals, and collectively, the multiplexers 314, 316, and 318 provide a subset of the clock signal from which clock signals can be selected for the latches. For example, multiplexer 314 selects from the wide pulse clock signal from wide pulse generator 302, the delayed narrow pulse clock signal from narrow pulse generator 304, and the narrow pulse clock signal from narrow pulse generator 306. Each of multiplexers 320, 322 selects a clock signal from a subset of clock signals provided by multiplexers 314, . . . , 316, 318. For example, multiplexer 320 can select from clock signals i, j, and k, where clock i, clock j, and clock k include three of the clock signals from clock 1, . . . , clock N, and block clock. “Block clock” is the clock signal selected to drive the logic block associated with the pipeline interface circuit.
  • The clock selection control circuit 324 controls selection of the clock signals by the multiplexers 314, . . . , 316, 318, 320, . . . , 322. In an exemplary implementation, the clock selection control can include configuration memory cells that are programmable with values that control the selections.
  • FIGS. 4-9 show the different clock signals that can be generated and selected for the bi-stable circuits of the pipeline interface circuits and the output flip-flops of the associated logic block. FIG. 4 shows a pulsed clock signal provided to a latch of a pipeline interface circuit. The narrow pulse clock signal applied to the clock input of a latch between the transmit flip-flop and the receive flip-flop can be used to provide pipelining of a non-critical path and thereby potentially improve performance. Waveform 402 shows the clock signal at the transmit flip-flop, waveform 404 shows the narrow pulse clock signal provided to a latch in the pipeline interface circuit, and waveform 406 shows the clock at the receiving flip-flop.
  • FIG. 5 shows waveforms of clock signals selected for pipelining a critical path according to one approach, and FIG. 6 shows waveforms of clock signals selected for pipelining a critical path according to another approach. Two differences between pipelining critical versus non-critical paths are that 1) critical paths can often benefit from borrowing time from the subsequent pipeline stage; and 2) non-critical paths may have shorter paths which can cause hold time violations with time borrowing. Thus, it is desirable to delay the clock pulse to critical paths but not to non-critical paths. FIGS. 5 and 6 illustrate two approaches for time borrowing. In FIG. 5, waveform 408 shows a delayed pulsed clock signal provided to a latch of a pipeline interface circuit. In FIG. 6, waveform 410 shows a wide pulse clock signal provided to the latch of a pipeline interface circuit. Note that the pulse width of the clock signal 408 (FIG. 5) is narrower than the pulse width of clock signal 410 (FIG. 6).
  • Each disclosed pipeline interface circuit can also be used to borrow time for the associated logic block as well as the pipeline interface. Time borrowing for both the interface circuit and the logic block can be useful if the data path delay between pipeline interface and logic block is too large and does not have timing slack for time-borrowing, but the next path originating from the same logic block to the next is short.
  • FIG. 7 shows waveforms of clock signals that provide pipelining by the pipeline interface circuit and time borrowing for the interface circuit and the logic block. Waveform 412 shows a delayed pulse clock signal at a latch in the pipeline interface circuit, and waveform 414 shows the delayed clock signal at the output flip-flop of the logic block.
  • FIGS. 8 and 9 show how the pipeline interface circuit can be used to stall fast data paths and prevent hold violations according to alternative approaches. In FIG. 8, waveform 416 shows that the delayed pulse clock signal is delayed to a latch in the pipeline interface circuit by an amount that that is beyond the metastable region of the arrival of an input data signal. In FIG. 9, waveform 418 shows that the delayed pulse clock signal is delayed to the negative edge of the clock signal at the transmit flip-flop (waveform 402), which delays the clock beyond the metastable region of the arrival of an input data signal.
  • FIG. 10 shows a programmable integrated circuit (IC) 500 on which the disclosed circuits and processes may be implemented. The programmable IC may also be referred to as a System On Chip (SOC) that includes field programmable gate array logic (FPGA) along with other programmable resources. FPGA logic may include several different types of programmable logic blocks in the array. For example, FIG. 10 illustrates programmable IC 500 that includes a large number of different programmable tiles including multi-gigabit transceivers (MGTs) 501, configurable logic blocks (CLBs) 502, random access memory blocks (BRAMs) 503, input/output blocks (IOBs) 504, configuration and clocking logic (CONFIG/CLOCKS) 505, digital signal processing blocks (DSPs) 506, specialized input/output blocks (I/O) 507, for example, clock ports, and other programmable logic 508 such as digital clock managers, analog-to-digital converters, system monitoring logic, and so forth. Some programmable IC having FPGA logic also include dedicated processor blocks (PROC) 510 and internal and external reconfiguration ports (not shown).
  • In some FPGA logic, each programmable tile includes a programmable interconnect element (INT) 511 having standardized connections to and from a corresponding interconnect element in each adjacent tile. Therefore, the programmable interconnect elements taken together implement the programmable interconnect structure for the illustrated FPGA logic. The programmable interconnect element INT 511 also includes the connections to and from the programmable logic element within the same tile, as shown by the examples included at the top of FIG. 10.
  • For example, a CLB 502 can include a configurable logic element (CLE) 512 that can be programmed to implement user logic, plus a single programmable interconnect element INT 511. A BRAM 503 can include a BRAM logic element (BRL) 513 in addition to one or more programmable interconnect elements. Typically, the number of interconnect elements included in a tile depends on the height of the tile. The illustrated BRAM tile has the same height as five CLBs, but other numbers (e.g., four) can also be used. A DSP tile 506 can include a DSP logic element (DSPL) 514 in addition to an appropriate number of programmable interconnect elements. An 10 B 504 can include, for example, two instances of an input/output logic element (IOL) 515 in addition to one instance of the programmable interconnect element INT 511. As will be clear to those of skill in the art, the actual I/O bond pads connected, for example, to the I/O logic element 515, are manufactured using metal layered above the various illustrated logic blocks, and typically are not confined to the area of the input/output logic element 515.
  • A columnar area near the center of the die (shown shaded in FIG. 10) is used for configuration, clock, and other control logic. Horizontal areas 509 extending from this column are used to distribute the clocks and configuration signals across the breadth of the programmable IC. Note that the references to “columnar” and “horizontal” areas are relative to viewing the drawing in a portrait orientation.
  • Some programmable ICs utilizing the architecture illustrated in FIG. 10 include additional logic blocks that disrupt the regular columnar structure making up a large part of the programmable IC. The additional logic blocks can be programmable blocks and/or dedicated logic. For example, the processor block PROC 510 shown in FIG. 10 spans several columns of CLBs and BRAMs.
  • Note that FIG. 10 is intended to illustrate only an exemplary programmable IC architecture. The numbers of logic blocks in a column, the relative widths of the columns, the number and order of columns, the types of logic blocks included in the columns, the relative sizes of the logic blocks, and the interconnect/logic implementations included at the top of FIG. 10 are purely exemplary. For example, in an actual programmable IC, more than one adjacent column of CLBs is typically included wherever the CLBs appear, to facilitate the efficient implementation of user logic.
  • Though aspects and features may in some cases be described in individual figures, it will be appreciated that features from one figure can be combined with features of another figure even though the combination is not explicitly shown or explicitly described as a combination.
  • The disclosed circuits and methods are thought to be applicable to a variety of systems for optimizing timing of integrated circuits. Other aspects and features will be apparent to those skilled in the art from consideration of the specification. The circuits and methods may be implemented as an application specific integrated circuit (ASIC) or as programmable logic. It is intended that the specification and drawings be considered as examples only, with a true scope of the invention being indicated by the following claims.

Claims (20)

1. A circuit arrangement comprising:
a logic circuit;
a first plurality of bi-stable circuits, each bi-stable circuit of the first plurality having a data input, a clock input, and an output coupled to the logic circuit;
control circuitry coupled to the first plurality of bi-stable circuits, wherein the control circuitry is programmable to:
receive an input clock signal;
selectively connect, responsive to a first plurality of control signals, outputs of the first plurality of bi-stable circuits or signals at the data inputs of the plurality of bi-stable circuits to inputs of the logic circuit,
generate one or more delayed clock signals from the input clock signal, and
selectively provide, responsive to a second plurality of control signals, one of the one or more delayed clock signals or the input clock signal without delay to the clock input of each of the first plurality of bi-stable circuits.
2. The circuit arrangement of claim 1, wherein the control circuitry is further configured to:
generate a plurality of alternative clock signals from the input clock signal; and
select, for input to the clock input of each of the first plurality of bi-stable circuits, one clock signal of the plurality of alternative clock signals.
3. The circuit arrangement of claim 1, wherein the control circuitry includes:
a first clock path including a delay circuit coupled to receive the input clock signal and configured to generate one of the one or more delayed clock signals, and a first pulse generator coupled to receive the one of the delayed clock signals from the delay circuit, wherein the pulse generator is configured to reduce a pulse width of the one of the delayed clock signals and output a first clock signal;
a second clock path includes a second pulse generator coupled to receive the input clock signal, wherein the pulse generator is configured to reduce a pulse width of the input clock signal and output a second clock signal; and
wherein the control circuitry is further configured to select, for input to the clock input of each of the first plurality of bi-stable circuits, the first clock signal or the second clock signal.
4. The circuit arrangement of claim 1, further comprising:
a second plurality of bi-stable circuits, each bi-stable circuit of the second plurality having a clock input and a data input coupled to receive an output signal of the logic circuit; and
wherein the control circuitry is further programmable to selectively provide the one of the one or more delayed clock signals or the input clock signal without delay to the clock input of each of the second plurality of bi-stable circuits.
5. The circuit arrangement of claim 4, wherein the control circuitry is further programmable to selectively supply the input clock signal having a first pulse width to the first plurality of bi-stable circuits or supply the input clock signal having a second pulse width to the first plurality of bi-stable circuits and to the second plurality of bi-stable circuits, wherein the first pulse width is narrower than the second pulse width.
6. The circuit arrangement of claim 1, wherein the control circuitry includes:
a first clock path including a first delay circuit coupled to receive the input clock signal and configured to generate one of the one or more delayed clock signals, and a first pulse generator coupled to receive the one of the one or more delayed clock signals from the first delay circuit, wherein the first pulse generator is configured to reduce a pulse width of the delayed clock signal and output a first clock signal;
a second clock path includes a second pulse generator coupled to receive the input clock signal, wherein the second pulse generator is configured to reduce a pulse width of the input clock signal and output a second clock signal;
a third clock path including a third pulse generator coupled to receive the input clock signal, wherein the third pulse generator is configured to reduce a pulse width of the delayed clock signal and output a third clock signal having a pulse width greater than a pulse width of the first clock signal; and
wherein the control circuitry is further configured to select, for input to the clock input of each of the first plurality of bi-stable circuits, the first clock signal, the second clock signal, or the third clock signal.
7. The circuit arrangement of claim 6, wherein the second clock path includes:
an inverter coupled to receive the input clock signal and output an inverted clock signal; and
a multiplexer coupled to receive the inverted clock signal and the input clock signal, wherein the multiplexer is configured to select the inverted clock signal or the input clock signal for input to the second pulse generator.
8. The circuit arrangement of claim 1, wherein the first plurality of bi-stable circuits are level-sensitive latches.
9. The circuit arrangement of claim 1, wherein:
the control circuitry includes for each input to the logic circuit, a respective data selection circuit that is programmable independent of each other respective data selection circuit to selectively connect the output of a bi-stable circuit of the first plurality of bi-stable circuits or the signal at the data input the bi-stable circuit to an input of the logic circuit; and
the control circuitry includes for each of the first plurality of bi-stable circuits, a respective clock selection circuit that is programmable independent of each other respective clock selection circuit to selectively provide the one of the one or more delayed clock signals or the input clock signal without delay to the clock input of the bi-stable circuit.
10. The circuit arrangement of claim 1, wherein the first plurality of bi-stable circuits are edge-triggered flip-flops.
11. A circuit arrangement, comprising:
a plurality of blocks of programmable logic circuitry, wherein each block of programmable logic circuitry is configurable to implement a logic function;
programmable interconnect circuitry that is configurable to selectively route signals between the plurality of blocks of programmable logic;
a plurality of interface circuits coupled to the plurality of blocks of programmable logic circuitry, respectively, wherein each interface circuit includes:
a first plurality of bi-stable circuits, each bi-stable circuit of the first plurality having a data input, a clock input, and an output coupled to the respective block of programmable logic circuitry;
control circuitry coupled to the first plurality of bi-stable circuits, wherein the control circuitry is programmable to:
receive an input clock signal;
selectively connect, responsive to a first plurality of control signals, outputs of the first plurality of bi-stable circuits or signals at the data inputs of the plurality of bi-stable circuits to inputs of the respective block of programmable logic circuitry,
generate one or more delayed clock signals from the input clock signal, and
selectively provide, responsive to a second plurality of control signals, one of the one or more delayed clock signals or the input clock signal without delay to the clock input of each of the first plurality of bi-stable circuits.
12. The circuit arrangement of claim 11, wherein the control circuitry is further configured to:
generate a plurality of alternative clock signals from the input clock signal; and
select, for input to the clock input of each of the first plurality of bi-stable circuits, one clock signal of the plurality of alternative clock signals.
13. The circuit arrangement of claim 11, wherein the control circuitry includes:
a first clock path including a delay circuit coupled to receive the input clock signal and configured to generate one of the one or more delayed clock signals, and a first pulse generator coupled to receive the one of the delayed clock signals from the delay circuit, wherein the pulse generator is configured to reduce a pulse width of the one of the delayed clock signals and output a first clock signal;
a second clock path includes a second pulse generator coupled to receive the input clock signal, wherein the pulse generator is configured to reduce a pulse width of the input clock signal and output a second clock signal; and
wherein the control circuitry is further configured to select, for input to the clock input of each of the first plurality of bi-stable circuits, the first clock signal or the second clock signal.
14. The circuit arrangement of claim 11, further comprising:
a second plurality of bi-stable circuits, each bi-stable circuit of the second plurality having a clock input and a data input coupled to receive an output signal of the logic circuit; and
wherein the control circuitry is further programmable to selectively provide the one of the one or more delayed clock signals or the input clock signal without delay to the clock input of each of the second plurality of bi-stable circuits.
15. The circuit arrangement of claim 14, wherein the control circuitry is further programmable to selectively supply the input clock signal having a first pulse width to the first plurality of bi-stable circuits or supply the input clock signal having a second pulse width to the first plurality of bi-stable circuits and to the second plurality of bi-stable circuits, wherein the first pulse width is narrower than the second pulse width.
16. The circuit arrangement of claim 11, wherein the control circuitry includes:
a first clock path including a first delay circuit coupled to receive the input clock signal and configured to generate one of the one or more delayed clock signals, and a first pulse generator coupled to receive the one of the one or more delayed clock signals from the first delay circuit, wherein the first pulse generator is configured to reduce a pulse width of the delayed clock signal and output a first clock signal;
a second clock path includes a second pulse generator coupled to receive the input clock signal, wherein the second pulse generator is configured to reduce a pulse width of the input clock signal and output a second clock signal;
a third clock path including a third pulse generator coupled to receive the input clock signal, wherein the third pulse generator is configured to reduce a pulse width of the delayed clock signal and output a third clock signal having a pulse width greater than a pulse width of the first clock signal; and
wherein the control circuitry is further configured to select, for input to the clock input of each of the first plurality of bi-stable circuits, the first clock signal, the second clock signal, or the third clock signal.
17. The circuit arrangement of claim 16, wherein the second clock path includes:
an inverter coupled to receive the input clock signal and output an inverted clock signal; and
a multiplexer coupled to receive the inverted clock signal and the input clock signal, wherein the multiplexer is configured to select the inverted clock signal or the input clock signal for input to the second pulse generator.
18. The circuit arrangement of claim 11, wherein the first plurality of bi-stable circuits are level-sensitive latches.
19. The circuit arrangement of claim 11, wherein:
the control circuitry includes for each input to the logic circuit, a respective data selection circuit that is programmable independent of each other respective data selection circuit to selectively connect the output of a bi-stable circuit of the first plurality of bi-stable circuits or the signal at the data input the bi-stable circuit to an input of the logic circuit; and
the control circuitry includes for each of the first plurality of bi-stable circuits, a respective clock selection circuit that is programmable independent of each other respective clock selection circuit to selectively provide the one of the one or more delayed clock signals or the input clock signal without delay to the clock input of the bi-stable circuit.
20. The circuit arrangement of claim 11, wherein the first plurality of bi-stable circuits are edge-triggered flip-flops.
US15/836,571 2017-12-08 2017-12-08 Programmable pipeline interface circuit Active 2037-12-09 US10320386B1 (en)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US15/836,571 US10320386B1 (en) 2017-12-08 2017-12-08 Programmable pipeline interface circuit
CN201811504036.8A CN109905116B (en) 2017-12-08 2018-12-10 Programmable pipeline interface circuit

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US15/836,571 US10320386B1 (en) 2017-12-08 2017-12-08 Programmable pipeline interface circuit

Publications (2)

Publication Number Publication Date
US10320386B1 US10320386B1 (en) 2019-06-11
US20190181863A1 true US20190181863A1 (en) 2019-06-13

Family

ID=66697401

Family Applications (1)

Application Number Title Priority Date Filing Date
US15/836,571 Active 2037-12-09 US10320386B1 (en) 2017-12-08 2017-12-08 Programmable pipeline interface circuit

Country Status (2)

Country Link
US (1) US10320386B1 (en)
CN (1) CN109905116B (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990555B1 (en) * 2020-01-06 2021-04-27 Xilinx, Inc. Programmable pipeline at interface of hardened blocks

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11256657B2 (en) * 2019-03-26 2022-02-22 Intel Corporation System, apparatus and method for adaptive interconnect routing
KR20210034219A (en) * 2019-09-20 2021-03-30 에스케이하이닉스 주식회사 Signal generation circuit and semiconductor apparatus using the signal generation circuit
CN112347722B (en) * 2020-11-12 2023-12-26 苏州盛科通信股份有限公司 Method and device for efficiently evaluating chip Feed-through flow number of stages

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090289660A1 (en) * 1999-03-04 2009-11-26 Tony Ngai Interconnection and input/output resources for programmable logic integrated circuit devices
US9007110B1 (en) * 2013-07-08 2015-04-14 Xilinx, Inc. Register circuits and methods of storing data in a register circuit
US9411554B1 (en) * 2009-04-02 2016-08-09 Xilinx, Inc. Signed multiplier circuit utilizing a uniform array of logic blocks
US20160315618A1 (en) * 2015-04-21 2016-10-27 Nec Corporation Logic circuit and method for controlling a setting circuit
US20170117886A1 (en) * 2015-10-21 2017-04-27 Samsung Electronics Co., Ltd. Clock generation circuit having deskew function and semiconductor integrated circuit device including same
US9705505B2 (en) * 2015-08-11 2017-07-11 Taiyo Yuden Co., Ltd. Reconfigurable semiconductor device
US20170353186A1 (en) * 2016-06-02 2017-12-07 Qualcomm Incorporated Low clock power data-gated flip-flop
US9843316B2 (en) * 2016-03-17 2017-12-12 SK Hynix Inc. Integrated circuits relating to transmission data and latch clock signals

Family Cites Families (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5315181A (en) * 1993-07-07 1994-05-24 Maxtor Corporation Circuit for synchronous, glitch-free clock switching
US5598113A (en) * 1995-01-19 1997-01-28 Intel Corporation Fully asynchronous interface with programmable metastability settling time synchronizer
US5751161A (en) * 1996-04-04 1998-05-12 Lsi Logic Corporation Update scheme for impedance controlled I/O buffers
US6937064B1 (en) * 2002-10-24 2005-08-30 Altera Corporation Versatile logic element and logic array block
JP4288066B2 (en) * 2002-12-27 2009-07-01 エヌエックスピー ビー ヴィ Circuit equipment
JP4669258B2 (en) * 2004-10-13 2011-04-13 株式会社アドバンテスト Timing generator and test apparatus
US7583103B2 (en) * 2007-03-30 2009-09-01 Altera Corporation Configurable time borrowing flip-flops
CN101621294B (en) * 2009-07-29 2012-08-08 无锡中星微电子有限公司 Control logical circuit and successive approximation analog-to-digital converter
US9222971B2 (en) * 2013-10-30 2015-12-29 Freescale Semiconductor, Inc. Functional path failure monitor
US9246490B1 (en) * 2014-08-15 2016-01-26 Himax Analogic, Inc. One-shot circuit

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090289660A1 (en) * 1999-03-04 2009-11-26 Tony Ngai Interconnection and input/output resources for programmable logic integrated circuit devices
US9411554B1 (en) * 2009-04-02 2016-08-09 Xilinx, Inc. Signed multiplier circuit utilizing a uniform array of logic blocks
US9007110B1 (en) * 2013-07-08 2015-04-14 Xilinx, Inc. Register circuits and methods of storing data in a register circuit
US20160315618A1 (en) * 2015-04-21 2016-10-27 Nec Corporation Logic circuit and method for controlling a setting circuit
US9705505B2 (en) * 2015-08-11 2017-07-11 Taiyo Yuden Co., Ltd. Reconfigurable semiconductor device
US20170117886A1 (en) * 2015-10-21 2017-04-27 Samsung Electronics Co., Ltd. Clock generation circuit having deskew function and semiconductor integrated circuit device including same
US9843316B2 (en) * 2016-03-17 2017-12-12 SK Hynix Inc. Integrated circuits relating to transmission data and latch clock signals
US20170353186A1 (en) * 2016-06-02 2017-12-07 Qualcomm Incorporated Low clock power data-gated flip-flop

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10990555B1 (en) * 2020-01-06 2021-04-27 Xilinx, Inc. Programmable pipeline at interface of hardened blocks

Also Published As

Publication number Publication date
US10320386B1 (en) 2019-06-11
CN109905116A (en) 2019-06-18
CN109905116B (en) 2023-12-01

Similar Documents

Publication Publication Date Title
US10320386B1 (en) Programmable pipeline interface circuit
US7583103B2 (en) Configurable time borrowing flip-flops
US8015530B1 (en) Method of enabling the generation of reset signals in an integrated circuit
US8058905B1 (en) Clock distribution to facilitate gated clocks
EP3729646B1 (en) Circuit for selectively providing clock signals
US9685957B2 (en) System reset controller replacing individual asynchronous resets
US7284143B2 (en) System and method for reducing clock skew
US20170161419A1 (en) Folding duplicate instances of modules in a circuit design
US9606572B2 (en) Circuits for and methods of processing data in an integrated circuit device
US10515047B1 (en) Pipelined data channel with ready/valid handshaking
US20200177170A1 (en) Clock pulse generator
US8988125B1 (en) Circuits for and methods of routing signals in an integrated circuit
US10049177B1 (en) Circuits for and methods of reducing power consumed by routing clock signals in an integrated
JP6602849B2 (en) Programmable delay circuit block
US9235660B1 (en) Selective addition of clock buffers to a circuit design
US10340898B1 (en) Configurable latch circuit
US10318699B1 (en) Fixing hold time violations using hold time budgets and slacks of setup times
US9729153B1 (en) Multimode multiplexer-based circuit
US8086986B1 (en) Clock boosting systems and methods
Amiri et al. On the timing uncertainty in delay-line-based time measurement applications targeting FPGAs
US9331701B1 (en) Receivers and methods of enabling the calibration of circuits receiving input data
US6381719B1 (en) System and method for reducing clock skew sensitivity of a shift register
US10069486B1 (en) Multimode registers with pulse latches
US20150162918A1 (en) Digital output clock generation
JP2004127012A (en) Synchronous circuit and its design method

Legal Events

Date Code Title Description
AS Assignment

Owner name: XILINX, INC., CALIFORNIA

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:GANUSOV, ILYA K.;GAIDE, BRIAN C.;FRAISSE, HENRI;SIGNING DATES FROM 20171204 TO 20171208;REEL/FRAME:044343/0723

FEPP Fee payment procedure

Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 4