SDC是如何煉成的呢,很多新手對(duì)此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來(lái)學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供鄂城網(wǎng)站建設(shè)、鄂城做網(wǎng)站、鄂城網(wǎng)站設(shè)計(jì)、鄂城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、鄂城企業(yè)網(wǎng)站模板建站服務(wù),十余年鄂城做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
一般地,SDC主要分為三個(gè)部分:時(shí)鐘定義,IO約束,Exception。IO約束在頂層和模塊級(jí)的主要命令都是以下幾個(gè),但是實(shí)際應(yīng)用的復(fù)雜程度不可同日而語(yǔ),下面先介紹模塊級(jí)IO約束實(shí)戰(zhàn)經(jīng)驗(yàn),然后講解頂層IO約束復(fù)雜性,過(guò)程中會(huì)介紹DDR接口時(shí)序。
set_input_delayset_output_delayset_driveset_driving_cellset_input_transitionset_load...
各個(gè)命令的具體用法可以在PT中通過(guò)man了解詳情,這里就不費(fèi)勁重復(fù)了:
pt_shell> man set_input_delay
模塊級(jí)IO約束實(shí)戰(zhàn)
上圖給出了一種IN2REG路徑的示意圖,DUA為當(dāng)前模塊,外部有一個(gè)假想的虛擬寄存器在驅(qū)動(dòng)CIN端口,這種情況下我們可通過(guò)以下命令來(lái)約束:
set period 8create_clock -name CLKP -period $period [get_ports CLKP]#創(chuàng)建同頻率的虛擬時(shí)鐘create_clock -name vCLKP -period $period#參考值為0.6,根據(jù)實(shí)際情況調(diào)整set_input_delay [expr 0.6 * $period] -clock vCLKP [get_ports CIN]#假設(shè)端口buffer為BUFX4set_driving_cell -lib_cell BUFX4 -pin Z [get_ports CIN]
虛擬時(shí)鐘的作用
使用set_input_delay時(shí),可以指定真實(shí)時(shí)鐘CLKP,也可以指定虛擬時(shí)鐘vCLKP,在CTS之前是沒(méi)有區(qū)別的。然而,在CTS之后,如果指定的是真實(shí)時(shí)鐘,那么虛擬寄存器的時(shí)鐘延遲就被忽略了。如果指定的是虛擬時(shí)鐘,工具往往可以根據(jù)內(nèi)部真實(shí)時(shí)鐘的平均延遲來(lái)估算外部虛擬寄存器的時(shí)鐘延遲,更加合理。
一般地,為了讓頂層的時(shí)序更容易滿足,在模塊級(jí)優(yōu)化的時(shí)候,都會(huì)對(duì)自己內(nèi)部的IN2REG和REG2OUT路徑約束更加嚴(yán)格,可以設(shè)置外部的延遲為60%的時(shí)鐘周期,給內(nèi)部的數(shù)據(jù)路徑留40%的空間。不過(guò),具體問(wèn)題需要具體分析了。
需要注意,set_input_delay 可以指定-max和-min選項(xiàng),分別對(duì)應(yīng)setup和hold時(shí)序檢查,如果只是指定其中一個(gè)選項(xiàng),或者都不指定,那么工具在檢查setup和hold時(shí),會(huì)使用相同的值。
端口Buffer和set_driving_cell配合使用
在實(shí)際項(xiàng)目中,為了避免模塊之間,或者模塊和頂層之間IO接口部分出現(xiàn)時(shí)序問(wèn)題,一般會(huì)要求在靠近IO端口的地方添加具有一定驅(qū)動(dòng)能力的端口Buffer。在這種情況下,可以通過(guò)set_driving_cell來(lái)模擬端口的真實(shí)外部環(huán)境。假如沒(méi)有端口Buffer,也可以通過(guò)set_input_transition大致指定輸入端口的驅(qū)動(dòng)能力。
總體來(lái)說(shuō),set_driving_cell會(huì)考慮到OCV的影響,input transition是查表計(jì)算出來(lái)的,而set_input_transition比較簡(jiǎn)單粗暴,在IO端口時(shí)序不那么關(guān)鍵的時(shí)候,也可以使用。但在頂層,一般使用后者,因?yàn)镮O單元的輸入電容較大,芯片外部具備驅(qū)動(dòng)能力較強(qiáng)的器件,標(biāo)準(zhǔn)單元庫(kù)中沒(méi)有buffer能夠驅(qū)動(dòng)。
頂層IO約束實(shí)戰(zhàn)
頂層IO約束在原理上與模塊級(jí)沒(méi)有本質(zhì)區(qū)別,然而由于頂層需要與外部器件進(jìn)行通訊,除了GPIO,還會(huì)接觸到各種標(biāo)準(zhǔn)協(xié)議接口,例如UART,I2C,SPI,LVDS,DDR等等,在寫SDC前需要讀一讀協(xié)議。更復(fù)雜的情況是,由于存在端口復(fù)用的情況,往往同一個(gè)端口具備多種時(shí)序要求,需要逐一定義。
上圖是一個(gè)PinMux(也稱為IOMux)的示意圖,在SoC設(shè)計(jì)中非常常見(jiàn),特別對(duì)于IO limited的芯片來(lái)說(shuō),PinMux是很有必要的。看似復(fù)雜,其實(shí)只要各個(gè)擊破就能達(dá)到目標(biāo),SDC標(biāo)準(zhǔn)制定者已經(jīng)為我們考慮到了這一點(diǎn),通過(guò)set_input_delay的選項(xiàng)-add_delay,可以對(duì)同一個(gè)端口設(shè)置多重約束,例如:
set_input_delay [expr 0.6 * $periodA] -clock CLKA [get_ports CIN] -add_delayset_input_delay [expr 0.3 * $periodB] -clock CLKB [get_ports CIN] -add_delay
另外,針對(duì)頂層輸出數(shù)字端口,需要根據(jù)芯片使用的實(shí)際情況set_load,一般的GPIO端口負(fù)載電容都在pF級(jí)別。
看完上述內(nèi)容是否對(duì)您有幫助呢?如果還想對(duì)相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對(duì)創(chuàng)新互聯(lián)的支持。
標(biāo)題名稱:SDC是如何煉成的呢
本文地址:http://jinyejixie.com/article8/iejiip.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、網(wǎng)站設(shè)計(jì)公司、做網(wǎng)站、企業(yè)建站、微信公眾號(hào)、全網(wǎng)營(yíng)銷推廣
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)
營(yíng)銷型網(wǎng)站建設(shè)知識(shí)