You are using a deprecated Browser. Internet Explorer is no longer supported by Xilinx.
Solutions
Products
Support
Solutions
Products
Support
Solutions by Industry
Aerospace & Defense
Back
Aerospace & Defense
Overview
Avionics & UAV
Digital RADAR/EW
MilCom & SatCom
Space
Automotive
Back
Automotive
Overview
ADAS
Automated Driving
Electrification & Networking
In-Vehicle
Broadcast & Pro A/V
Back
Broadcast & Pro A/V
Overview
AV over IP
Cameras
Converters & KVM
Encoders & Decoders
Professional Audio Systems
Professional Displays & Signage
Projection Systems
Routers & Switchers
Servers & Storage
Transmitters & Modulators
Video Conferencing
Video Processing Card
Consumer Electronics
Back
Consumer Electronics
Overview
Multifunction Printers
Ultra High Definition Televisions
Data Center
Back
Data Center
Overview
Computational Storage
Database & Data Analytics
Financial Technology
High Performance Computing
Network Acceleration
Video & Image Processing
Emulation & Prototyping
Back
Emulation & Prototyping
Overview
ASIC Emulation in Action
FPGA-Based Prototyping
Industrial
Back
Industrial
Overview
3D Printers & Additive Manufacturing
Human Machine Interface
I/O Modules & Smart Sensors
IIoT Gateways & Edge Appliances
Industrial Control with IIoT Edge Nodes
Machine & Computer Vision
Drives & Motor Control
Robotics
Smart Grid
Trains & Railways
Video Surveillance
Healthcare / Medical
Back
Healthcare / Medical
Overview
Clinical Defibrillators & Automated External Defibrillators
Diagnostic & Clinical Endoscopy Processing
Healthcare AI
Medical Imaging with CT, MRI & PET
Medical Imaging with Ultrasound
Multi-parameter Patient Monitors & ECGs
Other Medical Equipment
Robot-assisted Surgery
Safety, Security & Partner Solutions
Test & Measurement
Back
Test & Measurement
Overview
Semiconductor Automated Test Equipment
Test & Measurement Instrumentation
Wired & Wireless Testers
Wired & Wireless Communications
Back
Wired & Wireless Communications
Overview
Network Security
Telco Acceleration
Telecommunications
Wireless
Solutions by Technology
AI Inference Acceleration
Back
AI Inference Acceleration
Why Xilinx AI
Xilinx AI Solutions
Get Started with Xilinx AI
Accelerated Applications
Back
Accelerated Applications
Xilinx App Store
Reference Apps
Solutions
Products
Support
Product Categories
Devices
Back
Devices
Explore Silicon Devices
ACAPs
FPGAs & 3D ICs
SoCs, MPSoCs, & RFSoCs
Cost-Optimized Portfolio
Evaluation Boards & Kits
Back
Evaluation Boards & Kits
Explore Boards & Kits
Evaluation Boards
System-on-Modules (SoMs)
FPGA Mezzanine Cards
Board and Kit Accessories
Accelerators
Back
Accelerators
Data Center Accelerator Cards
Computational Storage
SmartNIC Accelerator
Telco Accelerator
Ethernet Adapters
Back
Ethernet Adapters
8000 Series Ethernet Adapters
X2 Series Ethernet Adapters
Software Development
Back
Software Development Tools
Vitis™ Software Platform
Vitis™ AI
Vitis™ Accelerated Libraries
Legacy Tools
Software Development Resources
Developer Site - developer.xilinx.com
Xilinx Accelerator Program
Xilinx Community Portal
Hardware Development
Back
Hardware Development Tools
Vivado® Design Suite
Intellectual Property
System Generator
Add-On for MATLAB & Simulink
Hardware Development Resources
Silicon Evaluation Boards
Design Hubs
Design and Debug Blog
Embedded Development
Back
Embedded Development
Embedded Software & Ecosystem
Xilinx Wiki Design Examples
Xilinx GitHub
Xilinx Community Portal
Core Technologies
Back
Core Technologies
Explore All Core Technologies
3D ICs
Configuration Solutions
Connectivity
Design Security
DSP
Dynamic Function eXchange
Ethernet
Functional Safety
High Speed Serial
Machine Learning
Memory
MIPI Connectivity for Imaging
PCI Express
Power Efficiency
Processing Solutions
RF Sampling
Signal Integrity
System Monitor and XADC
Accelerated Applications
Back
Accelerated Applications
Xilinx App Store
Reference Apps
Quality & Reliability
Xilinx Quality
Powered By Xilinx
Solutions
Products
Support
Support & Services
Support
Back
Support
Support Home
Knowledge Base
Documentation
Community Forums
Service Portal
Design Hubs
Versal ACAP Design Process Documentation
Downloads & Licensing
Services
Back
Services
Training
Downloads & Licensing
Product Return
University Program
Partner Design Services
Careers
Company
Back
Company
Company Overview
Management Team
Investor Relations
Xilinx Ventures
Community Engagement
Corporate Responsibility
Corporate Briefing Center
Careers
Partners
Back
Partners
Xilinx Partner Program Overview
Accelerator Partner Program
Alveo Accelerator Card Partner Network
Design Service Partners
All Ecosystem Partners
Contact Us
Back
Contact Us
Contact Xilinx
Contact Sales
Corporate Locations
Authorized Distributors
Newsroom & Media
Newsroom
Press Releases
Media Kits
Webinars
Video Portal
Powered By Xilinx
Community
Xilinx Blogs
Events
Community Forums
Shopping Cart
Sub Total
Shipping
Calculated at Checkout
Tax
Calculated at Checkout
Secure Checkout
Your cart is empty
Looks like you have no items in your shopping cart.
Click here
to continue shopping
Account
Login | Register
Sign Out
Shopping Cart
Search
All
Silicon Devices
Boards and Kits
Intellectual Property
Support
Documentation
Knowledge Base
Community Forums
Partners
Videos
Press
Search
Support
AR# 1375: Foundation XVHDL: Using Global Buffers
AR# 1375
Update me on changes via Email
|
Unsubscribe
Foundation XVHDL: Using Global Buffers
Description
Solution
Description
Versions: F6.x, F1.3/F1.4
Urgency: Standard
General Description:
Xilinx FPGAs feature global buffers which provide low skew
and high drive for clocks and other control signals with high
fan-out. Consult the Xilinx Libraries Guide for more
information on the various types of global buffers available
with the various FPGA families.
There are 3 ways to use global buffers with Foundation XVHDL:
1. Automatic Insertion
2. Xilinx_BUFG Attribute
3. Instantiation
See also
(Xilinx Solution 1473)
for information on
controlling the number of inferred global buffers.
**Note that this solution applies to the Metamor XVHDL compiler
only. If using the Express HDL compiler, you may control the
insertion of Global Buffers using the Express Constraints GUI.
Solution
Automatic Insertion
-------------------
XVHDL automatically attaches a BUFG to any input port signal
which directly drives a clock pin. Depending on which Xilinx
device family is selected in the Foundation Project Manager,
a limit is set as to the maximum number of BUFGs which can be
automatically inserted into the synthesized XNF file, based
on the architectural capabilities of the device.
When XVHDL inserts a BUFG on a clock net as described above,
the BUFG takes the place of an IBUF. Therefore, a dedicated
global buffer input pad on the device is used.
Xilinx_BUFG Attribute
---------------------
It is also possible for XVHDL to insert a BUFG on any
specified input port signal, regardless of whether it is a
clock signal or not. Use the 'Xilinx_BUFG' attribute as
shown below to access this feature. Again, this BUFG
replaces the IBUF, and thus uses a dedicated global buffer
pad. This attribute will not attach a BUFG to an internal
signal. Only apply this attribute to top-level port signals.
attribute Xilinx_BUFG: boolean;
attribute Xilinx_BUFG of <port_name>: signal is true;
--Example of using the Xilinx_BUFG attribute
library IEEE;
use IEEE.std_logic_1164.all;
entity USE_BUFG is
port (CLK, IN1, CE: in std_logic;
OUT1: out std_logic);
attribute xilinx_bufg: boolean; --declare the attribute
attribute xilinx_bufg of CE: signal is true;
--CE will use a BUFG
end USE_BUFG;
architecture TEST of USE_BUFG is
begin
process (CLK)
begin
if (CLK'event and CLK='1') then
if CE='1' then
OUT1 <= IN1;
end if;
end if;
end process;
end TEST;
Instantiation
-------------
Global buffers may also be instantiated. Use this method to
drive a global buffer with an internally generated signal, or
to control the specific type of global buffer used. If, for
instance, in an XC4000 design, you wish to specify the use of
a BUFGP rather than the generic BUFG, you may instantiate the
BUFGP, as shown in the example below.
If you wish to use the dedicated input pad for the
instantiated global buffer, you must use the 'inhibit_buf'
attribute on the input signal port to prevent XVHDL from
inserting an IBUF at the input. This IBUF would prevent the
global buffer from using the dedicated input pad. If you
wish to use an input pad other than the dedicated global
buffer input pad, do not use the 'inhibit_buf' attribute.
XVHDL will treat the signal like an ordinary input and insert
an IBUF between the pad and the global buffer.
--Example of instantiating a global buffer
library IEEE;
use IEEE.std_logic_1164.all;
entity USE_BUFG is
port (CLK, IN1: in std_logic;
OUT1: out std_logic);
attribute inhibit_buf: boolean; --declare the attribute
attribute inhibit_buf of CLK: signal is true;
--This attribute prevents XVHDL from inferring an IBUF
--on the CLK port, which allows the Xilinx software to
--use the dedicated clock input pin.
end USE_BUFG;
architecture TEST of USE_BUFG is
signal BUFGP_OUT: std_logic;
component BUFGP
port (I: in std_logic;
O: out std_logic);
end component;
begin
U1: BUFGP port map (I => CLK, O => BUFGP_OUT);
process (BUFGP_OUT)
begin
if (BUFGP_OUT'event and BUFGP_OUT='1') then
OUT1 <= IN1;
end if;
end process;
end TEST;
Was this Answer Record helpful?
Yes
No
AR# 1375
Date
12/16/2011
Status
Archive
Type
General Article
People Also Viewed
Feedback
Close