第4节 约束文件的编写.htm
来自「一百多个例子很好的verilog 学习资料」· HTM 代码 · 共 363 行 · 第 1/3 页
HTM
363 行
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3c.org/TR/1999/REC-html401-19991224/loose.dtd">
<!-- saved from url=(0046)http://www.eefocus.com/html/08-03/37742s.shtml -->
<HTML><HEAD><TITLE>第4节 约束文件的编写 -与非网专题: FPGA开发实用教程</TITLE>
<META http-equiv=Content-Type content="text/html; charset=utf-8">
<META content=all name=robots>
<META content="约束文件 编写" name=keywords>
<META content=约束文件的编写 name=description><LINK href="第4节 约束文件的编写.files/detail.css"
type=text/css rel=stylesheet><LINK href="第4节 约束文件的编写.files/book_detail.css"
type=text/css rel=stylesheet>
<SCRIPT language=JavaScript src="第4节 约束文件的编写.files/main.js"
type=text/javascript>
</SCRIPT>
<SCRIPT language=JavaScript src="第4节 约束文件的编写.files/article.js"
type=text/javascript>
</SCRIPT>
<SCRIPT language=JavaScript src="第4节 约束文件的编写.files/translate_c.js"
type=text/javascript>
</SCRIPT>
<SCRIPT language=JavaScript type=text/javascript>
_intlStrings._originalText = "";
_intlStrings._interfaceDirection = "ltr";
_intlStrings._interfaceAlign = "left"
</SCRIPT>
<META content="MSHTML 6.00.2900.3020" name=GENERATOR></HEAD>
<BODY onselectstart="return false">
<SCRIPT>_setupIW();
</SCRIPT>
<!--专题文章头部-->
<TABLE class=nav cellSpacing=0 cellPadding=0 width=946 align=center border=0>
<TBODY>
<TR>
<TD class=nav_left_logo> </TD>
<TD class=nav_list align=right><A href="http://www.eefocus.com/">网站首页</A>
│ <A href="http://www.eefocus.com/application/" target=_blank>系统应用</A> │
<A href="http://www.eefocus.com/content/theory/">通用技术</A> │ <A
href="http://datasheet.eefocus.com/">数据手册</A> │ <A
href="http://www.eefocus.com/topic/">热点专题</A> │ <A
href="http://www.eefocus.com/job/">招聘求职</A> │ <A
href="http://www.eefocus.com/zhuanlan/">名家专栏</A> │ <A
href="http://www.eefocus.com/blog/">博客</A> │ <A
href="http://www.eefocus.com/bbs/" target=_blank>技术论坛</A> │ <A
href="http://www.eefocus.com/myspace/">我的空间</A></TD></TR></TBODY></TABLE><!--专题广告-->
<DIV class=banner><A
href="http://www.eefocus.com/html/08-06/415531070314nUp7.shtml"
target=_blank><IMG src="第4节 约束文件的编写.files/logo.jpg" width=946 border=0></A>
</DIV><!--页面导航信息-->
<DIV class=nav_bar>
<DIV class=nav_left>您的位置:<A href="http://www.eefocus.com/">首页</A>>><A
href="http://www.eefocus.com/html/08-06/415531070314nUp7.shtml">FPGA开发实用教程</A>>>正文
</DIV><A href="http://www.eefocus.com/"><IMG class=btn_home height=18
src="第4节 约束文件的编写.files/btn.gif" width=86 align=absMiddle border=0></A> </DIV><!--页面内容-->
<DIV class=web>
<DIV id=main>
<DIV id=left>
<DIV id=bt>第4节 约束文件的编写 </DIV>
<DIV id=xx>
<DL>
<DD><A class=ulink href="http://www.eefocus.com/content/email.php">推荐给好友</A>
</DD>
<DD><IMG height=18 hspace=5 src="第4节 约束文件的编写.files/for_friend.gif" width=18
vspace=2> </DD>
<DD><A class=ulink href="http://www.eefocus.com/content/print.php">打印</A>
</DD>
<DD><IMG height=18 hspace=5 src="第4节 约束文件的编写.files/for_print.gif" width=18
vspace=2> </DD>
<DD><A class=ulink href="http://www.eefocus.com/content/favorite.php">加入收藏</A>
</DD>
<DD><IMG height=18 hspace=5 src="第4节 约束文件的编写.files/for_favorite.gif" width=18
vspace=2> </DD>
<DD></DD>
<DD style="FLOAT: left">更新于2008-05-28 09:46:12 </DD></DL></DIV>
<HR style="CLEAR: both" align=center width="98%">
<DIV id=tags><A
href="http://www.eefocus.com/search/?keyword=约束文件&searchselect=article"
target=_blank>约束文件</A> <A
href="http://www.eefocus.com/search/?keyword=&searchselect=article"
target=_blank></A><A
href="http://www.eefocus.com/search/?keyword=&searchselect=article"
target=_blank></A><A
href="http://www.eefocus.com/search/?keyword=&searchselect=article"
target=_blank></A><A
href="http://www.eefocus.com/search/?keyword=编写&searchselect=article"
target=_blank>编写</A> </DIV>
<DIV id=nr>
<P><STRONG>4.4.1 约束文件的基本操作</STRONG> <BR><BR>1.约束文件的概念
<BR><BR>FPGA设计中的约束文件有3类:用户设计文件(.UCF文件)、网表约束文件(.NCF文件)以及物理约束文件(.PCF文件),可以完成时序约束、管脚约束以及区域约束。3类约束文件的关系为:用户在设计输入阶段编写UCF文件,然后UCF文件和设计综合后生成NCF文件,最后再经过实现后生成PCF文件。本节主要介绍UCF文件的使用方法。
<BR><BR>UCF文件是ASC
2码文件,描述了逻辑设计的约束,可以用文本编辑器和Xilinx约束文件编辑器进行编辑。NCF约束文件的语法和UCF文件相同,二者的区别在于:UCF文件由用户输入,NCF文件由综合工具自动生成,当二者发生冲突时,以UCF文件为准,这是因为UCF的优先级最高。PCF文件可以分为两个部分:一部分是映射产生的物理约束,另一部分是用户输入的约束,同样用户约束输入的优先级最高。一般情况下,用户约束都应在UCF文件中完成,不建议直接修改NCF文件和PCF文件。
<BR><BR>2.创建约束文件
<BR><BR>约束文件的后缀是.ucf,所以一般也被称为UCF文件。创建约束文件有两种方法,一种是通过新建方式,另一种则是利用过程管理器来完成。
<BR><BR>第一种方法:新建一个源文件,在代码类型中选取“Implementation Constrains File”,在“File
Name”中输入“one2two_ucf”。单击“Next”按键进入模块选择对话框,选择模块“one2two”,然后单击“Next”进入下一页,再单击“Finish”按键完成约束文件的创建。
<BR><BR>第二种方法:在工程管理区中,将“Source for”设置为“Synthesis/Implementation”。“Constrains
Editor”是一个专用的约束文件编辑器,双击过程管理区中“User Constrains”下的“Create Timing
Constrains”就可以打开“Constrains Editor”,其界面如图4-73所示: </P>
<P align=center><IMG alt=""
src="第4节 约束文件的编写.files/1206501572.jpg"><BR><BR>图4-73启动Constrains
Editor引脚约束编辑</P>
<P><BR>在“Ports”选项卡中可以看到,所有的端口都已经罗列出来了,如果要修改端口和FPGA管脚的对应关系,只需要在每个端口的“Location”列中填入管脚的编号即可。例如在UCF文件中描述管脚分配的语法为:<BR><BR>
NET “端口名称” LOC = 引脚编号;
<BR><BR>需要注意的是,UCF文件是大小敏感的,端口名称必须和源代码中的名字一致,且端口名字不能和关键字一样。但是关键字NET是不区分大小写的。
<BR><BR>3.编辑约束文件 <BR><BR>在工程管理区中,将“Source
for”设置为“Synthesis/Implementation”,然后双击过程管理区中“User Constrains”下的“Edit Constraints
(Text)”就可以打开约束文件编辑器,如图4-73所示,就会新建当前工程的约束文件。</P>
<P align=center><IMG alt=""
src="第4节 约束文件的编写.files/1211966863.jpg"> <BR><BR>图4-73 用户约束管理窗口 </P>
<P><BR><STRONG>4.4.2 UCF文件的语法说明</STRONG>
<BR><BR>1.语法 <BR><BR> UCF文件的语法为:
<BR><BR>{NET|INST|PIN} "signal_name" Attribute;
<BR><BR>其中,“signal_name”是指所约束对象的名字,包含了对象所在层次的描述;“Attribute”为约束的具体描述;语句必须以分号“;”结束。可以用“#”或“/*
*/”添加注释。需要注意的是:UCF文件是大小写敏感的,信号名必须和设计中保持大小写一致,但约束的关键字可以是大写、小写甚至大小写混合。例如:
<BR><BR>NET "CLK" LOC = P30; <BR><BR>“CLK”就是所约束信号名,LOC =
P30;是约束具体的含义,将CLK信号分配到FPGA的P30管脚上。
<BR><BR>对于所有的约束文件,使用与约束关键字或设计环境保留字相同的信号名会产生错误信息,除非将其用" "括起来,因此在输入约束文件时,最好用"
"将所有的信号名括起来。 <BR><BR>2.通配符
<BR><BR>在UCF文件中,通配符指的是“*”和“?”。“*”可以代表任何字符串以及空,“?”则代表一个字符。在编辑约束文件时,使用通配符可以快速选择一组信号,当然这些信号都要包含部分共有的字符串。例如:
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?