賽靈思(Xilinx)FPGA用戶約束文件的分類和語法說明_第1頁
賽靈思(Xilinx)FPGA用戶約束文件的分類和語法說明_第2頁
賽靈思(Xilinx)FPGA用戶約束文件的分類和語法說明_第3頁
賽靈思(Xilinx)FPGA用戶約束文件的分類和語法說明_第4頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

賽靈思(Xilinx)FPGA用戶約束文件的分類和語法說明FPGA設(shè)計中的約束文件有3類:用戶設(shè)計文件(.UCF文件)、網(wǎng)表約束文件(.NCF文件)以及物理約束文件(.PCF文件),可以完成時序約束、管腳約束以及區(qū)域約束。3類約束文件的關(guān)系為:用戶在設(shè)計輸入階段編寫UCF文件,然后UCF文件和設(shè)計綜合后生成NCF文件,最后再經(jīng)過實現(xiàn)后生成PCF文件。

UCF文件是ASC2碼文件,描述了邏輯設(shè)計的約束,可以用文本編輯器和Xilinx約束文件編輯器進行編輯。NCF約束文件的語法和UCF文件相同,二者的區(qū)別在于:UCF文件由用戶輸入,NCF文件由綜合工具自動生成,當二者發(fā)生沖突時,以UCF文件為準,這是因為UCF的優(yōu)先級最高。PCF文件可以分為兩個部分:一部分是映射產(chǎn)生的物理約束,另一部分是用戶輸入的約束,同樣用戶約束輸入的優(yōu)先級最高。一般情況下,用戶約束都應(yīng)在UCF文件中完成,不建議直接修改NCF文件和PCF文件。約束文件的后綴是.ucf,所以一般也被稱為UCF文件。創(chuàng)建約束文件有兩種方法,一種是通過新建方式,另一種則是利用過程管理器來完成。第一種方法:新建一個源文件,在代碼類型中選取“ImplementationConstrainsFile”,在“FileName”中輸入約束文件的名稱。單擊“Next”按鍵進入模塊選擇對話框,選擇要約束的模塊,然后單擊“Next”進入下一頁,再單擊“Finish”按鍵完成約束文件的創(chuàng)建。第二種方法:在工程管理區(qū)中,將“Sourcefor”設(shè)置為“Synthesis/Implementation”?!癈onstrainsEditor”是一個專用的約束文件編輯器,雙擊過程管理區(qū)中“UserConstrains”下的“CreateTimingConstrains”就可以打開“ConstrainsEditor”。

需要注意的是,UCF文件是大小敏感的,端口名稱必須和源代碼中的名字一致,且端口名字不能和關(guān)鍵字一樣。但是關(guān)鍵字NET是不區(qū)分大小寫的。UCF文件的語法說明:1.語法UCF文件的語法為:{NET|INST|PIN}"signal_name"Attribute;其中,“signal_name”是指所約束對象的名字,包含了對象所在層次的描述;“Attribute”為約束的具體描述;語句必須以分號“;”結(jié)束??梢杂谩?”或“”添加注釋。需要注意的是:UCF文件是大小寫敏感的,信號名必須和設(shè)計中保持大小寫一致,但約束的關(guān)鍵字可以是大寫、小寫甚至大小寫混合。例如:NET"CLK"LOC=P30;“CLK”就是所約束信號名,LOC=P30;是約束具體的含義,將CLK信號分配到FPGA的P30管腳上。對于所有的約束文件,使用與約束關(guān)鍵字或設(shè)計環(huán)境保留字相同的信號名會產(chǎn)生錯誤信息,除非將其用""括起來,因此在輸入約束文件時,最好用""將所有的信號名括起來。2.通配符在UCF文件中,通配符指的是“*”和“?”?!?”可以代表任何字符串以及空,“?”則代表一個字符。在編輯約束文件時,使用通配符可以快速選擇一組信號,當然這些信號都要包含部分共有的字符串。例如:NET"*CLK?"FAST;將包含“CLK”字符并以一個字符結(jié)尾的所有信號,并提高了其速率。在位置約束中,可以在行號和列號中使用通配符。例如:INST"/CLK_logic遍歷level1種的模塊,但不遍歷更低層的模塊

