用户约束文件如何实际工作?

时间:2012-04-22 05:19:42

标签: vhdl fpga xilinx

我再次在我的机器上启动并运行了WebPack,在合成了一个简单的设计并将其上传到我的FPGA后,我的理解遇到了很多问题。

当用户约束文件中有这样的行时:

NET "W1A<0>" LOC = "P18" ;

合成软件究竟如何确定VHDL代码如何分配此引脚?

例如,请参考我提供的示例代码:

entity Webpack_Quickstart is
Port (
W1A : out  STD_LOGIC_VECTOR(15 downto 0);
rx : in STD_LOGIC;
tx : inout STD_LOGIC;
clk : in STD_LOGIC
);
end Webpack_Quickstart;

architecture Behavioral of Webpack_Quickstart is
signal counter : STD_LOGIC_VECTOR(47 downto 0) := (others => '0');
begin
    W1A(0) <= '1';
end;

此代码究竟是如何使我的FPGA上的WIA0引脚开启的?链接是什么?它只是实体声明中端口的名称还有更多的魔法吗?

1 个答案:

答案 0 :(得分:2)

您的.ucf约束将在实施阶段应用。此时您的设计已经合成,因此可用的顶级网络是“已知的”。所以,是的,只需将同名的网络匹配到同名的约束。

虽然语法略有不同(例如,使用<>代替()来索引向量),但除此之外它只是一个简单的字符串匹配。

最初配置引脚约束的最简单方法是使用其中一个图形工具(PlanAhead,如果它包含在WebPack中)来分配引脚,并生成初始.ucf文件。 我发现稍后使用标准ISE文本编辑器直接进行小改动是最容易的。