Using Global Clock Networks

Similar documents
Using A54SX72A and RT54SX72S Quadrant Clocks

EEC 216 Lecture #3: Power Estimation, Interconnect, & Architecture. Rajeevan Amirtharajah University of California, Davis

Software Engineering 2DA4. Slides 8: Multiplexors and More

EECS150 - Digital Design Lecture 17 - Combinational Logic Circuits. Limitations on Clock Rate - Review

ECE 448 Lecture 6. Finite State Machines. State Diagrams, State Tables, Algorithmic State Machine (ASM) Charts, and VHDL Code. George Mason University

Ch 9. Sequential Logic Technologies. IX - Sequential Logic Technology Contemporary Logic Design 1

Laboratory Exercise #8 Introduction to Sequential Logic

Lecture 9: Clocking, Clock Skew, Clock Jitter, Clock Distribution and some FM

Clock signal in digital circuit is responsible for synchronizing the transfer to the data between processing elements.

2IN35 VLSI Programming Lab Work Communication Protocols: A Synchronous and an Asynchronous One

MAHALAKSHMI ENGINEERING COLLEGE TIRUCHIRAPALLI

Introduction to the Xilinx Spartan-3E

EE115C Winter 2017 Digital Electronic Circuits. Lecture 19: Timing Analysis

Constraining and Analyzing Source-Synchronous Interfaces

Implementation of Clock Network Based on Clock Mesh

Itanium TM Processor Clock Design

Table of Content. Chapter 11 Dedicated Microprocessors Page 1 of 25

Xarxes de distribució del senyal de. interferència electromagnètica, consum, soroll de conmutació.

Vidyalankar S.E. Sem. III [ETRX] Digital Circuits and Design Prelim Question Paper Solution

EET 310 Flip-Flops 11/17/2011 1

7 Multipliers and their VHDL representation

The Linear-Feedback Shift Register

Lecture 23. Dealing with Interconnect. Impact of Interconnect Parasitics

Dr. Nicola Nicolici COE/EE2DI4 Midterm Test #2 Nov 22, 2006

Lecture 25. Dealing with Interconnect and Timing. Digital Integrated Circuits Interconnect

Chapter 8. Low-Power VLSI Design Methodology

INTEGRATED CIRCUITS. For a complete data sheet, please also download:

PALCE22V10 and PALCE22V10Z Families

2. Accelerated Computations

MASSACHUSETTS INSTITUTE OF TECHNOLOGY Department of Electrical Engineering and Computer Sciences

CPE/EE 422/522. Chapter 1 - Review of Logic Design Fundamentals. Dr. Rhonda Kay Gaede UAH. 1.1 Combinational Logic

Luleå Tekniska Universitet Kurskod SMD098 Tentamensdatum

ALU, Latches and Flip-Flops

Written exam with solutions IE1204/5 Digital Design Friday 13/

Issues on Timing and Clocking

Vidyalankar S.E. Sem. III [CMPN] Digital Logic Design and Analysis Prelim Question Paper Solution

Boolean Logic Continued Prof. James L. Frankel Harvard University

ECE 3401 Lecture 23. Pipeline Design. State Table for 2-Cycle Instructions. Control Unit. ISA: Instruction Specifications (for reference)

Reduced-Area Constant-Coefficient and Multiple-Constant Multipliers for Xilinx FPGAs with 6-Input LUTs

LOGIC CIRCUITS. Basic Experiment and Design of Electronics. Ho Kyung Kim, Ph.D.

Skew Management of NBTI Impacted Gated Clock Trees

Written reexam with solutions for IE1204/5 Digital Design Monday 14/

For smaller NRE cost For faster time to market For smaller high-volume manufacturing cost For higher performance

8-BIT SYNCHRONOUS BINARY UP COUNTER

INTEGRATED CIRCUITS. For a complete data sheet, please also download:

3 Logic Function Realization with MSI Circuits

Name: Answers. Mean: 83, Standard Deviation: 12 Q1 Q2 Q3 Q4 Q5 Q6 Total. ESE370 Fall 2015

EXPERIMENT Bit Binary Sequential Multiplier

Problem Set 9 Solutions

NTE74HC299 Integrated Circuit TTL High Speed CMOS, 8 Bit Universal Shift Register with 3 State Output

CMPEN 411 VLSI Digital Circuits Spring 2012 Lecture 17: Dynamic Sequential Circuits And Timing Issues

