0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

常用時(shí)序約束介紹之基于ISE的UCF文件語(yǔ)法

電路和微電子考研 ? 來(lái)源:CSDN技術(shù)社區(qū) ? 2022-12-28 15:18 ? 次閱讀

時(shí)序約束是我們對(duì)FPGA設(shè)計(jì)的要求和期望,例如,我們希望FPGA設(shè)計(jì)可以工作在多快的時(shí)鐘頻率下等等。因此,在時(shí)序分析工具開(kāi)始對(duì)我們的FPGA設(shè)計(jì)進(jìn)行時(shí)序分析前,我們必須為其提供相關(guān)的時(shí)序約束信息。在【時(shí)序分析的原理】章節(jié)中,我們介紹了很多原理性的東西,而在本章節(jié),我們將為大家介紹在解決具體問(wèn)題時(shí)該如何向時(shí)序分析工具表述清楚我們的意圖,從而啟動(dòng)其強(qiáng)大的邏輯錐求解功能來(lái)得出我們所關(guān)心的時(shí)序分析報(bào)告。

當(dāng)然了,時(shí)序分析工具的種類有很多,雖然它們所支持的時(shí)序約束語(yǔ)法不盡相同,但主體思想都是一致的。因此,本章節(jié)就以Xilinx集成開(kāi)發(fā)環(huán)境ISE中自帶的時(shí)序分析工具為例,來(lái)為大家介紹一些UCF文件中常用的時(shí)序約束。(注意,時(shí)序分析環(huán)節(jié)僅僅是用來(lái)對(duì)FPGA設(shè)計(jì)的實(shí)現(xiàn)進(jìn)行評(píng)估并給出相應(yīng)的結(jié)果報(bào)告,它并不會(huì)對(duì)FPGA設(shè)計(jì)進(jìn)行改變。但如果我們?cè)谑褂弥T如ISE、Quarters這樣的集成開(kāi)發(fā)環(huán)境時(shí),如果在映射環(huán)節(jié)還沒(méi)開(kāi)始前就添加一些時(shí)序約束信息,則這些編譯器每完成一部分布局布線工作,便會(huì)調(diào)用相應(yīng)時(shí)序分析工具進(jìn)行一次時(shí)序分析,如果發(fā)現(xiàn)分析結(jié)果不符合要求,則會(huì)返回重來(lái)。像這樣,編譯器經(jīng)過(guò)多次反復(fù)努力,力求達(dá)到時(shí)序約束中的要求,從而給我們一種“時(shí)序分析改變FPGA實(shí)現(xiàn)”的錯(cuò)覺(jué)。因此,如果你想利用ISE做純粹的時(shí)序分析,請(qǐng)使用PCF文件,當(dāng)然語(yǔ)法也會(huì)略有不同。)

時(shí)序環(huán)境約束

在【本篇->基本概念介紹->影響延遲的因素->三種工況】中,我們介紹過(guò)環(huán)境因素對(duì)時(shí)序分析的影響。在默認(rèn)的情況下,ISE自帶的時(shí)序分析工具通常會(huì)采用最大工況來(lái)進(jìn)行分析,不過(guò)我們也可以通過(guò)時(shí)序環(huán)境約束來(lái)定義自己想要的環(huán)境因素,例如:

TEMPERATURE = 85 C;

VOLTAGE = 0.95 V;

分組時(shí)序約束

在介紹描述具體情況的時(shí)序約束之前,讓我們先來(lái)簡(jiǎn)單了解一下ISE所提供的一些基本分組時(shí)序約束語(yǔ)法,因?yàn)榧词鼓愕腇PGA設(shè)計(jì)得再簡(jiǎn)單,也總不可能一個(gè)元素接一個(gè)元素的去添加時(shí)序約束吧?如果能夠先建立分組,將有共性的元素劃分到一起,然后再統(tǒng)一添加時(shí)序約束,將會(huì)極大的簡(jiǎn)化我們的工作量。

TNM

TNM是最基本的分組約束語(yǔ)法,其語(yǔ)法定義如下:

{NET|INST|PIN} "net_or_pin_or_inst_name" TNM = [predefined_group] identifier;

可見(jiàn),TNM的定義起始關(guān)鍵字可以有三種——NET(網(wǎng)絡(luò))、INST(實(shí)例)、PIN(端口),其中,NET關(guān)鍵字用來(lái)指明網(wǎng)絡(luò)分組,該分組約束會(huì)自動(dòng)包含"net_or_pin_or_inst_name"名稱中指定的那個(gè)網(wǎng)絡(luò)名下0000000000000000000000000000000000000000000000游所連接的所有元素;INST關(guān)鍵字用來(lái)指明一個(gè)實(shí)例,為后續(xù)該分組的搜索限制了一個(gè)范圍;PIN指的是端口,指明具體某個(gè)原語(yǔ)的管腳。

predefined_group是一個(gè)可選的參數(shù),不寫(xiě)明的時(shí)候,該分組包含所有可包含的元素;若注明,則該分組只包含[predefined_group]類的元素。針對(duì)ISE軟件來(lái)說(shuō),預(yù)先定義好的分組大概有以下這些:

FFS:觸發(fā)器組;

RAMs:存儲(chǔ)器組;

LATCHES:鎖存器組;

PADS:焊盤組;

CPUS:處理器組;

HSIOS:高速IO組;

MULTS:乘法器組。

最后identifier指明了該分組的名稱,以供后續(xù)語(yǔ)法在調(diào)用該分組時(shí)使用。

TNM_NET

TNM_NET也是一個(gè)基本的分組約束語(yǔ)法,其語(yǔ)法定義如下:

{NET|INST} "net_name" TNM_NET = [predefined_group] identifier;

TNM_NET分組定義語(yǔ)法幾乎與TNM是一樣的,除了兩個(gè)區(qū)別:

1、TNM_NET只能根據(jù)網(wǎng)絡(luò)來(lái)定義分組;

2、TNM_NET指明的網(wǎng)絡(luò)名在選擇分組成員時(shí),可以穿過(guò)IBUF、BUFG這樣的原語(yǔ)去往下游擴(kuò)散,而TNM則不行。因此,通常用TNM_NET來(lái)為FPGA芯片的焊盤部分指定分組。

TIMEGRP

TIMEGRP是一個(gè)針對(duì)分組進(jìn)行操作的語(yǔ)法關(guān)鍵字,我們可以利用該關(guān)鍵字對(duì)分組求并、求差或者指定時(shí)鐘邊沿,例如:

TIMEGRP “ffs123” = “ffs1” “ffs2” “ffs3”; #合并三個(gè)分組為一個(gè)分組

TIMEGRP “G1D2” = “G1” EXCEPT “G2”; #定義一個(gè)包含所有屬于"G1"但不屬于"G2"元素的分組

TIMEGRP “group1”=RISING FFS; #基于FFS分組定義一個(gè)敏感時(shí)鐘上升沿的分組

TIMEGRP “group2”=FALLING FFS; #基于FFS分組定義一個(gè)敏感時(shí)鐘下降沿的分組

注意,對(duì)ISE的時(shí)序分析工具來(lái)說(shuō),在時(shí)序約束信息中,對(duì)分組名或信號(hào)名等名稱使不使用雙引號(hào)都是ok的。另外,UCF文件中的注釋符號(hào)為“#”。

常用時(shí)序約束

對(duì)于FPGA設(shè)計(jì)來(lái)說(shuō),常用的時(shí)序約束基本上可以被劃分為四種類型,分別介紹如下:

周期約束

周期約束又叫時(shí)鐘約束,主要用于給時(shí)鐘信號(hào)指明相關(guān)約束,使用關(guān)鍵字PERIOD,其基本語(yǔ)法定義如下:

TIMESPEC "TS_name" = PERIOD "TNM_name"{HIGH|LOW} [high_or_low_time] [INPUT_JITTER value];

其中,TIMESPEC "TS_name"為該周期約束定義了一個(gè)標(biāo)示符,可供其他地方調(diào)用。

"TNM_name"指明該周期約束所覆蓋的時(shí)序分組。

指明了該周期約束的時(shí)鐘周期數(shù)值。

{HIGH|LOW}指明了對(duì)應(yīng)時(shí)鐘信號(hào)在0時(shí)刻是以高電平(或上升沿)開(kāi)始還是以低電平(或下降沿)開(kāi)始的。

[high_or_low_time]是針對(duì){HIGH|LOW}來(lái)說(shuō)的,指明時(shí)鐘信號(hào)起始電平的持續(xù)時(shí)間,類似占空比的概念,因此也可以用百分?jǐn)?shù)來(lái)表示,意思是起始電平占整個(gè)周期的比例。

[INPUT_JITTER value]則指明了對(duì)應(yīng)時(shí)鐘信號(hào)存在一定的輸入jitter。

輸入時(shí)鐘周期約束

要對(duì)一個(gè)被輸入時(shí)鐘所驅(qū)動(dòng)時(shí)鐘域進(jìn)行時(shí)序分析,需要先定義一個(gè)需要被分析的分組,然后再使用TIMESPEC語(yǔ)法指定并命名一個(gè)周期約束,例如:

NET “clk50MHz” TNM_NET = “clkIn”;

TIMESPEC “TS_clkIn” = PERIOD “clkIn” 20.0 ns HIGH 50%;

上例中的第一句分組約束,將所有clk50MHz端口網(wǎng)絡(luò)所連接的元素全部加入到clkIn分組中。而第二句話則指明該時(shí)鐘域的時(shí)鐘信息,表示定義了一個(gè)名為TS_clkIn的周期約束,其內(nèi)容為針對(duì)clkIN時(shí)序分組,添加了一個(gè)周期為20ns、起始電平為高電平、占空比為50%的周期約束。

當(dāng)然了,除了使用百分比來(lái)指電平占空比參數(shù)外,還可直接標(biāo)明電平持續(xù)時(shí)間,例如,上例第二句話又可改寫(xiě)為:

TIMESPEC “TS_clkIn” = PERIOD “clkIn” 20.0 ns HIGH 10.0 ns;

若該時(shí)鐘域的時(shí)鐘信號(hào)還存在著2ns的jitter,則上例第二句話又可改寫(xiě)為:

TIMESPEC “TS_clkIn” = PERIOD “clkIn” 20 ns HIGH 50% INPUT_JITTER 2 ns;

內(nèi)部時(shí)鐘周期約束

內(nèi)部時(shí)鐘周期約束和輸入時(shí)鐘周期約束沒(méi)有什么本質(zhì)的不同,都是將周期約束加入到對(duì)應(yīng)的時(shí)鐘網(wǎng)絡(luò)上,不過(guò)有一點(diǎn)需要特別注意:

輸入時(shí)鐘周期約束針對(duì)的是輸入時(shí)鐘信號(hào),該時(shí)鐘信號(hào)是通過(guò)FPGA的一個(gè)輸入管腳引入FPGA內(nèi)部的,如果我們將該管腳和FPGA頂層實(shí)體的輸入端口clk綁定,那么無(wú)論是綜合前后、布局布線前后,使用clk這個(gè)名稱都能找到對(duì)應(yīng)的時(shí)鐘網(wǎng)絡(luò),因?yàn)殛P(guān)于這個(gè)時(shí)鐘輸入端口實(shí)在是沒(méi)有什么好優(yōu)化和改名的。

但是,若你要約束一個(gè)內(nèi)部的時(shí)鐘信號(hào),若該信號(hào)在HDL文件中的名稱為clk25MHz,若你定義了如下分組約束:

NET “clk25MHz” TNM_NET = “innerClk”;

則時(shí)序分析工具在進(jìn)行分析的時(shí)候幾乎會(huì)百分之百的報(bào)告說(shuō)找不到這個(gè)名稱叫做clk25MHz的網(wǎng)絡(luò),因?yàn)樗鼛缀蹩隙〞?huì)被優(yōu)化或改名掉。針對(duì)此類情況,通常有三種解決方案:

1、使用ISE自帶時(shí)序分析工具的時(shí)序約束創(chuàng)建工具創(chuàng)建該時(shí)鐘的約束。通常,ISE會(huì)分析出其內(nèi)部具有哪幾個(gè)時(shí)鐘信號(hào),并會(huì)給出每一個(gè)時(shí)鐘信號(hào)的源頭網(wǎng)絡(luò)名稱,你可以據(jù)此名稱推測(cè)出該網(wǎng)絡(luò)是不是你HDL代碼中類似clk25MHz名稱對(duì)應(yīng)的時(shí)鐘網(wǎng)絡(luò),然后使用該網(wǎng)絡(luò)名稱創(chuàng)建分組約束。