管腳和區(qū)域約束語法(也可以通過Floorplanner約束)LOC約束是FPGA設(shè)計中最基本的布局約束和綜合約束,能夠定義基本設(shè)計單元在FPGA芯片中的位置,可實現(xiàn)絕對定位、范圍定位以及區(qū)域定位。此外,LOC還能將一組基本單元約束在特定區(qū)域之中。LOC語句既可以書寫在約束文件中,也可以直接添加到設(shè)計文件中。換句話說,ISE中的FPGA底層工具編輯器(FPGAEditor)、布局規(guī)劃器(Floorplanner)和引腳和區(qū)域約束編輯器的主要功能都可以通過LOC語句完成。LOC語句語法INST"instance_name"LOC=location;其中“l(fā)ocation”可以是FPGA芯片中任一或多個合法位置。如果為多個定位,需要用逗號“,”隔開,如下所示:LOC=location1,location2,...,locationx;目前,還不支持將多個邏輯置于同一位置以及將多個邏輯至于多個位置上。需要說明的是,多位置約束并不是將設(shè)計定位到所有的位置上,而是在布局布線過程中,布局器任意挑選其中的一個作為最終的布局位置。

范圍定位的語法為:INST“instance_name”LOC=location:location[SOFT];

表常用的LOC定位語句[[wysiwyg_imageupload:169:]]使用LOC完成端口定義時,其語法如下:NET"Top_Module_PORT"LOC="Chip_Port";其中,“Top_Module_PORT”為用戶設(shè)計中頂層模塊的信號端口,“Chip_Port”為FPGA芯片的管腳名。LOC語句中是存在優(yōu)先級的,當同時指定LOC端口和其端口連線時,對其連線約束的優(yōu)先級是最高的。

2.LOC屬性說明

LOC語句通過加載不同的屬性可以約束管腳位置、CLB、Slice、TBUF、塊RAM、硬核乘法器、全局時鐘、數(shù)字鎖相環(huán)(DLL)以及DCM模塊等資源,基本涵蓋了FPGA芯片中所有類型的資源。由此可見,LOC語句功能十分強大,下表出了LOC的常用屬性。

時序約束的語法(也可通過constrainteditor約束)

UCF文件中時序約束的語法

約束UCF文件,從ConstrainsEditor直接輸入是最方便、最直接的添加約束的方法了。以下是幾種常用的語法:

1)周期約束

PERIOD約束是一個基本時序和綜合約束,它附加在時鐘網(wǎng)線上,時序分析工具根據(jù)PERIOD約束檢查時鐘域內(nèi)所有同步元件的時序是否滿足要求,它將檢查與同步時序約束端口相連接的所有路徑的延遲,但是不會檢查PAD到寄存器的路徑。

附加時鐘周期約束的首選方法(PreferredMethod)語法如下:

TIMESPEC“TS_identifier”=PERIOD“TNM_reference”period{HIGH|LOW}[high_or_low_time]

其中“[]”內(nèi)為可選項,“{}”為必選項,參數(shù)period為要求的時鐘周期,可以使用ps、ns、us或者ms等單位,大小寫都可以,缺省單位為ns。HIGH|LOW關(guān)鍵詞指出時鐘周期里的第一個脈沖是高電平還是低電平,而high_or_low_time為脈沖的延續(xù)時間,缺省單位也是ns,如果不提供該項,則缺省占空比為50%。

TIMESPEC是一個基本時序相關(guān)約束標識,表示本約束為時序規(guī)范。TSidentifier包括字母TS和一個標識符identifier(為ASCII碼字符串)共同組成一個時序規(guī)范。

