引言
SDC是一個(gè)設(shè)計(jì)從RTL到netlist的橋梁,是FE/ME/BE都需要掌握的一項(xiàng)基本技能。通常情況來說,由前端工程師(designer)提供SDC文件是最合理的,因?yàn)橹挥衐esigner才是最了解整個(gè)設(shè)計(jì)的結(jié)構(gòu)的,所以最能夠合情合理的提供出約束文件,但是,ME/BE又必須要能夠看得懂,因?yàn)橹挥羞@樣,在做綜合和PR以及timing signoff的時(shí)候,在遇到問題時(shí)能夠最快的定位timing問題的合理性。所以,接下來連續(xù)更新的文章,會(huì)從基礎(chǔ)到深入,并結(jié)合實(shí)例的方式,跟大家一起探討一下SDC的各種語法構(gòu)成和整體結(jié)構(gòu),最終達(dá)成的目標(biāo)就是每個(gè)人能夠獨(dú)立完整的提供合理的約束文件。
基礎(chǔ)介紹
SDC全稱是Synopsys Design Constraints Format,是由S公司最早提出的一種約束文件格式。主要用于指定design內(nèi)部的Timing關(guān)系,約束Power消耗和Area大小。但是在這當(dāng)中,最為關(guān)鍵的便是指定design的時(shí)序。其語法結(jié)構(gòu)是基于TCL語法實(shí)現(xiàn)的。主要應(yīng)用于綜合、PR、以及STA過程當(dāng)中,當(dāng)然在其他方面也會(huì)有很大用途,比如CDC check?,F(xiàn)在的SDC可以看做是一項(xiàng)標(biāo)準(zhǔn)的指令系統(tǒng),基本上所有的EDA工具都可以兼容性識(shí)別。
tools行為簡介
要想知道怎么約束一個(gè)design,我們首先需要清楚的知道,工具的行為是如何的。如圖1所示,我們design通常情況下都是同步結(jié)構(gòu)的設(shè)計(jì),tools在做timing分析的時(shí)候,會(huì)將design中所有的path都抽象成這樣前后兩級(jí)DFF的結(jié)構(gòu)。并將前一級(jí)的DFF作為source register,也稱作launch register,將后一級(jí)的register作為destination register,也稱作capture register。如果check setup,tools的默認(rèn)行為是從launch DFF的當(dāng)前觸發(fā)沿到capture DFF的下一個(gè)觸發(fā)沿之間的時(shí)間,如圖中藍(lán)色箭頭所示。而check hold timing,tools的默認(rèn)行為是從launch DFF的當(dāng)前觸發(fā)沿到capture DFF的當(dāng)前觸發(fā)沿之間的時(shí)間,如圖中綠色箭頭所示。
圖1 design中的基本timing path
所以,要想讓tools能夠自動(dòng)的check到design中的所有path的setup/hold。就需要保證design中所有的path都可以抽象成這種R2R的結(jié)構(gòu)。而通常情況下,所有的design,在抽象之后,其timing path都可以抽象為圖2中示例的四種結(jié)構(gòu),分別是R2R,R2O,I2R,I2O。那現(xiàn)在問題來了,圖中的R2R的結(jié)構(gòu),是符合工具自動(dòng)check timing的行為(當(dāng)然,這里前提是clock定義好了);但是另外的三種結(jié)構(gòu),是不符合工具自動(dòng)check timing的行為的。所以這就需要我們自己去構(gòu)造出符合工具行為的path。
圖2 design結(jié)構(gòu)抽象
如圖3所示,對(duì)于另外的三種path,我們需要做的就是在整個(gè)design的輸入端、輸出端分別虛擬一級(jí)DFF,如圖中紅色虛線register所示。這樣,無論哪種結(jié)構(gòu)(I2R/R2R/R2O/I2O),在工具看來都有了完整的launch DFF和capture DFF,從而就能夠自動(dòng)的完成timing check。
圖3 timing path構(gòu)造
我們虛擬構(gòu)造前后級(jí)register的過程,其實(shí)就是我們SDC中,設(shè)置input delay、output delay的過程。
SDC構(gòu)成分析
通過上面的分析,我們可以知道,對(duì)于一個(gè)design,我們需要設(shè)置input/output delay約束以構(gòu)造前后兩級(jí)虛擬register。當(dāng)然,要設(shè)置input/output delay,我們首先需要完成clock的定義;除此之外,我們整個(gè)design當(dāng)中還有很多path,我們不想讓工具完全按照自己的行為去做timing分析,因此還需要設(shè)置一些timing exceptions;最后工具能夠完成這種自動(dòng)timing check的過程,還需要我們提供一些DRC相關(guān)的約束。因此,總結(jié)之后,整個(gè)SDC結(jié)構(gòu)可以劃分為兩大類,如圖4所示,其中一類是timing constraints,實(shí)現(xiàn)對(duì)design的timing約束;另一類是DRC constrains,實(shí)現(xiàn)對(duì)tools DRC方面的約束。當(dāng)然,此劃分也是按照我自己的理解來做的,不同的方面來看,可以做出不同種類的劃分。
圖4 SDC構(gòu)成
圖中timing constrains是最為關(guān)鍵的一部分,最好是由FE(即designer)提供,DRC constraints可以ME/BE或者timing signoff的相關(guān)人員,結(jié)合經(jīng)驗(yàn)來提供具體約束。圖中must部分,是每個(gè)SDC文件中基本上必須要有的,另外not must部分,通常情況下也是肯定存在的,并且這一部分約束通常會(huì)放松tools對(duì)timing的check,因此一定要謹(jǐn)慎…
-
EDA工具
+關(guān)注
關(guān)注
4文章
268瀏覽量
31800 -
RTL
+關(guān)注
關(guān)注
1文章
385瀏覽量
59820 -
DRC
+關(guān)注
關(guān)注
2文章
149瀏覽量
36193 -
虛擬機(jī)
+關(guān)注
關(guān)注
1文章
917瀏覽量
28221 -
SDC
+關(guān)注
關(guān)注
0文章
49瀏覽量
15555
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論