2、在綜合的時(shí)候使用綜合約束中的keep語(yǔ)法,讓clk25MHz這個(gè)網(wǎng)絡(luò)名稱不被優(yōu)化掉。

3、查看綜合、轉(zhuǎn)換環(huán)節(jié)后的FPGA設(shè)計(jì)網(wǎng)表文件,找到clk25MHz可能對(duì)應(yīng)的那個(gè)網(wǎng)絡(luò)名稱,然后使用該網(wǎng)絡(luò)名稱創(chuàng)建分組約束。(閱讀網(wǎng)表的過(guò)程可能會(huì)很痛苦?。?/p>

當(dāng)然了,對(duì)于一個(gè)驗(yàn)證團(tuán)隊(duì)來(lái)說(shuō),對(duì)于內(nèi)部時(shí)鐘來(lái)說(shuō),要想添加純時(shí)序分析所使用的約束的話,恐怕只有采用方案3了。

關(guān)聯(lián)時(shí)鐘周期約束

關(guān)聯(lián)時(shí)鐘周期約束主要用來(lái)應(yīng)付兩種情況:一、如果兩個(gè)時(shí)鐘域之間有信息傳遞,且我們想要對(duì)此進(jìn)行時(shí)序分析;二、一個(gè)時(shí)鐘信號(hào)本身就是由另一個(gè)時(shí)鐘信號(hào)生成的,兩者之間具有很強(qiáng)的相關(guān)性。

例如,對(duì)于一個(gè)DCM模塊來(lái)說(shuō),其輸入來(lái)自一個(gè)叫做clk50MHz的管腳,我們對(duì)該時(shí)鐘網(wǎng)絡(luò)進(jìn)行周期約束如下:

NET “clk50MHz” TNM_NET = “clkIn”;

TIMESPEC “TS_clkIn” = PERIOD " clkIn" 20 ns HIGH 50%;

如果它有一個(gè)同相2倍頻的輸出時(shí)鐘,對(duì)應(yīng)網(wǎng)絡(luò)名稱叫做clk2x,則對(duì)此輸出時(shí)鐘所驅(qū)動(dòng)的網(wǎng)絡(luò),我們可以定義時(shí)序約束如下:

NET “clk2x” TNM_NET = DCM2xOut;

TIMESPEC TS_DCM2xOut = PERIOD “DCM2xOut” TS_clkIn / 2 HIGH 50%;

而對(duì)于該DCM的相移180度的2倍頻輸出時(shí)鐘,若其對(duì)應(yīng)網(wǎng)絡(luò)名稱叫做clk2x180,則對(duì)此輸出時(shí)鐘所驅(qū)動(dòng)的網(wǎng)絡(luò),我們可以定義時(shí)序約束如下:

NET " clk2x180" TNM_NET = DCM2x180Out;

TIMESPEC TS_DCM2x180Out = PERIOD “DCM2x180Out” TS_clkIn / 2 PHASE 5 ns HIGH 50%;

差分時(shí)鐘周期約束

如果輸入時(shí)鐘信號(hào)是差分的,那么你只需要給差分中的一個(gè)端口加上周期約束即可。為了好理解起見(jiàn),你應(yīng)該對(duì)差分的p端網(wǎng)絡(luò)添加一個(gè)和差分時(shí)鐘相同的周期約束。

輸入約束

輸入約束主要針對(duì)同步輸入接口,亦或是針對(duì)虛擬出來(lái)的同步輸入接口,通過(guò)使用“OFFSET = IN”關(guān)鍵字,來(lái)描述輸入數(shù)據(jù)與時(shí)鐘之間的關(guān)系。其基本語(yǔ)法定義如下:

[{TIMEGRP|NET} "iobgroup_or_padnet_name"] OFFSET = IN[units] [VALID] {BEFORE|AFTER} "clk_name" [TIMEGRP "group_name"] {HIGH|LOW};

其中,[{TIMEGRP|NET} “iobgroup_or_padnet_name”]可以為該輸入約束指明一個(gè)網(wǎng)絡(luò)或者一個(gè)分組(注意,這里的網(wǎng)絡(luò)必須是連接到pad的網(wǎng)絡(luò),分組也必須是IO block相關(guān)的分組),若省略不寫(xiě),則該約束的作用范圍是全局的(應(yīng)用于所有跟時(shí)鐘"clk_name"相關(guān)的輸入端口)。

是一個(gè)相對(duì)于所依賴時(shí)鐘初始邊沿的數(shù)據(jù)到來(lái)偏移量。當(dāng)然了,具體該時(shí)鐘的初始邊沿是上升沿還是下降沿,則要追朔到該時(shí)鐘相關(guān)的周期約束上,通過(guò)該周期約束的使用的是HIGH、LOW關(guān)鍵字中的哪一個(gè)來(lái)判斷。

[VALID ]給出了數(shù)據(jù)信號(hào)的穩(wěn)定周期,即在的基礎(chǔ)上,保持穩(wěn)定時(shí)間為。

{BEFORE|AFTER}則指出了該條約束中描述的有效數(shù)據(jù)是應(yīng)該被當(dāng)前時(shí)鐘事件所采集還是應(yīng)該被后續(xù)時(shí)鐘事件所采集的。如果使用了BEFORE關(guān)鍵字,則表示數(shù)據(jù)有效開(kāi)始是以要采集它的時(shí)鐘事件為基礎(chǔ),給出一個(gè)提前量的;如果使用了AFTER關(guān)鍵字,則表示數(shù)據(jù)有效開(kāi)始是以前一個(gè)時(shí)鐘事件為基礎(chǔ),給出一個(gè)滯后量的。當(dāng)然了,本身也可以是負(fù)值,而具體使用哪一個(gè)關(guān)鍵字,完全看個(gè)人的描述習(xí)慣,它們之間沒(méi)有任何本質(zhì)的不同。

"clk_name"指明了該輸入約束是相對(duì)于哪一個(gè)時(shí)鐘事件的初始邊沿來(lái)說(shuō)的。

[TIMEGRP “group_name”]為該約束指明了一個(gè)需要分析的內(nèi)部分組,省略不寫(xiě)則表示所有跟當(dāng)前時(shí)鐘采集有關(guān)的元素。

{HIGH|LOW}則用來(lái)改寫(xiě)"clk_name"的初始邊沿的,它可以改變周期約束對(duì)"clk_name"相關(guān)初始邊沿的設(shè)定,HIGH、LOW分別表示的是將時(shí)鐘上升沿、下降沿設(shè)定為0時(shí)刻的初始邊沿。

SDR輸入約束

SDR的概念請(qǐng)回顧【程序設(shè)計(jì)篇->編程思路->關(guān)于外接接口的編程思路->按時(shí)鐘特性分類->同步接口->SDR】小節(jié)。

既然是同步接口,那么我們必須首先為同步時(shí)鐘定義一個(gè)周期約束,例如:

NET “clk” TNM_NET = clk50MHz;

TIMESPEC TS_clk = PERIOD “clk50MHz” 20 ns HIGH 50%;

那么,下面就可以基于該時(shí)鐘來(lái)使用“OFFSET = IN”語(yǔ)法表明該SDR接口在輸入的時(shí)候數(shù)據(jù)與時(shí)鐘之間的關(guān)系。例如:

OFFSET = IN 10 ns VALID 20 ns BEFORE clk;

由于本條語(yǔ)句沒(méi)有指名具體的輸入端口,因此它的作用是全局的,即所有跟clk時(shí)鐘采集相關(guān)的輸入端口。但是,若不同的數(shù)據(jù)端口與時(shí)鐘之間的關(guān)系有所不同的話,則需要單獨(dú)為每一個(gè)輸入端口指明輸入約束,例如:

NET “dIn<0>” OFFSET = IN 20 ns VALID 20 ns BEFORE “clk”;

NET “dIn<1>” OFFSET = IN 10 ns VALID 20 ns BEFORE “clk”;

如果有多個(gè)輸入端口和時(shí)鐘信號(hào)具有同樣的關(guān)系,則可使用分組的形式去定義輸入約束,例如:

NET “dIn<0>” TNM = dInG;

NET “dIn<1>” TNM = dInG;

TIMEGRP “dInG” OFFSET = IN 20 ns VALID 20 ns BEFORE “clk”;

DDR輸入約束

DDR的概念請(qǐng)回顧【程序設(shè)計(jì)篇->編程思路->關(guān)于外接接口的編程思路->按時(shí)鐘特性分類->同步接口->DDR】小節(jié)。

類似的,既然是同步接口,那么我們必須首先為同步時(shí)鐘定義一個(gè)周期約束,例如:

NET “clk” TNM_NET = clk50MHz;

TIMESPEC TS_clk = PERIOD “clk50MHz” 20 ns HIGH 50%;

那么,下面就是一種基于該時(shí)鐘來(lái)使用“OFFSET = IN”語(yǔ)法表明該DDR接口在輸入的時(shí)候數(shù)據(jù)與時(shí)鐘之間關(guān)系的方法,例如:

OFFSET = IN 5 ns VALID 10 ns BEFORE “clk” RISING;

OFFSET = IN 5 ns VALID 10 ns BEFORE “clk” FALLING;

這兩行語(yǔ)法說(shuō)明兩個(gè)時(shí)鐘邊沿都分別對(duì)應(yīng)其所需要采樣數(shù)據(jù)的中間。注意,上例中多了兩個(gè)關(guān)鍵字RISING和FALLING,它們不光可以用來(lái)指明offset time為5ns,到底是相對(duì)于時(shí)鐘網(wǎng)絡(luò)clk的上升沿來(lái)說(shuō)還是下降沿來(lái)說(shuō),更重要的是,它們可以指明,該條輸入約束的作用范圍——RISING代表分析所有在上升沿被采樣的輸入分組,F(xiàn)ALLING代表分析所有在下降沿被采樣的輸入分組。正因?yàn)槿绱?,雖然這兩條語(yǔ)句針對(duì)的輸入端口都是一樣的,但是它們并沒(méi)有被互相覆蓋。例如,如果我們想當(dāng)然的將RISING、FALLING關(guān)鍵字替換為HIGH、LOW關(guān)鍵字如下:

OFFSET = IN 5 ns VALID 10 ns BEFORE “clk” HIGH; #Wrong for DDR

OFFSET = IN 5 ns VALID 10 ns BEFORE “clk” LOW; #Wrong for DDR

則,由于上述兩條語(yǔ)句針對(duì)的都是一樣的分組(所有跟clk相關(guān)的輸入元素),因此誰(shuí)寫(xiě)在前面誰(shuí)就會(huì)被后面的語(yǔ)句覆蓋掉。

也正是因?yàn)镽ISING和FALLING這樣的一個(gè)分組特性,所以如果在SDR接口中,內(nèi)部邏輯本身是上升沿敏感的,但如果你用FALLING來(lái)指明數(shù)據(jù)、時(shí)鐘之間的位置關(guān)系,時(shí)序分析工具將會(huì)告訴你0條路徑、0個(gè)端口等等被分析。此時(shí),如果你執(zhí)意要以下降沿來(lái)作為參考邊沿的話,請(qǐng)使用LOW關(guān)鍵字。

為DDR接口添加時(shí)序約束的另一種方法是使用內(nèi)部分組,例如,為了實(shí)現(xiàn)與第一種方法相同的約束,可以先定義兩個(gè)分組分別對(duì)應(yīng)上升沿敏感的元素和下降沿敏感的元素,然后分別為其指明輸入約束,描述如下:

TIMEGRP “ClkIn_Rising” = RISING “clk50MHz”;

TIMEGRP “ClkIn_Falling” = FALLING “clk50MHz”;

OFFSET = IN 5 ns VALID 10 ns BEFORE clk TIMEGRP ClkIn_Rising;

OFFSET = IN -5 ns VALID 10 ns BEFORE clk TIMEGRP ClkIn_Falling;

為了進(jìn)一步明確OFFSET語(yǔ)法中前后兩個(gè)TIMEGRP用意的不同,下面給出如果要對(duì)一個(gè)兩位寬的dIn輸入端口添加DDR約束的例子:

NET “dIn<0>” TNM = dInG;

NET “dIn<1>” TNM = dInG;

TIMEGRP “ClkIn_Rising” = RISING “clk50MHz”;

TIMEGRP “ClkIn_Falling” = FALLING “clk50MHz”;

TIMEGRP “dInG” OFFSET = IN 5 ns VALID 10 ns BEFORE clk TIMEGRP ClkIn_Rising;

TIMEGRP “dInG” OFFSET = IN -5 ns VALID 10 ns BEFORE clk TIMEGRP ClkIn_Falling;

MDR輸入約束