Programmable Logic Devices II

UMBC. At the system level, DFT includes boundary scan and analog test bus. The DFT techniques discussed focus on improving testability of SAFs.

CSE241 VLSI Digital Circuits Winter Lecture 07: Timing II

On the Tradeoff between Power and Flexibility of FPGA Clock Networks

Digital VLSI Design. Lecture 8: Clock Tree Synthesis

Experiment 9 Sequential Circuits

Combinational Logic. Mantıksal Tasarım BBM231. section instructor: Ufuk Çelikcan

Area-Time Optimal Adder with Relative Placement Generator

ELCT201: DIGITAL LOGIC DESIGN

MODULE 5 Chapter 7. Clocked Storage Elements

Working with combinational logic

Chapter 5 CMOS Logic Gate Design

Programmable Logic Devices

L15: Custom and ASIC VLSI Integration

EE382 Processor Design Winter 1999 Chapter 2 Lectures Clocking and Pipelining

Radiation Induced Multi bit Upsets in Xilinx SRAM Based FPGAs

CB2CE, CB4CE, CB8CE, CB16CE

Appendix B. Review of Digital Logic. Baback Izadi Division of Engineering Programs

Next, we check the race condition to see if the circuit will work properly. Note that the minimum logic delay is a single sum.

EECS150 - Digital Design Lecture 23 - FFs revisited, FIFOs, ECCs, LSFRs. Cross-coupled NOR gates

Metastability. Introduction. Metastability. in Altera Devices

SFI Channel SDR Interface with Bus Alignment Author: Greg Burton

Pipelined Viterbi Decoder Using FPGA

CMSC 313 Lecture 25 Registers Memory Organization DRAM

RAO PAHALD SINGH GROUP OF INSTITUTIONS BALANA(MOHINDER GARH)123029

GMU, ECE 680 Physical VLSI Design 1

King Fahd University of Petroleum and Minerals College of Computer Science and Engineering Computer Engineering Department

Digital Control of Electric Drives

Clock Strategy. VLSI System Design NCKUEE-KJLEE

Stop Watch (System Controller Approach)

COE 328 Final Exam 2008

DS1225Y. 64K Nonvolatile SRAM FEATURES PIN ASSIGNMENT

Managing Physical Design Issues in ASIC Toolflows Complex Digital Systems Christopher Batten February 21, 2006

And Inverter Graphs. and and nand. inverter or nor xor

University of Toronto Faculty of Applied Science and Engineering Department of Electrical and Computer Engineering Midterm Examination

Word-length Optimization and Error Analysis of a Multivariate Gaussian Random Number Generator

Models for representing sequential circuits

UNISONIC TECHNOLOGIES CO., LTD L16B45 Preliminary CMOS IC

Laboratory Exercise #11 A Simple Digital Combination Lock

EECS150 - Digital Design Lecture 23 - FSMs & Counters

MODULE III PHYSICAL DESIGN ISSUES

SERIALLY PROGRAMMABLE CLOCK SOURCE. Features

COE 202: Digital Logic Design Sequential Circuits Part 4. Dr. Ahmad Almulhem ahmadsm AT kfupm Phone: Office:

Written exam for IE1204/5 Digital Design with solutions Thursday 29/

Power Consumption in CMOS CONCORDIA VLSI DESIGN LAB

Timing Issues. Digital Integrated Circuits A Design Perspective. Jan M. Rabaey Anantha Chandrakasan Borivoje Nikolić. January 2003

Pin Details of Digital Logic Gates:

Product Obsolete/Under Obsolescence. Quantization. Author: Latha Pillai

Lecture #4: Potpourri

Transcription:

Using Global Clock Networks Introduction Virtex-II devices support very high frequency designs and thus require low-skew advanced clock distribution. With device density up to 0 million system gates, numerous global clocks are necessary in most designs. Therefore, to provide a uniform and portable solution (soft-ip), all Virtex-II devices from XCV0 to XCV000 have 6 global clock buffers and support 6 global clock domains. Up to eight of these clocks can be used in any quadrant of the device by the synchronous logic elements (that is, registers, Kb block RAM, pipeline multipliers) and the IOBs. The software tools place and route these global clocks automatically. If the design uses between and 6 clocks, it must be partitioned into quadrants, with up to clocks per quadrant. If more than 6 clocks are required, the backbone ( horizontal and vertical long lines routing resources) can be used as additional clock network. In addition to clock distribution, the 6 clock buffers are also glitch-free synchronous : multiplexers. These multiplexers are capable of switching between two asynchronous (or synchronous) clocks at any time. No particular phase relations between the two clocks are needed. The clock multiplexers can also be configured as a global clock buffer with a clock enable. The clock can be stopped High or Low at the clock buffer output. Clock Distribution Resources The various resources available to manage and distribute the clocks include: 6 clock pads that can be used as regular user I/Os if not used as clock inputs. The 6 clock pads can be configured for any I/O standard, including differential standards (for example, LVDS, LVPECL, and so forth). 6 elements that represent the clock inputs in a VHDL or Verilog design. DS elements (that is, attributes LVPECL_33, LVDS_5, LVDS_33, LDT_5, or ULVDS_5) that represent the differential clock input pairs in a VHDL or Verilog design. Each DS replaces two elements. to Digital Clock Managers (s), depending on the device size, to de-skew and generate the clocks. For more information on s, see "Using Digital Clock Managers (s)" on page 75. 6 elements that can consist of up to 6 global clock buffers (BUFG), global clock buffers with a clock enable (BUFGCE), or global clock multiplexers (). Figure - illustrates the placement of these clock resources in Virtex-II devices (the XCV50 through the XCV000) that have eight s. 56 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

GCLK Pads User I/Os User I/Os BRAM Multiplier CLB BRAM Multiplier BRAM Multiplier CLB BRAM Multiplier 6 Clock Domains BRAM Multiplier CLB BRAM Multiplier BRAM Multiplier CLB BRAM Multiplier 3 User I/Os The simple scheme to distribute an external clock in the device is to implement a clock pad with an input buffer connected to a BUFG global buffer, as shown in Figure - and Figure -3. The primary (GCLKP) and secondary (GCLKS) clock pads have no relationship with the P-side and N-side of differential clock inputs. In banks 0 and, the GCLKP corresponds to the N-side, and the GCLKS corresponds to the P-side of a differential clock input. In banks and 5, this correspondence is reversed.. Figure -: GCLK Pads Clock Resources in Virtex-II Devices BUFG User I/Os UG00_C_09_000 A B C D GCLK PAD Clock Input I O I O Clock Distribution DS BUFG GCLKS GCLKP P N I IB O I O Clock Distribution Differential Clock Input Figure -: (Bank 0 and Scheme) UG00_C_05_0060 Simple Clock Distribution (Bank 0 and Scheme) UG00 (v.3) 3 December 00 www.xilinx.com 57 Virtex-II Platform FPGA Handbook -00-55-777

BUFG GCLK PAD Clock Input I O I O Clock Distribution DS BUFG GCLKP GCLKS P N I IB O I O Clock Distribution Differential Clock Input (Bank and 5 Scheme) UG00_C_0_0060 Figure -3: Simple Clock Distribution (Bank and 5 Scheme) Major synthesis tools automatically infer the and BUFG when the corresponding input signal is used as a clock in the VHDL or Verilog code. A high frequency or adapted (frequency, phase, and so forth) clock distribution with low skew is implemented by using a between the output of the and the input of the BUFG, as shown in Figure -. "Using Digital Clock Managers (s)" on page 75 provides details about s and their use. BUFG GCLK Pad I O CLKIN CLX0 I O Clock Distribution CLKFB UG00_C_05_000 Figure -: Clock Distribution with Clock distribution from internal sources is also possible with a BUFG only or with a, as shown in Figure -5. BUFG Logic I O Clock Distribution BUFG Logic CLKIN CLXO I O Clock Distribution CLKFB Figure -5: Internal Logic Driving Clock Distribution UG00_C_06_000 5 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

