ISE 限制檔案的基本操作
1.限制檔案的概念
FPGA設計中的限制檔案有3類:使用者設計檔案(.UCF檔案)、網表限制檔案(.NCF檔案)以及實體限制檔案(.PCF檔案),可以完成時序限制、管 腳限制以及區域限制。3類限制檔案的關系為:使用者在設計輸入階段編寫UCF檔案,然後UCF檔案和設計綜合後生成NCF檔案,最後再經過實作後生成PCF 檔案。本節主要介紹UCF檔案的使用方法。
UCF檔案是ASC 2碼檔案,描述了邏輯設計的限制,可以用文本編輯器和Xilinx限制檔案編輯器進行編輯。NCF限制檔案的文法和UCF檔案相同,二者的差別在于: UCF檔案由使用者輸入,NCF檔案由綜合工具自動生成,當二者發生沖突時,以UCF檔案為準,這是因為UCF的優先級最高。PCF檔案可以分為兩個部分: 一部分是映射産生的實體限制,另一部分是使用者輸入的限制,同樣使用者限制輸入的優先級最高。一般情況下,使用者限制都應在UCF檔案中完成,不建議直接修改 NCF檔案和PCF檔案。
2.建立限制檔案
限制檔案的字尾是.ucf,是以一般也被稱為UCF檔案。建立限制檔案有兩種方法,一種是通過建立方式,另一種則是利用過程管理器來完成。
第一種方法:建立一個源檔案,在代碼類型中選取“Implementation Constrains File”,在“File Name”中輸入“one2two_ucf”。單擊“Next”按鍵進入子產品選擇對話框,選擇子產品“one2two”,然後單擊“Next”進入下一頁, 再單擊“Finish”按鍵完成限制檔案的建立。
第二種方法:在工程管理區中,将“Sourcefor”設定為“Synthesis/Implementation”。“Constrains Editor”是一個專用的限制檔案編輯器,輕按兩下過程管理區中“User Constrains”下的“Create Timing Constrains”就可以打開“Constrains Editor”,其界面如圖所示:
圖 啟動Constrains Editor引腳限制編輯
在“Ports”頁籤中可以看到,所有的端口都已經羅列出來了,如果要修改端口和FPGA管腳的對應關系,隻需要在每個端口的“Location”列中填入管腳的編号即可。例如在UCF檔案中描述管腳配置設定的文法為:
NET “端口名稱” LOC = 引腳編号;
需要注意的是,UCF檔案是大小敏感的,端口名稱必須和源代碼中的名字一緻,且端口名字不能和關鍵字一樣。但是關鍵字NET是不區分大小寫的。
3.編輯限制檔案
在工程管理區中,将“Sourcefor”設定為“Synthesis/Implementation”,然後輕按兩下過程管理區中“User Constrains”下的“Edit Constraints (Text)”就可以打開限制檔案編輯器,如下圖所示,就會建立目前工程的限制檔案。
圖 使用者限制管理視窗
UCF檔案的文法說明
1.文法
UCF檔案的文法為:
{NET|INST|PIN} "signal_name"Attribute;
其中,“signal_name”是指所限制對象的名字,包含了對象所在層次的描述;“Attribute”為限制的具體描述;語句必須以分号“;”結 束。可以用“#”或“”添加注釋。需要注意的是:UCF檔案是大小寫敏感的,信号名必須和設計中保持大小寫一緻,但限制的關鍵字可以是大寫、小寫甚至大小寫混合。例如:
NET "CLK" LOC = P30;
“CLK”就是所限制信号名,LOC = P30;是限制具體的含義,将CLK信号配置設定到FPGA的P30管腳上。
對于所有的限制檔案,使用與限制關鍵字或設計環境保留字相同的信号名會産生錯誤資訊,除非将其用" "括起來,是以在輸入限制檔案時,最好用" "将所有的信号名括起來。
2.通配符
在UCF檔案中,通配符指的是“*”和“?”。“*”可以代表任何字元串以及空,“?”則代表一個字元。在編輯限制檔案時,使用通配符可以快速選擇一組信号,當然這些信号都要包含部分共有的字元串。例如:
NET "*CLK?" FAST;
将包含“CLK”字元并以一個字元結尾的所有信号,并提高了其速率。
在位置限制中,可以在行号和列号中使用通配符。例如:
INST "/CLK_logic 周遊level1種的子產品,但不周遊更低層的子產品
例4-5 根據圖4-75所示的結構,使用通配符周遊表4-3所要求的各個子產品。
圖 層次子產品示意圖
表 要求周遊的符号清單
管腳和區域限制文法
LOC限制是FPGA設計中最基本的布局限制和綜合限制,能夠定義基本設計單元在FPGA晶片中的位置,可實作絕對定位、範圍定位以及區域定位。此外, LOC還能将一組基本單元限制在特定區域之中。LOC語句既可以書寫在限制檔案中,也可以直接添加到設計檔案中。換句話說,ISE中的FPGA底層工具編 輯器(FPGA Editor)、布局規劃器(Floorplanner)和引腳和區域限制編輯器的主要功能都可以通過LOC語句完成。
· LOC語句文法
INST"instance_name " LOC = location;
其中“location”可以是FPGA晶片中任一或多個合法位置。如果為多個定位,需要用逗号“,”隔開,如下所示:
LOC = location1,location2,...,locationx;
目前,還不支援将多個邏輯置于同一位置以及将多個邏輯至于多個位置上。需要說明的是,多位置限制并不是将設計定位到所有的位置上,而是在布局布線過程中,布局器任意挑選其中的一個作為最終的布局位置。
範圍定位的文法為:
INST “instance_name” LOC=location:location [SOFT];
常用的LOC定位語句如表4-4所列。
表 常用的LOC定位語句
使用LOC完成端口定義時,其文法如下:
NET "Top_Module_PORT" LOC = "Chip_Port";
其中,“Top_Module_PORT”為使用者設計中頂層子產品的信号端口,“Chip_Port”為FPGA晶片的管腳名。
LOC語句中是存在優先級的,當同時指定LOC端口和其端口連線時,對其連線限制的優先級是最高的。例如,在圖4-76中,LOC=11的優先級高于LOC=38。
圖 LOC優先級示意圖
2.LOC屬性說明
LOC語句通過加載不同的屬性可以限制管腳位置、CLB、Slice、TBUF、塊RAM、硬核乘法器、全局時鐘、數字鎖相環(DLL)以及DCM子產品等 資源,基本涵蓋了FPGA晶片中所有類型的資源。由此可見,LOC語句功能十分強大,表4-5列出了LOC的常用屬性。
表 LOC語句常用屬性清單