MDR的概念請(qǐng)回顧【程序設(shè)計(jì)篇->編程思路->關(guān)于外接接口的編程思路->按時(shí)鐘特性分類->同步接口->MDR】小節(jié)。

類似的,既然是同步接口,那么我們必須首先為同步時(shí)鐘定義一個(gè)周期約束,例如:

NET “clk” TNM_NET = clk50MHz;

TIMESPEC TS_clk = PERIOD “clk50MHz” 20 ns HIGH 50%;

由于MDR在實(shí)際接收時(shí),往往還是通過(guò)SDR或者DDR的模式去進(jìn)行數(shù)據(jù)接收,因此,如果實(shí)際采用的是SDR模式,則我們只需要采樣對(duì)一個(gè)數(shù)據(jù)即可連續(xù)采集對(duì)所有的數(shù)據(jù);而如果實(shí)際采用的是DDR模式,則我們只需要采樣對(duì)連續(xù)兩個(gè)數(shù)據(jù)即可連續(xù)采集對(duì)所有的數(shù)據(jù)。

那么,接下來(lái)以時(shí)鐘數(shù)據(jù)比為1:4,數(shù)據(jù)變化沿對(duì)齊時(shí)鐘變化沿的MDR為例,看看該如何應(yīng)對(duì)其輸入約束的描述:

首先,來(lái)看看SDR模式實(shí)現(xiàn)MDR采樣。如果內(nèi)部使用DCM(或者PLL),生成一個(gè)4倍頻、同相的時(shí)鐘信號(hào),網(wǎng)絡(luò)名為clk4x,則我們應(yīng)該首先添加關(guān)于該生成時(shí)鐘的周期約束如下:

NET “clk4x” TNM_NET = DCM4xOut;

TIMESPEC TS_ DCM4xOut = PERIOD “DCM4xOut” TS_clk / 4 HIGH 50%;

那么,由于clk4x與clk是相關(guān)時(shí)鐘,所以時(shí)序分析工具會(huì)自動(dòng)分析其跨時(shí)鐘域的問(wèn)題,故只需要基于clk給出一個(gè)數(shù)據(jù)采樣的輸入約束如下即可:

OFFSET = IN 5 ns VALID 5 ns BEFORE clk;

事實(shí)上,由于UCF文件是在布局布線前添加給ISE的,因此ISE會(huì)在編譯的時(shí)候自動(dòng)為DCM或PLL的輸出生成關(guān)聯(lián)周期約束,所以關(guān)于clk4x的周期約束可省略。

接下來(lái),再看看DDR模式實(shí)現(xiàn)MDR采樣。此時(shí),由于具體完成采樣的時(shí)鐘并不是clk,所以不能采用【DDR輸入約束】小節(jié)中的方法一。但若要采用方法二,必須建立關(guān)于具體采樣時(shí)鐘的兩個(gè)邊沿分組。因此,先為DCM的輸出pin腳添加關(guān)聯(lián)時(shí)鐘約束如下:

PIN “instance_name/DCM_ADV_INST.CLK2X” TNM_NET = clk100MHz;

TIMESPEC TS_clk100MHz = PERIOD “clk100MHz” TS_clk / 2 HIGH 50%;

然后才能定義DDR采樣時(shí)鐘的兩個(gè)分組如下:

TIMEGRP “Clk2x_Rising” = RISING “clk100MHz”;

TIMEGRP “Clk2x_Falling” = FALLING “clk100MHz”;

最后,基于clk信號(hào)描述連續(xù)的兩個(gè)采樣并關(guān)聯(lián)到上述兩個(gè)分組中即可:

OFFSET = IN 5 ns VALID 5 ns BEFORE clk TIMEGRP Clk2x_Rising;

OFFSET = IN -5 ns VALID 5 ns BEFORE clk TIMEGRP Clk2x_Falling;

事實(shí)上,由于UCF文件是在布局布線前添加給ISE的,因此ISE會(huì)在編譯的時(shí)候自動(dòng)為DCM或PLL的輸出生成關(guān)聯(lián)周期約束,所以下面這句話可省略:

TIMESPEC TS_clk100MHz = PERIOD “clk100MHz” TS_clk / 2 HIGH 50%;

差分輸入約束

如果接口的輸入數(shù)據(jù)是差分形式的,那么你需要在創(chuàng)建輸入分組的時(shí)候把它們都加進(jìn)去,然后一起添加輸入約束即可。

組間約束

組間約束通過(guò)使用“FROM……TO”關(guān)鍵字,來(lái)對(duì)兩時(shí)序分組之間的延遲給出限制描述。其基本語(yǔ)法定義如下:

TIMESPEC “TS_name”=FROM “group1” TO “group2” [DATAPATHONLY];

其中,

TIMESPEC "TS_name"為該路徑約束定義了一個(gè)標(biāo)示符,可供其他地方調(diào)用。

group1為路徑起始端組。

group2 為路徑目的端組。

指明組間延遲的最大允許范圍。你無(wú)須指明最小允許范圍,因?yàn)闀r(shí)序分析工具會(huì)自動(dòng)為你報(bào)出起始端組和目的端組之間的最大、最小時(shí)間差。

[DATAPATHONLY]是可選參數(shù),給出則表示當(dāng)前組間約束將不考慮時(shí)鐘skew、相位差等影響,而只考慮組間的數(shù)據(jù)路徑延遲。

焊盤到焊盤路徑約束

當(dāng)FPGA設(shè)計(jì)中有不可拆解的純組合邏輯接口時(shí),就存在從芯片焊盤到焊盤的時(shí)序路徑,此時(shí),焊盤到焊盤的路徑約束就會(huì)生效??梢灾苯邮褂妙A(yù)定義組PADS來(lái)對(duì)所有焊盤到焊盤的路徑進(jìn)行時(shí)序約束,描述如下:

TIMESPEC “TS_P2P” = FROM “PADS” TO “PADS” 20 ns;

此時(shí),DATAPATHONLY關(guān)鍵字有沒(méi)有都無(wú)所謂,因?yàn)楹副P到焊盤本身就是純數(shù)據(jù)路徑延遲。如果要對(duì)不同的焊盤之間添加不同的焊盤到焊盤的路徑約束,則需要先創(chuàng)建自定義的起始焊盤組和目的焊盤組,然后再添加約束,例如:

TIMEGRP “dInG” = PADS(“a” “b”);

TIMEGRP “dOutG” = PADS(“c”);