Global Clock Inputs The clock buffer inputs are fed either by one of the 6 clock pads (refer to the Virtex-II Data Sheet), by the outputs of the, or by local interconnect. Each clock buffer can be a synchronous glitch-free : multiplexer with two clock inputs and one select input. Internal logic (or alternatively a regular IOB) can feed the clock inputs. Any internal or external signal can drive the select input or clock enable input. The possible inputs driving a global clock buffer or multiplexer are summarized in Table -. Table -: Inputs Driving Global Clock Buffers or s Destination Source BUFG(I) or BUFGCE(I) BUFGCE (CE) (I0 or I) (S) (CLKIN) External Clock via (O) Clock Outputs Dedicated in same quadrant Same edge (top or bottom) NA NA Dedicated in same quadrant NA Same edge Same edge (top or bottom) NA interconnect 3 Internal Logic interconnect interconnect interconnect interconnect interconnect 3 3 User I/O Pad via IBUF(O) (not ) BUFG(O) interconnect interconnect interconnect interconnect NA NA NA NA interconnect 3 Global clock net (O) NA NA All BUFG (BUFGCE, ) outputs are available at the quadrant boundaries. The output of the global clock buffer can be routed to non-clock pins. Primary and Secondary Global Multiplexers Each global clock buffer is a self-synchronizing circuit called a clock multiplexer. The 6 global clock buffers or multiplexers are divided as follows: Eight primary clock multiplexers Eight secondary clock multiplexers interconnect No hardware difference exists between a primary and a secondary clock multiplexer. However, some restrictions apply to primary/secondary multiplexers, because they share input connections, as well as access to a quadrant. Each Virtex-II device is divided into four quadrants: North-West, South-West, North-East, and South-East. Each quadrant has two primary and two secondary clock multiplexers. The clock multiplexers are indexed 0 to 7, with one primary and one secondary for each index, alternating on the top and on the bottom (i.e., clock multiplexer 0P at the bottom is facing clock multiplexer 0S at the top). NA Global clock net Notes:. Not all s in the quadrant have a dedicated connection to a specific BUFG. Others would require general interconnect to be hooked up.. Same edge (top or bottom) enables use of dedicated routing resources. 3. Pad to input skew is not compensated. A B C D UG00 (v.3) 3 December 00 www.xilinx.com 59 Virtex-II Platform FPGA Handbook -00-55-777

