UPGRADE YOUR BROWSER

We have detected your current browser version is not the latest one. Xilinx.com uses the latest web technologies to bring you the best online experience possible. Please upgrade to a Xilinx.com supported browser:Chrome, Firefox, Internet Explorer 11, Safari. Thank you!

AR# 2722

Foundation F1.3/F1.4, XVHDL: I/O flip-flops not inferred by VHDL synthesizer

Description

Keywords: XVHDL, Metamor, I/O flip-flops, ff, ifd, ifdx

Urgency: Standard

General Description:

Versions of the XVHDL compiler which come with Foundation F1.x, do not infer I/O flip-flops. However, described below are 2
ways you an specify their use in your design:

1) Use MAP to perform the equivalent function.
2) Instantiate them individually.

解决方案

1

With Foundation 6.x, XVHDL inferred I/O flip-flops where
appropriate. However, with Foundation F1.x, XVHDL infers only
CLB flip-flops. In order for flip-flops which are able to be
merged into IOBs to be used, the MAP program in the Implementation
phase of the design flow must be used.


The default MAP setting is NOT to merge flip-flops into the
IOBs. To enable this option in MAP, a customized template is
required.

1. From the Design Manager, select Utilities -> Template
Manager

2. Select the New button and give your custom template a name.

3. Select your template from the Template window and press the
customize button.

4. In the Program Name selection box, enter: MAP.
In the Program Options selection box, enter:

-pr I, O, or B

(Pack internal flops/latches into input (I), output (O),
or both (B) types of IOB's)


5. Hit the OK button and exit the Template Manager by clicking
the Close button.

6. When implementing the design, select your newly created
template in the Implementation field of the Design
Implementation Options window.

2

Another approach is instantiation:

LIBRARY IEEE;
USE IEEE.STD_LOGIC_1164.ALL;
LIBRARY METAMOR;
USE METAMOR.attributes.all;

ENTITY TEST IS
PORT(clock : IN STD_LOGIC;
mux_in : IN STD_LOGIC;
mux_out : OUT STD_LOGIC);
attribute inhibit_buf : boolean;
attribute inhibit_buf of clock, mux_in: signal is true;
END TEST;

architecture INSIDE OF TEST IS

COMPONENT bufg
PORT(i : IN STD_LOGIC;
o : OUT STD_LOGIC);
END COMPONENT;

COMPONENT ifdx1
PORT(ce : IN STD_LOGIC;
c : IN STD_LOGIC;
d : IN STD_LOGIC;
q : OUT STD_LOGIC);
END COMPONENT;

SIGNAL clock_s : STD_LOGIC;

BEGIN
u0 : bufg PORT MAP (i => clock, o => clock_s);
u1 : ifdx1 PORT MAP ( ce => '0', c => clock_s, d => mux_in,
q => mux_out);

end INSIDE;
AR# 2722
创建日期 08/25/1997
Last Updated 01/02/2000
状态 Archive
Type 综合文章