TIMESPEC “TS_AB2C” = FROM “dInG” TO “dOutG” 20 ns;

多周期路徑約束

在周期性約束的作用下,時(shí)序分析工具會(huì)認(rèn)為該時(shí)鐘域內(nèi)寄存器的輸出在每個(gè)時(shí)鐘事件的到來(lái)都會(huì)發(fā)生變化,因此,理想情況下每個(gè)寄存器的保持時(shí)間均為一個(gè)時(shí)鐘周期??捎袝r(shí)候,F(xiàn)PGA設(shè)計(jì)的功能特征決定前級(jí)寄存器需要經(jīng)歷很多個(gè)時(shí)鐘周期后才會(huì)發(fā)生一次變化,這樣一來(lái),如果僅僅對(duì)該時(shí)鐘域添加周期約束,顯然對(duì)這部分電路是過(guò)約束了。如果這部分電路的邏輯比較簡(jiǎn)單,過(guò)約束并不會(huì)帶來(lái)什么大問(wèn)題;但如果這部分電路的邏輯比較復(fù)雜,過(guò)約束很可能會(huì)導(dǎo)致時(shí)序分析的時(shí)候不通過(guò)。因此,為了能夠正確的對(duì)這部分邏輯添加時(shí)序約束,需要要使用多周期路徑約束,例如如下描述:

NET “clk” TNM_NET = clk50MHz;

TIMESPEC TS_clk50MHz = PERIOD “clk50MHz” 20 ns HIGH 50%;

INST "b1" TNM = gb1;

INST "b2" TNM = gb2;

TIMESPEC TS_MultiPath = FROM gb1 TO gb2 TS_clk50MHz * 2;

在時(shí)序約束里,通常更為具體的約束比更為廣泛的約束優(yōu)先級(jí)要高,因此,雖然上例在最開(kāi)始已經(jīng)給所有clk50MHz分組添加了周期約束,但后續(xù)的多周期路徑約束將b1、b2之間的周期約束改為2倍的多周期路徑約束。

跨時(shí)鐘域路徑約束

如果兩個(gè)時(shí)鐘之間并不相關(guān),默認(rèn)情況下,時(shí)序分析工具是不會(huì)對(duì)這種跨時(shí)鐘域情況進(jìn)行分析的。但當(dāng)它們之間又確實(shí)有著信息傳遞,而你又關(guān)心其間的一些時(shí)間延遲時(shí),可以使用跨時(shí)鐘域路徑約束。例如如下描述:

NET “clk1” TNM_NET = clkA1;

TIMESPEC TS_clkA1 = PERIOD “clkA1” 20 ns HIGH 50%;

NET “clk2” TNM_NET = clkA2;

TIMESPEC TS_clkA2 = PERIOD “clkA2” 15 ns HIGH 50%;

TIMESPEC TS_CCR = FROM clkA1 TO clkA2 10 ns;

上例中的兩條周期約束描述可省略,寫(xiě)明只是為了說(shuō)明這兩個(gè)時(shí)鐘確實(shí)是無(wú)關(guān)的。如果只關(guān)心兩個(gè)時(shí)鐘域之間的數(shù)據(jù)路徑延遲的話,可以將上例中的跨時(shí)鐘域路徑約束改為:

TIMESPEC TS_CCR = FROM clkA1 TO clkA2 10 ns DATAPATHONLY;

這樣時(shí)序分析工具在分析的時(shí)候就不會(huì)考慮時(shí)鐘skew等因素了,即便clk1、clk2是相關(guān)時(shí)鐘。

跨時(shí)鐘域忽略約束

如果兩個(gè)時(shí)鐘之間確實(shí)是相關(guān)的,例如DCM或者PLL的多個(gè)輸出和它們的輸入、一個(gè)時(shí)鐘信號(hào)的上升沿和下降沿等,但我們又不希望時(shí)序分析工具對(duì)它們之間進(jìn)行跨時(shí)鐘域分析,此時(shí)可以使用跨時(shí)鐘域忽略約束。例如如下描述:

NET “clk1” TNM_NET = clkA1;

TIMESPEC TS_clkA1 = PERIOD “clkA1” 20 ns HIGH 50%;

NET “clk2” TNM_NET = clkA2;

TIMESPEC TS_clkA2 = PERIOD “clkA2” TS_clkA1/2 HIGH 50%;

TIMESPEC TS_FastPath = FROM clkA1 TO clkA2 TIG;

上例中,通過(guò)在組間約束中使用TIG關(guān)鍵字,可以讓時(shí)序分析工具不去分析從clkA1到clkA2的組間延遲。如果希望也不要分析從clkA2到clkA1的組間延遲,則還需要再添加一句描述如下:

TIMESPEC TS_FastPath = FROM clkA2 TO clkA1 TIG;

如果只是希望對(duì)兩個(gè)時(shí)鐘域之間的某一部分信號(hào)傳遞進(jìn)行忽略,則可以先定義分組,然后再使用跨時(shí)鐘域忽略約束。承接上例,如果希望忽略clk1時(shí)鐘域中的aLock到clk2時(shí)鐘域中c之間的跨時(shí)鐘域分析,可描述如下:

INST “aLock” TNM = ta;

INST “c” TNM = tc;

TIMESPEC TS_FastPath = FROM ta TO tc TIG;

路徑中間點(diǎn)約束

有時(shí)候,你關(guān)心的可能不僅僅是兩個(gè)時(shí)序分組之間的全部路徑延遲中的最大、最小情況,而是關(guān)心通過(guò)某一個(gè)中繼點(diǎn)或組的兩個(gè)時(shí)序分組之間的路徑延遲中的最大、最小情況。此時(shí),可以使用THRU關(guān)鍵字指明該中繼分組。例如如下描述:

NET “a_3_IBUF” TPTHRU = “ta”;

TIMESPEC “TS_P2P” = FROM “PADS” THRU “ta” TO “PADS” 20 ns;

上例只分析那些焊盤到焊盤之間經(jīng)過(guò)ta分組的路徑延遲情況。

輸出約束

輸出約束主要針對(duì)輸出接口,通過(guò)使用“OFFSET = OUT”關(guān)鍵字,實(shí)現(xiàn)對(duì)輸出接口的一些基本時(shí)序要求描述,它的基本語(yǔ)法定義如下:

[{TIMEGRP|NET} “iobgroup_or_padnet_name”] OFFSET = OUT[units] {BEFORE|AFTER} “clk_name” [TIMEGRP “group_name”] {HIGH|LOW};