In each device, the eight top/bottom clock multiplexers are divided into four primary and four secondary, indexed 0 to 7, as shown in Figure -6. 7P 6S 5P S 3P S P 0S NW NE SW SE 7S 6P 5S P 3S P S 0P UG00_C_07_3000 Figure -6: Primary and Secondary Clock Multiplexer Locations Primary/Secondary: Rule Considering two facing clock multiplexers (BUFG#P and BUFG#S), one or the other of these clock outputs can enter any quadrant of the chip to drive a clock within that quadrant, as shown in Figure -7. Note that the clock multiplexers xp and xs compete for quadrant access. For example, BUFG0P output cannot be used in the same quadrant as BUFG0S. P 0S NW NE SW SE S 0P UG00_C_0_3000 Figure -7: Facing BUFG#P and BUFG#S Connections 60 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

Primary/Secondary: Rule In a BUFGCE or configuration, shared inputs have to be considered. Any two adjacent clock multiplexers share two inputs, as shown in Figure -. The clock multiplexer P and 0S have common I0/I and I/I0 inputs. S I I0 P O S I I0 0S O 3 Figure -: UG00_C_09_3000 Clock Multiplexer Pair Sharing Clock Multiplexer Inputs Table - lists the clock multiplexer pairs in any Virtex-II device. The primary multiplexer inputs I/I0 are common with the corresponding secondary multiplexer inputs I0/I (i.e., Primary I input is common with secondary I0 input, and primary I0 input is common with secondary I input). Table -: Top Clock Multiplexer Pairs Primary I/I0 P 3P 5P 7P Secondary I0/I 0S S S 6S Table -3: Bottom Clock Multiplexer Pairs Primary I/I0 0P P P 6P Secondary I0/I S 3S 5S 7S A B C D UG00 (v.3) 3 December 00 www.xilinx.com 6 Virtex-II Platform FPGA Handbook -00-55-777

Primary/Secondary Usage For up to eight global clocks, it is safe to use the eight primary global multiplexers (P, 3P, 5P, 7P on the top and 0P, P, P, 6P on the bottom). Because of the shared inputs, a maximum of eight independent global clock multiplexers can be used in a design, as shown in Figure -9. GCLK7P GCLK5P GCLK3P GCLKP /DS 7P 5P 3P P NW NE clocks clocks clocks clocks clocks SW SE 6P P P 0P /DS GCLK6P GCLKP GCLKP GCLK0P UG00_C_090_3000 Figure -9: Eight Global Clocks Design Clocks The four clock pins () in a quadrant can feed all s in the same edge of the device. The clock-to-out and setup times are identical for all s. Up to four clock outputs per can be used to drive any clock multiplexer on the same edge (top or bottom), as shown in Figure -0. BUFG Exclusivity Each has a restriction on the number of BUFGs it can drive on its (top or bottom) edge. Pairs of buffers with shared dedicated routing resources exist such that only one buffer from each dedicated pair can be driven by a single. The exclusive pairs for each edge are: :5, :6, 3:7, and :. 6 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

GCLK7P GCLK6S GCLK5P GCLKS GCLK3P GCLKS GCLKP GCLK0S 7P 6S 5P S 3P S P 0S Figure -0: Clocks UG00_C_09_0060 3 Clock Output The clock distribution is based on eight clock trees per quadrant. Each clock multiplexer output is driving one global clock net. The Virtex-II device has eight dedicated low-skew clock nets. The device is divided into four quadrants (NW, NE, SW and SE) with eight global clocks available per quadrant. Eight clock buffers are in the middle of the top edge and eight are in the middle of the bottom edge. Any of these 6 clock buffer outputs can be used in any quadrant, up to a maximum of eight clocks per quadrant, as illustrated in Figure -, provided there is not a primary vs. secondary conflict. NW NE NW NE max A B C D 6 Clocks 6 Clocks SW SE SW SE Figure -: Clock Buffer Outputs per Quadrant DS03_5_000 UG00 (v.3) 3 December 00 www.xilinx.com 63 Virtex-II Platform FPGA Handbook -00-55-777

Designs with more than eight clocks must be floorplanned manually or automatically, distributing the clocks in each quadrant. As an example, a design with 6 clocks can be floorplanned as shown in Figure -. CLK_ A B C D E F G H NW NE CLK_C 5P CLK_A 7P CLK_I 7S CLK_H 0S CLK_B 6S CLK_N P CLK_B 6S CLK_E 3P CLK_F S CLK_P 5 clocks 0P CLK_K 5S S CLK_D CLK_O clocks S 6 Clocks CLK_A 7P CLK_G P CLK_A 7P CLK_H 0S CLK_M 3S CLK_C 5P CLK_J 6P 0P CLK_L P CLK_N P CLK_P 7 clocks 3 clocks SW SE CLK_ I J K L M N O P UG00_C_079_000 Figure -: 6-Clock Floorplan The clock nets and clock buffers in this example are associated as shown in Table -. Table -: Clock Net Association With Clock Buffers Clock Net (top edge) CLK_A CLK_B CLK_C CLK_D CLK_E CLK_F CLK_G CLK_H BUFG 7P 6S 5P S 3P S P 0S Clock Net (bottom edge) CLK_I CLK_J CLK_K CLK_L CLK_M CLK_N CLK_O CLK_P BUFG 7S 6P 5S P 3S P S 0P Quadrant NW CLK_A CLK_B CLK_C CLK_F CLK_P Quadrant SW CLK_A CLK_C CLK_L CLK_M CLK_N CLK_G CLK_H Quadrant NE CLK_I CLK_B CLK_K CLK_D CLK_E CLK_N CLK_O CLK_H Quadrant SE CLK_A CLK_J CLK_P 6 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

CLK_A is used in three quadrants, and the other clocks are used in one or two quadrants, regardless of the position of the clock buffers (multiplexers), as long as they are not competing to access the same quadrant. (That is, CLK_A (BUFG7P) cannot be used in the same quadrant with CLK_I (BUFG7S). Refer to "Primary/Secondary: Rule " on page 60.) In other words, two buffers with the same index (0 to 7) cannot be used in the same quadrant. Each register, block RAM, registered multiplier, or DDR register (IOB) can be connected to any of the eight clock nets available in a particular quadrant. Note that if a global clock (primary buffer) is used in four quadrants, the corresponding secondary buffer is not available. Power Consumption Clock trees have been designed for low skew and low-power operation. Any unused branch is disconnected, as shown in Figure -3. NW 6 6 3 6 Clocks SW SE A Figure -3: Low-Power Clock Network Also available to reduce overall power consumption are the BUFGCE feature, for dynamically driving a clock tree only when the corresponding module is used, and the feature, for switching from a high-frequency clock to a low-frequency clock. The frequency synthesizer capability of the can generate the low (or high) frequency clock from a single source clock, as illustrated in Figure -. (See "Using Digital Clock Managers (s)" on page 75). ug00_c_093_3000 B C D 50 MHz CLKIN CLK0 50 MHz I0 CLKFB ( 0) CLKDV 5 MHz I Clock Tree S BUFG UG00_C_09_000 Figure -: Dynamic Power Reduction Scheme UG00 (v.3) 3 December 00 www.xilinx.com 65 Virtex-II Platform FPGA Handbook -00-55-777

Library Primitives and Submodules The primitives in Table -5 are available with the input, output, and control pins listed. Table -5: Clock Primitives Primitive Input Output Control I O DS I, IB O BUFG I O I0, I O S _ I0, I O S Refer to "Using Single-Ended SelectI/O Resources" on page 5 for a list of the attributes available for and Refer to "Using LVDS I/O" on page 37 for a list of the attributes available for DS. The submodules in Table -6 are available with the input, output, and control pins listed. Table -6: Clock Submodules Submodule Input Output Control BUFGCE I O CE BUFGCE_ I O CE Primitive Functions is an input clock buffer with one clock input and one clock output. DS DS is a differential input clock buffer with two clock inputs (positive and negative polarity) and one clock output. BUFG All Virtex-II devices have 6 global clock buffers (each of which can be used as BUFG,, or BUFGCE). BUFG is a global clock buffer with one clock input and one clock output, driving a lowskew clock distribution network. The output follows the input, as shown in Figure -5. BUFG(I) BUFG(O) UG00_C_099_000 Figure -5: BUFG Waveforms BUGMUX and _ (see Figure -6) can switch between two unrelated, even asynchronous clocks. Basically, a Low on S selects the CLK0 input, a High on S selects the S input. Switching from one clock to the other is done in such a way that the output High and Low time is never shorter than the shortest High or Low time of either input clock. As long as the presently selected clock is High, any level change of S has no effect. 66 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

is the preferred circuit for rising edge clocks, while _ is preferred for falling edge clocks. I0 I O Figure -6: Operation of the Circuit S DS03_63_900 Virtex-II or _ Function If the presently selected clock is Low while S changes, or if it goes Low after S has changed, the output is kept Low until the other ("to-be-selected") clock has made a transition from High to Low. At that instant, the new clock starts driving the output. The two clock inputs can be asynchronous with regard to each other, and the S input can change at any time, except for a short setup time prior to the rising edge of the presently selected clock; that is, prior to the rising edge of the output O. Violating this setup time requirement can result in an undefined runt pulse output. Figure -7 shows a switchover from CLK0 to CLK. 3 S Wait for Low CLK0 CLK OUT Switch A B Figure -7: Waveform Diagram DS03_6_900 The current clock is CLK0. S is activated High. If CLK0 is currently High, the multiplexer waits for CLK0 to go Low. Once CLK0 is Low, the multiplexer output stays Low until CLK transitions High to Low. When CLK transitions from High to Low, the output switches to CLK. No glitches or short pulses can appear on the output. C D Operation of the _ Circuit If the presently selected clock is High while S changes, or if it goes High after S has changed, the output is kept High until the other ("to-be-selected") clock has made a transition from Low to High. At that instant, the new clock starts driving the output. The two clock inputs can be asynchronous with regard to each other, and the S input can change at any time, except for a short setup time prior to the falling edge of the presently selected clock; that is, prior to the falling edge of the output O. Violating this setup time requirement can result in an undefined runt pulse output. UG00 (v.3) 3 December 00 www.xilinx.com 67 Virtex-II Platform FPGA Handbook -00-55-777

Figure - shows a switchover from CLK0 to CLK. Wait for High S CLK0 CLK OUT Figure -: DS03_6a_00 _ Waveform Diagram The current clock is CLK0. S is activated High. If CLK0 is currently Low, the multiplexer waits for CLK0 to go High. Once CLK0 is High, the multiplexer output stays High until CLK transitions Low to High. When CLK transitions from Low to High, the output switches to CLK. No glitches or short pulses can appear on the output. Submodules BUFGCE and BUFGCE_ BUFGCE and BUFGCE_ are submodules based on and _, respectively. BUFGCE and BUFGCE_ are global clock buffers incorporating a smart enable function that avoids output glitches or runt pulses. The select signal must meet the setup time for the clock. BUFGCE is the preferred circuit for clocking on the rising edge, while BUFGCE_ is preferred when clocking on the falling edge. Operation of the BUFGCE Circuit If the CE input (see Figure -9) is active (High) prior to the incoming rising clock edge, this Low-to-High-to-Low clock pulse passes through the clock buffer. Any level change of CE during the incoming clock High time has no effect. BUFGCE I O CE DS03_6_000 Figure -9: Virtex-II BUFGCE or BUFGCE_ Function If the CE input is inactive (Low) prior to the incoming rising clock edge, the following clock pulse does not pass through the clock buffer, and the output stays Low. Any level change of CE during the incoming clock High time has no effect. CE must not change during a short setup window just prior to the rising clock edge on the BUFGCE input I. Violating this setup time requirement can result in an undefined runt pulse output. 6 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

This means the output stays Low when the clock is disabled, but it completes the clock- High pulse when the clock is being disabled, as shown in Figure -0. BUFGCE(I) BUFGCE(CE) BUFGCE(O) Wait Low Figure -0: Clock Stops Low BUFGCE Waveforms UG00_C_00_000 Operation of the BUFGCE_ circuit If the CE input is active (High) prior to the incoming falling clock edge, this High-to-Lowto-High clock pulse passes through the clock buffer. Any level change of CE during the incoming clock Low time has no effect. If the CE input is inactive (Low) prior to the incoming falling clock edge, the following clock pulse does not pass through the clock buffer, and the output stays High. Any level change of CE during the incoming clock Low time has no effect. CE must not change during a short setup window just prior to the falling clock edge on the BUFGCE input I. Violating this setup time requirement can result in an undefined runt pulse output. This means the output stays High when the clock is disabled, but it completes the clock- Low pulse when the clock is being disabled, as shown in Figure -. BUFGCE_(I) 3 BUFGCE_(CE) BUFGCE_(O) Switch High Clock Stops High UG00_C_0_000 A Figure -: BUFGCE_ Waveforms When BUFGCE (or BUFGCE_) is used with outputs, a second BUFG can be used for clock feedback. Buffer sharing the inputs with BUFGCE is the preferred solution. Summary Table -7 shows the maximum resources available per Virtex-II device. Table -7: Resources per Virtex-II Device (from XCV0 to XCV000) Resource Maximum Number Single-ended (pads) 6 Differential DS (pairs) BUFG (Global Clock Buffer) 6 BUFGCE (or BUFGCE_) (or _) B C D Characteristics The following are characteristics of global clocks in Virtex-II devices: Low-skew clock distribution. Synchronous glitch-free multiplexer that avoids runt pulses. Switching between two asynchronous clock sources is usually considered unsafe, but it is safe with the Virtex-II global clock multiplexer. UG00 (v.3) 3 December 00 www.xilinx.com 69 Virtex-II Platform FPGA Handbook -00-55-777

Any level change on S must meet a setup time requirement with respect to the signal on the output O (rising edge for, falling edge for _). Any level change on CE must meet a setup time requirement with respect to the signal on the Input I (rising edge for BUFGCE, falling edge for BUFGCE_). Two (or _) resources can be cascaded to create a 3 to clock multiplexer. Location Constraints and _ (primitives) and (DS) instances can have LOC properties attached to them to constrain placement. The LOC properties use the following form to constrain a clock net: NET clock_name LOC= #P/S ; Each clock pad (or ) has a direct connection with a specific global clock multiplexer (input I0). A placement that does not conform to this rule causes the software to send a warning. If the clock pad (or ) has LOC properties attached, the allows place and route software maximum flexibility, as compared to a direct connection to the global clock buffer (BUFG). Secondary Clock Network If more clocks are required, the horizontal and vertical long lines in Virtex-II devices can be used to route additional clock nets. Skew is minimized by the place and route software, if the USELOWSKEWLINES constraint is attached to the net. VHDL and Verilog Instantiation VHDL and Verilog instantiation templates are available as examples (see VHDL and Verilog Templates on page 70) for all primitives and submodules. In VHDL, each template has a component declaration section and an architecture section. Each part of the template should be inserted within the VHDL design file. The port map of the architecture section should include the design signal names. VHDL and Verilog Templates The following are templates for primitives: _INST INST The following are templates for submodules: BUFGCE_SUBM BUFGCE SUBM As examples, the _INST.vhd, INST.vhd, BUFGCE_SUBM.vhd, and BUFGCE SUBM.vhd VHDL templates are shown. In addition, the _INST.v, INST.v, BUFGCE SUBM.v, and BUFGCE_SUBM.v Verilog templates are shown. VHDL Template Module: _INST Description: VHDL instantiation template Global Clock Multiplexer (Switch Low) Device: Virtex-II Family - Component Declarations: 70 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

component port ( I0 : in std_logic; I : in std_logic; S : in std_logic; O : out std_logic end component; Architecture section: Global Clock Buffer Instantiation U_: port map ( I0 =>, insert clock input used when select (S) is Low I =>, insert clock input used when select (S) is High S =>, insert Mux-Select input O => insert clock output - Module: INST Description: VHDL instantiation template Global Clock Multiplexer (Switch High) Device: Virtex-II Family - Component Declarations: component _ port ( I0 : in std_logic; I : in std_logic; S : in std_logic; O : out std_logic end component; Architecture section: Global Clock Buffer Instantiation U : _ port map ( I0 =>, insert clock input used when select (S) is Low I =>, insert clock input used when select (S) is High S =>, insert Mux-Select input O => insert clock output - Module: BUFGCE_SUBM Description: VHDL instantiation template Global Clock Buffer with Clock Enable: Input Clock Buffer to - Clock disabled = Low Device: Virtex-II Family - library IEEE; use IEEE.std_logic_6.all; pragma translate_off library UNISIM; use UNISIM.VCOMPONENTS.ALL; pragma translate_on 3 A B C D UG00 (v.3) 3 December 00 www.xilinx.com 7 Virtex-II Platform FPGA Handbook -00-55-777

entity BUFGCE_SUBM is port ( I: in std_logic; CE: in std_logic; O: out std_logic end BUFGCE_SUBM; architecture BUFGCE_SUBM_arch of BUFGCE_SUBM is Component Declarations: component port ( I0 : in std_logic; I : in std_logic; S : in std_logic; O : out std_logic end component; signal declarations signal GND : std_logic; signal CE_B : std_logic; begin GND <= '0'; CE_B <= not CE; Global Clock Buffer Instantiation U_: port map ( I0 => I, I => GND, S => CE_B, O => O end BUFGCE_SUBM_arch; - Module: BUFGCE SUBM Description: VHDL instantiation template Global Clock Buffer with Clock Enable: Input Clock Buffer to _ - Clock disabled = High Device: Virtex-II Family - library IEEE; use IEEE.std_logic_6.all; pragma translate_off library UNISIM; use UNISIM.VCOMPONENTS.ALL; pragma translate_on entity BUFGCE SUBM is port ( I: in std_logic; CE: in std_logic; O: out std_logic end BUFGCE SUBM; 7 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook

architecture BUFGCE SUBM_arch of BUFGCE SUBM is Component Declarations: component _ port ( I0 : in std_logic; I : in std_logic; S : in std_logic; O : out std_logic end component; signal declarations signal VCC : std_logic; signal CE_B : std_logic; begin VCC <= ''; CE_B <= not CE; Global Clock Buffer Instantiation U : _ port map ( I0 => I, I => VCC, S => CE_B, O => O end BUFGCE SUBM_arch; Verilog Template - Module: _INST Description: Verilog Instantiation Template Global Clock Multiplexer (Switch Low) Device: Virtex-II Family - Instantiation U_ (.I0(), insert clock input used when select(s) is Low.I(), insert clock input used when select(s) is High.S(), insert Mux-Select input.o() insert clock output - Module: INST Description: Verilog Instantiation Template Global Clock Multiplexer (Switch High) Device: Virtex-II Family - _ Instantiation _ U 3 A B C D UG00 (v.3) 3 December 00 www.xilinx.com 73 Virtex-II Platform FPGA Handbook -00-55-777

(.I0(), insert clock input used when select(s) is Low.I(), insert clock input used when select(s) is High.S(), insert Mux-Select input.o() insert clock output - Module: BUFGCE_SUBM Description: Verilog Submodule Global Clock Buffer with Clock Enable: Input Clock Buffer to - Clock disabled = Low Device: Virtex-II Family - module BUFGCE_SUBM (I, CE, O input I, CE; output O; wire GND; assign GND = 'b0; U_ (.I0(I),.I(GND),.S(~CE),.O(O) endmodule - Module: BUFGCE SUBM Description: Verilog Submodule Global Clock Buffer with Clock Enable: Input Clock Buffer to _ - Clock disabled = High Device: Virtex-II Family - module BUFGCE SUBM (I, CE, O input I, CE; output O; wire VCC; assign VCC = 'b; _ U (.I0(I),.I(VCC),.S(~CE),.O(O) endmodule 7 www.xilinx.com UG00 (v.3) 3 December 00-00-55-777 Virtex-II Platform FPGA Handbook