如何在Vivado中实例化IPAD或OPAD

时间:2018-03-14 09:52:09

标签: vhdl vivado

的旧Xilinx综合工具(XST)中,可以直接在设计中手动实例化IPADOPAD原语。它允许设计人员隐藏端口,使其不会暴露在顶层。

在XST中,*PAD实例中未绑定的组件并被视为黑盒子。甚至translate抱怨黑盒子。但是,map神奇地认出了这些组件并且很开心,所以放置和放置。路线很成功。甚至可以使用VHDL属性指定填充位置,从而隐藏对UCF文件的需要。并不是说我在测试后使用了这个功能,但它确实有效!

如何在Vivado中实现这一目标?

我创建了一个与Xilinx ISE相似的示例。在Xilinx Vivado中,我收到以下警告:

  

[Project 1-486]无法解析非原始黑盒子单元'OutPad'实例化为'OPad'[“C:/Temp/IOBuffer/src/top.vhd”:63]

这是我的测试代码:

library IEEE;
use     IEEE.std_logic_1164.all;

library UniSim;
use     UniSim.VComponents.all;

entity top is
    port (
        AC701_SystemClock_200MHz_p   : in  std_logic;
        AC701_SystemClock_200MHz_n   : in  std_logic;
        AC701_GPIO_Button_CPU_Reset  : in  std_logic;
        AC701_GPIO_LED               : out std_logic_vector(3 downto 0)
    );
end entity;

architecture rtl of top is
    attribute DONT_TOUCH : boolean;
    attribute BLACK_BOX  : string;

    signal AC701_SystemClock_200MHz : std_logic;
    signal SystemClock_200MHz       : std_logic;

    signal DataIn       : std_logic;
    signal DataOut      : std_logic := '0';
    signal DataInternal : std_logic := '0';
    signal DataToPad    : std_logic;

    component OPAD is
        port (
            Pad : in std_logic
        );
    end component;

    attribute DONT_TOUCH of DataToPad   : signal is FALSE;
    attribute DONT_TOUCH of OPAD        : component is FALSE;
    attribute BLACK_BOX  of OPAD      : component is "YES";
begin
    BufDS: IBUFDS
        port map (
            I  => AC701_SystemClock_200MHz_p,
            IB => AC701_SystemClock_200MHz_n,
            O  => AC701_SystemClock_200MHz
        );

    ClkBuf: BUFG
        port map (
            I => AC701_SystemClock_200MHz,
            O => SystemClock_200MHz
        );

    DataIn       <= AC701_GPIO_Button_CPU_Reset;
    DataOut      <= DataIn                  when rising_edge(SystemClock_200MHz);
    DataInternal <= DataInternal xor DataIn when rising_edge(SystemClock_200MHz);

    AC701_GPIO_LED <= (others => DataOut);

    Buf: OBuf
        port map (
            I => DataInternal,
            O => DataToPad
        );

    OutPad: OPAD
        port map (
            Pad => DataToPad
        );
end architecture;

0 个答案:

没有答案