其中,

[{TIMEGRP|NET} “iobgroup_or_padnet_name”]可以為該輸出約束指明一個(gè)網(wǎng)絡(luò)或者一個(gè)分組(注意,這里的網(wǎng)絡(luò)必須是連接到pad的網(wǎng)絡(luò),分組也必須是IO block相關(guān)的分組),若省略不寫(xiě),則該約束的作用范圍是全局的(應(yīng)用于所有被時(shí)鐘"clk_name"相關(guān)的輸出端口)。

"clk_name"指明了該輸出約束是相對(duì)于哪一個(gè)時(shí)鐘事件的初始邊沿來(lái)說(shuō)的,注意,"clk_name"是一個(gè)輸入時(shí)鐘的名稱,而不是輸出時(shí)鐘的名稱,更確切的說(shuō),它是該約束所針對(duì)輸出端口在FPGA內(nèi)部所連接寄存器的驅(qū)動(dòng)時(shí)鐘。

{BEFORE|AFTER} 、[TIMEGRP “group_name”]、{HIGH|LOW}與輸入約束解釋相同。

可見(jiàn),ISE的輸出約束不太智能,通過(guò)使用“OFFSET = OUT”關(guān)鍵字,只能描述輸出端口相對(duì)于其輸出寄存器驅(qū)動(dòng)時(shí)鐘之間的時(shí)間延遲是否能夠滿足一些基本要求,因此對(duì)于同步輸出接口,ISE自帶的時(shí)序分析工具不能直接給出分析結(jié)果。下面就來(lái)介紹一下該如何利用時(shí)序分析工具間接得到同步輸出端口的時(shí)序報(bào)告。

直接同步輸出約束

直接同步輸出對(duì)應(yīng)于【本篇->時(shí)序分析的原理->其他常見(jiàn)邏輯情形的應(yīng)對(duì)方法->純輸出接口->純同步輸出接口】小節(jié)中描述的情況??梢?jiàn),對(duì)于此類接口,ISE只能采用該小節(jié)中介紹的第三點(diǎn)方法來(lái)進(jìn)行應(yīng)對(duì)。即首先通過(guò)功能仿真獲得clk與D信號(hào)在理想情況下的關(guān)系,然后再分別獲取clk、D信號(hào)實(shí)際輸出時(shí)的最大、最小延遲,然后人工計(jì)算得出針對(duì)該同步輸出接口的時(shí)序分析結(jié)果。

如果內(nèi)部時(shí)鐘的周期約束如下:

NET “innerClk” TNM_NET = innerClk;

TIMESPEC TS_innerClk = PERIOD “innerClk” 20 ns HIGH 50%;

則,對(duì)于該同步輸出接口,我們需要先定義針對(duì)數(shù)據(jù)D的輸出約束,類似如下:

NET “D<0>” TNM = gDout;

NET “D<1>” TNM = gDout;

NET “D<2>” TNM = gDout;

NET “D<3>” TNM = gDout;

NET “D<4>” TNM = gDout;

NET “D<5>” TNM = gDout;

NET “D<6>” TNM = gDout;

NET “D<7>” TNM = gDout;

TIMEGRP “gDout” OFFSET = OUT 20 ns AFTER “innerClk”;

然后,再參考【組間約束中->焊盤到焊盤路徑約束】小節(jié)中的方法,對(duì)innerClk與clk之間進(jìn)行約束,類似如下:

TIMEGRP “gClkIn” = PADS(“innerClk”);

TIMEGRP “gClkOut” = PADS(“clk”);

TIMESPEC “TS_C2C” = FROM “gClkIn” TO “gClkOut” 20 ns;

這樣,時(shí)序分析工具會(huì)報(bào)出D、clk相對(duì)于0時(shí)刻innerClk邊沿的最大、最小延遲,最后結(jié)合功能仿真的情況即可人工得出該直接同步輸出接口的時(shí)序分析報(bào)告。

間接同步輸出約束

間接同步輸出對(duì)應(yīng)于【本篇->時(shí)序分析的原理->其他常見(jiàn)邏輯情形的應(yīng)對(duì)方法->純輸出接口->異步生成同步輸出】小節(jié)中描述的情況。

間接同步輸出與直接同步輸出的應(yīng)對(duì)方法類似,唯一的不同就在于輸出時(shí)鐘clk相對(duì)于innerClk來(lái)說(shuō)也是一個(gè)數(shù)據(jù)。因此,只需要將【直接同步輸出約束】小節(jié)中,關(guān)于innerClk與clk之間的組間約束改為輸出約束即可。類似如下:

NET “clk” TNM = gCout;

TIMEGRP “gCout” OFFSET = OUT 20 ns AFTER “innerClk”;

這樣,時(shí)序分析工具會(huì)報(bào)出D、clk相對(duì)于0時(shí)刻innerClk邊沿的最大、最小延遲,最后結(jié)合功能仿真的情況即可人工得出該間接同步輸出接口的時(shí)序分析報(bào)告。

差分輸出約束

如果接口的輸出數(shù)據(jù)是差分形式的,那么你需要在創(chuàng)建輸出分組的時(shí)候把它們都加進(jìn)去,然后一起添加輸出約束即可。

審核編輯:湯梓紅

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • FPGA
    +關(guān)注

    關(guān)注

    1620

    文章

    21510

    瀏覽量

    598875
  • 時(shí)序分析
    +關(guān)注

    關(guān)注

    2

    文章

    127

    瀏覽量

    22527
  • ISE
    ISE
    +關(guān)注

    關(guān)注

    1

    文章

    100

    瀏覽量

    36239
  • 時(shí)序約束
    +關(guān)注

    關(guān)注

    1

    文章

    114

    瀏覽量

    13385
  • UCF
    UCF
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    9593

原文標(biāo)題:【科普】常用時(shí)序約束介紹之基于ISE的UCF文件語(yǔ)法