例如定義時鐘周期約束時,首先在時鐘網(wǎng)線clk上附加一個TNM_NET約束,把clk驅(qū)動的所有同步元件定義為一個名為sys_clk的分組,然后使用TIMESPEC約束定義時鐘周期。

NET“clk”TNM_NET=”sys_clk”;

#定義clk驅(qū)動的所有同步元件為sys_clk的分組

TIMESPEC“TS_sys_clk”=PERIOD“sys_clk”50HIGH30;

#定義可引用的時序規(guī)范TS_sys_clk,

#這個規(guī)范規(guī)定sys_clk組的時鐘情況

而定義派生時鐘的語法如下:

TIMESPEC“TSidentifier_2”=PERIOD“timegroup_name”“TSidentifier_1”[*or/]factorPHASE[+|-]phase_value[units];

#定義第二個時序規(guī)范TSidentifier_2,其內(nèi)容是名為timegroup_name的分組是第

#一個時序規(guī)范TSidentifier_1派生的

其中TSidentifier_2為要定義的派生時鐘,TSidentifier_1為已經(jīng)定義的時鐘,factor指出兩者周期的輩數(shù)關(guān)系,是一個浮點數(shù)。phase_value指出兩者之間的相位關(guān)系,為浮點數(shù)。例如:

定義主時鐘clk0:

TIMESPEC“TS01”=PERIOD“clk0”10.0ns;

定義派生時鐘clk180,其相位與主時鐘相差180°:

TIMESPEC“TS02”=PERIOD“clk180”TS01PHASE+5.0ns;

定義派生時鐘clk180_2,其周期為主時鐘的1/2,并延遲2.5ns:

TIMESPEC“TS03”=PERIOD“clk180_2”TS01/2PHASE+2.5ns;

2)偏移約束

偏移約束規(guī)定了外部時鐘和數(shù)據(jù)輸入輸出引腳之間的時序關(guān)系,只用于與PAD相連的(端口)信號,不能用于內(nèi)部信號。使用該約束可以為綜合實現(xiàn)工具指出輸入數(shù)據(jù)到達的時刻,或者輸出數(shù)據(jù)穩(wěn)定的時刻,從而在綜合實現(xiàn)中調(diào)整布局布線過程,使正在開發(fā)的FPGA/CPLD的輸入建立時間以及下一級電路的輸入建立時間滿足要求。

基本語法如下:

OFFSET={IN|OUT}“offset_time”[units]{BEFORE|AFTER}“clk_name”[TIMEGRP“group_name”];

其中{IN|OUT}說明約束的是輸入還是輸出,offset_time為FPGA引腳數(shù)據(jù)變化與有效時鐘沿之間的時間差,BEFORE|AFTER說明該時間差在有效時鐘沿的前面還是后面,TIMEGRP“group_name”定義了約束的觸發(fā)器組,缺省時約束該時鐘驅(qū)動的所有觸發(fā)器。

3)分組約束

使用TNM(TimingName)約束可以選出構(gòu)成一個分組的元件,并賦予一個名字,以便給它們附加約束。TNM_NET(timingnamefornets)約束只加在網(wǎng)線上,其作用與TNM加在網(wǎng)上時基本相同,即把該網(wǎng)線所在路徑上的所有有效同步元件作為命名組的一部分。不同之處在于當TNM約束加在PADNET上時,TNM的值將被賦予PAD,而不是該網(wǎng)線所在的路徑上的同步元件,即TNM約束不能穿過IBUF。而用TNM_NET約束就不會出現(xiàn)這種情況。

4)專門約束

附加約束的一般策略是首先附加整體約束,例如PERIOD、OFFSET等,然后對局部的電路附加專門約束,這些專門約束通常比整體約束寬松,通過在可能的地方盡量放松約束可以提高布線通過率,減小布局布線的時間。

FROM_TO約束在兩個組之間定義時序約束,對兩者之間的邏輯和布線延遲進行控制,這

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論