Return to Support Page
 homesearchagentssupportask xilinxmap

Answers Database


Foundation XVHDL: How to use I/O Flip-Flops


Record #1373

Product Family:  Software

Product Line:  Metamor

Problem Title:
Foundation XVHDL:  How to use I/O Flip-Flops


Problem Description:
Keywords:  IOB, infer, metamor, ifd, ofd

Versions:  F6.x, F1.3/F1.4

Urgency:  Standard

General Description:

How can I utilize the IOB flip-flops through Foundation XVHDL?

*Note:	This solution applies only to the XVHDL (Metamor)
compiler.  If you are using the Express compiler, you may
control the insertion of I/O Flip-flops through the Express
Constraints GUI.


Solution 1:


Foundation 6.0.2
=================

The XVHDL compiler will infer an input or output flip-flop if
all of the following criteria are met:

1. The design is compiled as a "chip".
2. The input or output to the flip-flop is also declared as a
   port in the top-level entity.  If the input is declared as
   a port, it cannot be used as an input in any other process
   or signal assignment.
3. The flip-flop does not use the Preset or Clear pin, unless
   the Xilinx_GSR attribute is used with that preset/clr
   signal.  See also (Xilinx Solution 1376).
4. For all families EXCEPT the XC4000E, the flip-flop does
   not use a clock enable.

In an XC4000E design, a flip-flop which meets criteria 1-3
and has a clock enable will infer an I/O flip-flop, since the
XC4000E has this architectural feature.

--Example of I/O flip-flop inference
--Note that since the flip-flops use a clock enable, only an
--XC4000E design will infer I/O flip-flops in this case.

library IEEE;
use IEEE.std_logic_1164.all;

entity IOB4KE is
   port (IN1, IN2, CLK, EN: in std_logic;
	 OUT1: out std_logic);
end IOB4KE;

architecture IOFF_CE of IOB4KE is
   signal A: std_logic;
   signal B: std_logic;
begin
   process (CLK, EN)
   begin
      if CLK'event and CLK='1' then  --CLK rising edge
	 if EN='1' then 	-- clock enable
	    A <= in1;
	 end if;
      end if;
   end process;

   process (CLK, EN)
   begin
      if CLK'event and CLK='1' then  -- CLK rising edge
	 if EN='1' then 	-- clock enable
	    B <= in2;
	 end if;
      end if;
   end process;

   OUT1 <= A and B;

end IOFF_CE;



Solution 2:

Instantiating I/O Flip-flops with Foundation 6.0.2 or
Foundation F1.x XVHDL
======================================================

Below is an example of instantiating an Input Flip-flop (IFD)
in a Foundation VHDL design.  Note the use of the "Inhibit_buf"
attribute which prevents the automatic insertion of an IBUF
at the D input.  This attribute would be used similarly on the
Q output port of an OFD.


library IEEE;
use IEEE.std_logic_1164.all;

entity in_flop is
    port (
	d_in: in STD_LOGIC;
	clk_in: in STD_LOGIC;
	q_out: out STD_LOGIC
    );
    attribute inhibit_buf:  boolean;
    attribute inhibit_buf of d_in: signal is true;
end in_flop;

architecture in_flop_arch of in_flop is

component IFD
   port (D: in STD_LOGIC;
	C: in STD_LOGIC;
	Q: out STD_LOGIC);
end component;

begin

U1: IFD port map (d_in, clk_in, q_out);

end in_flop_arch;



Solution 3:


Foundation F1.3/F1.4
====================

With Foundation F1.3/F1.4, 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 IOB.

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.



End of Record #1373

For the latest news, design tips, and patch information on the Xilinx design environment, check out the Xilinx Expert Journals!

© 1998 Xilinx, Inc. All rights reserved
Trademarks and Patents