文章出處:【微信號(hào):feifeijiehaha,微信公眾號(hào):電路和微電子考研】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    FPGA時(shí)序約束偽路徑和多周期路徑

    前面幾篇FPGA時(shí)序約束進(jìn)階篇,介紹常用主時(shí)鐘約束、衍生時(shí)鐘約束、時(shí)鐘分組
    發(fā)表于 06-12 17:33 ?1544次閱讀

    Xilinx FPGA編程技巧常用時(shí)序約束詳解

    今天給大俠帶來(lái)Xilinx FPGA編程技巧常用時(shí)序約束詳解,話不多說(shuō),上貨。 基本的約束方法為了保證成功的設(shè)計(jì),所有路徑的時(shí)序要求
    發(fā)表于 04-12 17:39

    Xilinx FPGA編程技巧常用時(shí)序約束詳解

    今天給大俠帶來(lái)Xilinx FPGA編程技巧常用時(shí)序約束詳解,話不多說(shuō),上貨。 基本的約束方法 為了保證成功的設(shè)計(jì),所有路徑的時(shí)序要求
    發(fā)表于 05-06 15:51

    【FPGA學(xué)習(xí)】如何使用 ISE 編寫(xiě)約束文件

    原理圖實(shí)現(xiàn)的頂層模塊為例),如圖 3-55 所示。單擊 Next 按鈕,再單擊Finish 按鈕就完成了約束文件的創(chuàng)建。(2)對(duì)約束文件進(jìn)行編輯。I
    發(fā)表于 09-29 09:18

    UCF中的時(shí)序約束在組合設(shè)計(jì)中被忽略了?

    xc6slx75-3fgg676設(shè)備中實(shí)現(xiàn)順利(23%切片利用率)但是我不能在UCF文件中使用FROM ... TO約束來(lái)優(yōu)化組合pad-to-pad傳播。 UCF看起來(lái)像這樣:NET
    發(fā)表于 10-10 11:03

    怎么通過(guò)時(shí)序約束來(lái)改進(jìn)UCF

    大家好,我想通過(guò)添加時(shí)序約束(OFFSET IN&amp; OFFSET OUT)來(lái)改進(jìn)我的UCF。實(shí)際上在我的TOP級(jí)模塊中有雙向總線。我如何能夠?qū)?shù)據(jù)總線的約束類型設(shè)置為“inou
    發(fā)表于 04-15 10:24

    ISE時(shí)序約束

    ISE時(shí)序約束:What effects do timing constraints have on your project?• The implementation tools do
    發(fā)表于 01-11 08:54 ?87次下載

    時(shí)序約束時(shí)序分析 ppt教程

    時(shí)序約束時(shí)序分析 ppt教程 本章概要:時(shí)序約束時(shí)序分析基礎(chǔ)
    發(fā)表于 05-17 16:08 ?0次下載

    Xilinx FPGA編程技巧常用時(shí)序約束介紹

    Xilinx FPGA編程技巧常用時(shí)序約束介紹,具體的跟隨小編一起來(lái)了解一下。
    的頭像 發(fā)表于 07-14 07:18 ?4399次閱讀
    Xilinx FPGA編程技巧<b class='flag-5'>常用時(shí)序</b><b class='flag-5'>約束</b><b class='flag-5'>介紹</b>

    賽靈思(Xilinx)FPGA用戶約束文件的分類和語(yǔ)法說(shuō)明

    FPGA設(shè)計(jì)中的約束文件有3類:用戶設(shè)計(jì)文件(.UCF文件)、網(wǎng)表約束
    發(fā)表于 02-11 06:33 ?1589次閱讀

    ISE約束導(dǎo)入vivado總共分幾步

    最近有些朋友在ISE中做的V7項(xiàng)目需要切換到vivado來(lái),但導(dǎo)入代碼后,導(dǎo)入約束時(shí),發(fā)現(xiàn)vivado不再支持UCF文件,如果手抄UCF
    發(fā)表于 03-24 13:54 ?8742次閱讀
    <b class='flag-5'>ISE</b><b class='flag-5'>約束</b>導(dǎo)入vivado總共分幾步

    深入了解時(shí)序約束以及如何利用時(shí)序約束實(shí)現(xiàn)FPGA 設(shè)計(jì)的最優(yōu)結(jié)果

    作為賽靈思用戶論壇的定期訪客(見(jiàn) ),我注意到新用戶往往對(duì)時(shí)序收斂以及如何使用時(shí)序約束來(lái)達(dá)到時(shí)序收斂感到困惑。為幫助 FPGA設(shè)計(jì)新手實(shí)現(xiàn)時(shí)序
    發(fā)表于 11-24 19:37 ?5316次閱讀
    深入了解<b class='flag-5'>時(shí)序</b><b class='flag-5'>約束</b>以及如何利<b class='flag-5'>用時(shí)序</b><b class='flag-5'>約束</b>實(shí)現(xiàn)FPGA 設(shè)計(jì)的最優(yōu)結(jié)果

    具體介紹ISE中通過(guò)編輯UCF文件來(lái)對(duì)FPGA設(shè)計(jì)進(jìn)行約束

    本文主要通過(guò)一個(gè)實(shí)例具體介紹ISE中通過(guò)編輯UCF文件來(lái)對(duì)FPGA設(shè)計(jì)進(jìn)行約束,主要涉及到的約束
    發(fā)表于 11-24 19:59 ?3222次閱讀
    具體<b class='flag-5'>介紹</b><b class='flag-5'>ISE</b>中通過(guò)編輯<b class='flag-5'>UCF</b><b class='flag-5'>文件</b>來(lái)對(duì)FPGA設(shè)計(jì)進(jìn)行<b class='flag-5'>約束</b>

    通過(guò)一個(gè)實(shí)例具體介紹ISE中通過(guò)編輯UCF文件來(lái)對(duì)FPGA設(shè)計(jì)進(jìn)行約束

    摘要:本文主要通過(guò)一個(gè)實(shí)例具體介紹ISE中通過(guò)編輯UCF文件來(lái)對(duì)FPGA設(shè)計(jì)進(jìn)行約束,主要涉及到的約束
    發(fā)表于 11-25 01:27 ?5122次閱讀
    通過(guò)一個(gè)實(shí)例具體<b class='flag-5'>介紹</b><b class='flag-5'>ISE</b>中通過(guò)編輯<b class='flag-5'>UCF</b><b class='flag-5'>文件</b>來(lái)對(duì)FPGA設(shè)計(jì)進(jìn)行<b class='flag-5'>約束</b>

    FPGA約束的詳細(xì)介紹

    設(shè)計(jì)能否滿足時(shí)序。主要涉及到xilinx vivado xdc約束語(yǔ)法,給出對(duì)應(yīng)的ISE ucf 語(yǔ)法
    發(fā)表于 06-25 09:14 ?6600次閱讀