dc概论之IO约束
http://bb2hh.blogbus.com/logs/39654476.html?
注明:如需轉(zhuǎn)載,請注明作者出處,謝謝~,Author:pythonlong
?以下根據(jù)資料和個(gè)人體會(huì)整理,如果錯(cuò)誤,疑問歡迎請指正,討論!!
用dc綜合過程中需要對輸入輸出端口進(jìn)行約束。
一般的約束出發(fā)點(diǎn)有兩種,一種是dc,一種是ac。
所謂的dc是指已知輸入延遲,或者輸出延遲。這個(gè)要從系統(tǒng)考慮。
所謂的ac是指輸入輸出延遲未知,但是知道器件輸入需要的保持,建立時(shí)間的關(guān)系。
下面我們看下對于輸入,根據(jù)dc,ac如何約束。
1.DC
?如果我們知道Tdelay的max,min那么很容易的寫出約束
?set_input_delay -max Tmax -clock Clk DIN
?set_input_delay -min Tmin -clock Clk DIN
?但是如果我們不知道輸入延遲的最大最小值。那么如何約束呢。
?先看下最大最小延遲對于器件的建立,保持檢查起到的影響
?如上圖所示:Tdelay_min對信號的影響可用從T3出看出。
?Tdelay_max對信號的影響可用從T1處看出。
?所以信號的變化只能在斜線的陰影區(qū)。
2.AC
?基于上圖的認(rèn)識,如果我們對于設(shè)計(jì)的芯片的輸入信號的建立,保持有所了解。
?可用使用AC來約束,如上圖,我們知道對輸入信號的要求是建立要在Setup之前,
?保持要在Hold之后。那么約束可用寫成:
?set_input_delay -max Tperiod-Setup -clock Clk DIN
?set_input_delay -min Hold -clock Clk DIN
再看下對于輸出,根據(jù)dc,ac如何約束。
1.DC
?如果我們知道pcb板上信號延遲的最大,最小,也很容易寫出約束。
?(這里的最大最小延遲僅指路徑上的信號延遲,不包含器件如上圖中D2本身的建立時(shí)間,保持時(shí)間要求,
?所以設(shè)置約束的時(shí)候要主意下)
?set_output_delay -max Tdelay_max + Tsetup -clock Clk DOUT
?set_output_delay -min Tdelay_min - Thold -clock Clk DOUT
下面再看下輸出最大最小延遲對于建立,保持檢查起到的影響
?如上圖所示,最大延遲影響如T1所示,最小延遲影響如T3所示,這里假設(shè)器件的setup,hold均為0,可用容易理解。
這里要主意,最小延遲的影響,因?yàn)槿魏窝舆t都會(huì)滿足要求。最小延遲影響,要求信號在細(xì)條陰影區(qū)變化,但是考慮到launch邊沿在T2,
所以信號的允許變化范圍如陰影區(qū)顯示(大條)。
2.AC
但是通常設(shè)計(jì)的chip外接可能還是chip或者其他器件,這些器件都有建立,保持要求。
所以如果上圖的時(shí)序改成下面這種基于外圍器件的建立,保持要求的。則更為理解。
約束也就相應(yīng)的改成:
?set_output_delay -max Setup -clock Clk DOUT
?set_output_delay -min -Hold -clock Clk DOUT
?如果注意觀察就會(huì)發(fā)現(xiàn)上如對于信號的要求都是要求信號在相關(guān)時(shí)鐘沿附件保持穩(wěn)定。
?有的時(shí)候我們要求信號在相關(guān)時(shí)鐘沿附近是需要變化的。
?這里要用到零多周期路徑。
?下面看下對于一般的單周期路徑,如何寫成多周期路徑
?
那么如果對于零多周期路徑,建立,保持如何檢查:
當(dāng)設(shè)置set_multicycle_path -setup 0 的檢查如下:
當(dāng)再次設(shè)置set_multicycle_cycle -hold -1 ..時(shí)序檢查如下:
?再如下圖,我們要求信號在S1,H1區(qū)域內(nèi)變化。
?如何約束呢。
?首先是設(shè)置0多周期路徑。
?set_multicycle_path -setup 0 .....
?set_multicycle_path -hold -1 .....
?然后根據(jù)要求設(shè)置最大最小延遲。
?有了上面的認(rèn)識,我們大約可用了解:
?如果設(shè)置了最大延遲,那么信號只能在最大延遲前變化,
?如果設(shè)置了最小延遲,那么信號只能在最小延遲后變化。
?所以我們設(shè)置成:
?set_output_delay -max -S1 .....
?set_output_delay -min H1 .....
?注意符號:)
?接著我們來考慮下源同步接口,所謂源同步接口就是輸入輸出帶有時(shí)鐘線。
?同時(shí)數(shù)據(jù)的變化和時(shí)鐘沿對齊(或上升沿,或下降沿,或雙沿)。
?如下圖,單邊沿對齊的源同步接口。數(shù)據(jù)DQ和時(shí)鐘SCK對齊,CAC地址控制信號
?
?當(dāng)然我們不知道pcb走線延遲,但是我們知道鏈接的器件的建立,保持要求分別為Th_ext,Ts_ext
?我們自己chip的建立保持要求為Th,Ts
?我們可用約束如下:
?create_generated_clock -name clkx1 -multiply_by 1 -source clk PLL/clkx1
?create_generated_clock -name SCK -divide_by 1 -source PLL/clkx1 SCK
?set_input_delay -max T-Ts -clock clkx1 DQ ?
?set_input_delay -min Th -clock clkx1 DQ
?set_output_delay -max Ts_ext -clock SCK {DQ CAC}
?set_output_delay -min -Th_ext -clock SCK {DQ CAC}
?如果數(shù)據(jù)和時(shí)鐘是雙邊沿對齊的,建立,保持條件如上,同時(shí)下降沿和上升沿要求一樣。
?
? create_generated_clock -name clkx1 -multiply_by 1 -source clk PLL/clkx1
?create_generated_clock -name SCK -divide_by 1 -source PLL/clkx1 SCK
?set_output_delay -max Ts_ext -clock SCK CAC
?set_output_delay -min -Th_ext -clock SCK CAC
?set_input_delay -max T-Ts -clock clkx1 {DQ DQS}
?set_input_delay -max T-Ts -add_delay -clock clkx1 -clock_fall clkx1 {DQ DQS}
?set_input_delay -min Th -clock clkx1 {DQ DQS}
?set_input_delay -min Th -add_delay -clock clkx1 -clock_fall clkx1 {DQ DQS}
?set_output_delay -max Ts_ext -clock SCK {DQ DQS}
?set_output_delay -max Ts_ext -add_delay -clock SCK -clock_fall {DQ DQS}
?set_output_delay -min -Th_ext -clock SCK {DQ DQS}
?set_output_delay -min -Th_ext -add_delay -clock SCK -clock_fall {DQ DQS}
轉(zhuǎn)載于:https://www.cnblogs.com/liuokay/archive/2011/04/05/2005699.html
總結(jié)
- 上一篇: 委托声明----委托实例化-----委托
- 下一篇: 免费Google地图API使用说明(转)