日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當(dāng)前位置:首頁(yè) > 芯聞號(hào) > IC技術(shù)圈
[導(dǎo)讀]本文將以具體實(shí)例來(lái)講解時(shí)序約束中set_multicycle_path的約束方法及其效果。

作者簡(jiǎn)介

白櫟旸(筆名:皮特派),廈大通信系碩士,芯片設(shè)計(jì)與算法工程師,WiFi芯片算法負(fù)責(zé)人。先后供職于多家國(guó)內(nèi)知名芯片公司和創(chuàng)業(yè)團(tuán)隊(duì),從事數(shù)字電路架構(gòu)和算法設(shè)計(jì)工作,具有豐富的數(shù)字設(shè)計(jì)經(jīng)驗(yàn)和算法經(jīng)驗(yàn),以及長(zhǎng)期與模擬設(shè)計(jì)團(tuán)隊(duì)聯(lián)合設(shè)計(jì)數(shù)?;旌想娐返慕?jīng)驗(yàn),擅長(zhǎng)射頻電路相關(guān)數(shù)字校準(zhǔn)算法設(shè)計(jì)以及SoC芯片的架構(gòu)設(shè)計(jì),主持研發(fā)的芯片累積產(chǎn)量已達(dá)上億顆。作為第一發(fā)明人已獲授權(quán)的國(guó)家發(fā)明專利共4項(xiàng)。移知課程《從算法到RTL實(shí)現(xiàn)》主講人。


本文將以具體實(shí)例來(lái)講解時(shí)序約束中set_multicycle_path的約束方法及其效果。

本例的波形如圖1所示,圖中有兩根信號(hào)。位于上面的信號(hào)是被采樣的數(shù)據(jù),名稱為I2C_SCL_IN。位于下面的信號(hào)是要采樣I2C_SCL_IN的時(shí)鐘,稱為sdi_clk_dly。由于它是采樣時(shí)鐘,在路徑上屬于capture clock。

image.png
圖1 本文基于的時(shí)序波形

這里設(shè)定I2C_SCL_IN是每400ns變一次電平,就是說(shuō),它的頻率是800ns,從時(shí)間0點(diǎn)開始,以高電平為起點(diǎn)。產(chǎn)生I2C_SCL_IN的時(shí)鐘是一個(gè)虛擬時(shí)鐘,即在芯片中不存在的時(shí)鐘,命名為vir_clk2。它的頻率自然是I2C_SCL_IN的2倍,即400ns。

sdi_clk2_dly的周期是1600ns,50%占空比,但它的高電平并不是從時(shí)間0點(diǎn)開始,而是如圖所示,向右移動(dòng)了450ns,才開始采樣。sdi_clk_dly用下降沿采樣I2C_SCL_IN。

第一步,我們不設(shè)multicycle path,直接綜合,看綜合結(jié)果。圖 2是setup timing,可以看到,要求的采樣點(diǎn)在1250ns處,就是sdi_clk2_dly的第一個(gè)下降沿所在的位置。I2C_SCL_IN信號(hào)的發(fā)出點(diǎn)是在1200ns,就是1250ns左邊相鄰的那個(gè)I2C_SCL_IN變化沿。

image.png
圖2 不設(shè)multi,建立時(shí)間

圖3是不設(shè)multicycle path得到的hold timing。采樣位置不變,還是1250ns,但是I2C_SCL_IN信號(hào)的分析點(diǎn)1200ns向右移了400ns(一個(gè)vir_clk2周期),等于1600ns,即1250ns右邊相鄰的I2C_SCL_IN變化沿。

注:本文舉的例子是launch clock和capture clock不同頻不同相的例子,比較特殊。更多時(shí)候,我們遇到的都是同頻同相的,此時(shí),hold timing的分析點(diǎn)將仍然是1250ns這個(gè)點(diǎn)。

image.png
圖3 不設(shè)multi,保持時(shí)間

總結(jié):在不設(shè)multicycle_path的情況下,setup timing分析點(diǎn)提前hold timing分析點(diǎn)一個(gè)周期(launch clock周期)。如本例中,采樣點(diǎn)都是1250ns,但setup timing分析點(diǎn)在1200ns,而hold timing分析點(diǎn)在1600ns,兩點(diǎn)間隔一個(gè)lauch clock周期,即400ns。

下一步實(shí)驗(yàn),我們?cè)O(shè)從vir_clk2到sdi_clk2_dly的所有路徑,其setup multicycle值為1,hold multicycle值為0,如圖 4所示。launch clock和capture clock,你選頻率快的那個(gè)作為multicycle移動(dòng)的單位。如果launch clock快,就用-start,如果capture clock快,就用-end。如果是同頻同相的,做了時(shí)鐘樹平衡的兩個(gè)時(shí)鐘,那就隨便你用-start或-end,結(jié)果一樣。setup和hold都要設(shè),setup設(shè)得比hold大1。

set_multicycle_path 1 -setup -start -from vir_clk2 -to sdi_clk2_dly
set_multicycle_path 0 -hold -start -from vir_clk2 -to sdi_clk2_dly

圖4(代碼) 設(shè)置multicycle_path的sdc語(yǔ)法(簡(jiǎn)稱設(shè)置為“1,0”)

圖 5是setup分析結(jié)果,比較一下我們什么都不設(shè)的情況,是不是完全一樣呢?

圖 6是hold分析結(jié)果,是不是也跟不約束multicycle結(jié)果一樣呢?

總結(jié):setup multicycle設(shè)成1,hold multicycle設(shè)成0,跟不設(shè)multicycle結(jié)果一樣。換句話說(shuō),不設(shè)multicycle,就相當(dāng)于給setup multicycle設(shè)成1,給hold multicycle設(shè)成0。由此,我們知道了setup multicycle的默認(rèn)值是1,hold multicycle的默認(rèn)值是0。

image.png
圖5 設(shè)置setup multicycle_path為1的setup時(shí)序分析結(jié)果

image.png
圖6 設(shè)置hold multicycle_path為0的hold時(shí)序分析結(jié)果

繼續(xù)我們的實(shí)驗(yàn)。這回把setup multicycle設(shè)成2,把hold multicycle設(shè)成1試試。約束如圖 7所示。

set_multicycle_path 2 -setup -start -from vir_clk2 -to sdi_clk2_dly
set_multicycle_path 1 -hold -start -from vir_clk2 -to sdi_clk2_dly

圖7(代碼) 設(shè)置multicycle_path的sdc語(yǔ)法(簡(jiǎn)稱設(shè)置為“2,1”)

我們看看效果。采樣點(diǎn)不變,還是1250ns,但是setup分析點(diǎn)變了(如圖 8所示)。原來(lái)是1200ns,現(xiàn)在向左移動(dòng)了400ns,變成了800ns。可以看到,setup的時(shí)序冗余度slack放寬了一個(gè)lauch clock周期。

這一效果并不意外,因?yàn)榧s束-start -setup,其正方向就是向左移動(dòng)分析點(diǎn),我們從默認(rèn)值1設(shè)為2(2-1=1),就是說(shuō)向左移動(dòng)1個(gè)lauch clock周期。

image.png
圖8 設(shè)置setup multicycle_path為2的setup時(shí)序分析結(jié)果

再看hold分析結(jié)果(如圖 9所示):還是默認(rèn)位置不變,分析點(diǎn)仍在1600ns處。

image.png
圖9 設(shè)置setup multicycle_path為1的hold時(shí)序分析結(jié)果

有人奇怪,明明-start -hold的值從0變成了1,為啥分析結(jié)果不變呢。

因?yàn)?start -hold是相對(duì)變化,不是絕對(duì)變化。它需要根據(jù)setup的分析點(diǎn)位置來(lái)定hold的分析點(diǎn)位置,也就是說(shuō),hold是以setup分析點(diǎn)作為參考點(diǎn)的(錨點(diǎn)),hold是相對(duì)于參考點(diǎn)在移動(dòng)。雖然-start -hold的值從0變成了1,但setup分析點(diǎn)向左移動(dòng)了1個(gè)周期,hold分析的正方向是與setup相反的。setup向左移動(dòng)1個(gè)周期,那hold設(shè)成1,就意味著hold分析點(diǎn)向右移動(dòng)1個(gè)周期。

有人問(wèn):向右?從哪開始向右移?從1600ns嗎?那移動(dòng)完不就時(shí)2000ns了嗎?為啥這里還是1600ns呢?

答案是:從1200ns處向右移1個(gè)周期,正好是1600ns。

為什么是從1200ns處移動(dòng)呢?

因?yàn)閟etup移動(dòng)時(shí),它并不是獨(dú)立地自己左移,它還會(huì)帶著hold一起左移。setup從1200移動(dòng)到800,hold被它帶著,從1600移動(dòng)到了1200。為了讓hold返回原來(lái)的位置1600,我們就增加了-start -hold 這句約束,將左移到1200的hold再右移回來(lái)。

為什么非要右移到1600ns呢?在1200ns處分析hold不是挺好的嗎?

好啥呀,采樣點(diǎn)在1250ns,hold意思是在采樣之后數(shù)據(jù)仍然要堅(jiān)持不動(dòng)的時(shí)間,那應(yīng)該在采樣后分析這個(gè)時(shí)間呀。1200ns是在采樣前,在采樣前數(shù)據(jù)就變了,那還采個(gè)啥?

總結(jié):setup multicycle設(shè)成2,hold multicycle設(shè)成1,會(huì)讓setup timing放寬1個(gè)周期(launch clock周期)的時(shí)序要求,而hold要求并沒(méi)有放寬,也沒(méi)有收緊,而是原地不動(dòng)。

為了證明上文所說(shuō)的:hold分析點(diǎn)如果不另加約束的話,它會(huì)跟著setup的約束而運(yùn)動(dòng)。我再增加一個(gè)實(shí)驗(yàn)。約束如下(圖 10):我把對(duì)hold的約束注釋掉,咱看看效果。

set_multicycle_path 2 -setup -start -from vir_clk2 -to sdi_clk2_dly 
#set_multicycle_path 0 -hold -start -from vir_clk2 -to sdi_clk2_dly

圖10(代碼) 不要hold約束,只進(jìn)行setup的約束(簡(jiǎn)稱設(shè)置為“2,x”)

setup的效果就不用再貼圖了哈,跟上面的一樣,因?yàn)榧s束一樣嘛,我們重點(diǎn)看hold的分析。

圖 11是hold的分析,它的分析點(diǎn)在1200ns,證明了我上面的說(shuō)法:hold以setup為錨點(diǎn),setup動(dòng),hold不用約束,自動(dòng)就跟著動(dòng)。除非我們加約束把hold再移回去。

image.png
圖11 跟著setup一起跑的hold分析點(diǎn)

最后,我們做個(gè)有趣的實(shí)驗(yàn)。我們說(shuō),setup的默認(rèn)值是1,一般設(shè)置,就是從1開始,要放寬對(duì)setup的要求,就逐漸提高數(shù)值,比如設(shè)成2、3、4等等。這些設(shè)置的結(jié)果在看完上文后,大家應(yīng)該都能分析。但如果我們把setup設(shè)成0呢,比默認(rèn)值1還小,那結(jié)果會(huì)是怎樣的呢?

我們的時(shí)序約束如圖 12所示,hold的設(shè)置仍然注掉,我們看看它的行為。

set_multicycle_path 0 -setup -start -from vir_clk2 -to sdi_clk2_dly 
#set_multicycle_path 0 -hold -start -from vir_clk2 -to sdi_clk2_dly

圖12(代碼) 將setup設(shè)成0(簡(jiǎn)稱設(shè)置為“0,x”)

在秀時(shí)序之前,我們先猜猜結(jié)果會(huì)怎樣。設(shè)1是默認(rèn)位置,即采樣點(diǎn)左邊1個(gè)周期。設(shè)2是向左移1個(gè)周期,即采樣點(diǎn)左邊2個(gè)周期。那么這回我設(shè)成0,應(yīng)該是反方向,向右移,即采樣點(diǎn)右邊1個(gè)周期。分析點(diǎn)應(yīng)該在1600ns處。

再看結(jié)果(圖 13),采樣點(diǎn)不在1250ns了,而是換到了-350ns,分析點(diǎn)換成了0ns。跟上面我們分析的一致嗎?

image.png
圖13 設(shè)置setup multicycle_path為0的setup時(shí)序分析結(jié)果

大家看本文第一張時(shí)序圖,-350ns,其實(shí)就是1250ns時(shí)鐘下降沿左邊的相鄰下降沿。我們分析的是1250ns右邊第一個(gè)vir_clk2的沿,即1600ns處。而如果采樣點(diǎn)變?yōu)?350ns,那么它右邊第一個(gè)vir_clk2的沿,即0ns處。所以我們分析沒(méi)錯(cuò)。

分析是沒(méi)錯(cuò)啦,但為啥平時(shí)沒(méi)人設(shè)成0呢?大家想想,setup timing是數(shù)據(jù)先發(fā)生,再有一個(gè)時(shí)鐘來(lái)采它。如果時(shí)鐘采的時(shí)候數(shù)據(jù)還沒(méi)發(fā)生,那采的就不是這個(gè)數(shù)據(jù)了。我們看到,采樣位置是-350ns,但數(shù)據(jù)實(shí)際上是0ns到達(dá)的,那能采到這個(gè)數(shù)據(jù)嗎?根本不能,所以沒(méi)人嘗試過(guò)設(shè)成0。我們這里的實(shí)驗(yàn)也僅僅是給大家說(shuō)明語(yǔ)法而已。

對(duì)應(yīng)的hold也貼出來(lái)(圖 14),我們hold沒(méi)約束,所以跟著setup向右移動(dòng),應(yīng)該是移到了400ns??纯唇Y(jié)果吧。

果然如此,hold分析點(diǎn)在400ns處。

image.png
圖14 跟著setup一起跑的hold分析點(diǎn)

一般,hold就要設(shè)得比setup小1。這樣才能讓hold分析點(diǎn)回到原位。那本例中,setup已經(jīng)設(shè)為0了,難道hold還能設(shè)為-1不成?當(dāng)然能,約束如圖 15所示。

set_multicycle_path 0 -setup -start -from vir_clk2 -to sdi_clk2_dly
set_multicycle_path -1 -hold -start -from vir_clk2 -to sdi_clk2_dly

圖15(代碼) 將setup設(shè)成0,hold設(shè)成-1(簡(jiǎn)稱設(shè)置為“0,-1”)

setup沒(méi)變,我們只看hold。結(jié)果如圖 16所示,果不出所料,hold分析點(diǎn)從原來(lái)的400ns,左移到了0ns。約束setup右移,用同樣方法約束hold就是左移。

image.png
圖16 設(shè)置setup multicycle_path為-1的hold時(shí)序分析結(jié)果

完結(jié),希望能夠排除你心中的疑惑。


本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動(dòng)電源

在工業(yè)自動(dòng)化蓬勃發(fā)展的當(dāng)下,工業(yè)電機(jī)作為核心動(dòng)力設(shè)備,其驅(qū)動(dòng)電源的性能直接關(guān)系到整個(gè)系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動(dòng)勢(shì)抑制與過(guò)流保護(hù)是驅(qū)動(dòng)電源設(shè)計(jì)中至關(guān)重要的兩個(gè)環(huán)節(jié),集成化方案的設(shè)計(jì)成為提升電機(jī)驅(qū)動(dòng)性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機(jī) 驅(qū)動(dòng)電源

LED 驅(qū)動(dòng)電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個(gè)照明設(shè)備的使用壽命。然而,在實(shí)際應(yīng)用中,LED 驅(qū)動(dòng)電源易損壞的問(wèn)題卻十分常見,不僅增加了維護(hù)成本,還影響了用戶體驗(yàn)。要解決這一問(wèn)題,需從設(shè)計(jì)、生...

關(guān)鍵字: 驅(qū)動(dòng)電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動(dòng)電源的公式,電感內(nèi)電流波動(dòng)大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計(jì) 驅(qū)動(dòng)電源

電動(dòng)汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動(dòng)汽車的核心技術(shù)之一是電機(jī)驅(qū)動(dòng)控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機(jī)驅(qū)動(dòng)系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動(dòng)汽車的動(dòng)力性能和...

關(guān)鍵字: 電動(dòng)汽車 新能源 驅(qū)動(dòng)電源

在現(xiàn)代城市建設(shè)中,街道及停車場(chǎng)照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進(jìn)步,高亮度白光發(fā)光二極管(LED)因其獨(dú)特的優(yōu)勢(shì)逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動(dòng)電源 LED

LED通用照明設(shè)計(jì)工程師會(huì)遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動(dòng)電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動(dòng)電源的電磁干擾(EMI)問(wèn)題成為了一個(gè)不可忽視的挑戰(zhàn)。電磁干擾不僅會(huì)影響LED燈具的正常工作,還可能對(duì)周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來(lái)解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動(dòng)電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機(jī)重量也有所下降,所以,現(xiàn)在的LED驅(qū)動(dòng)電源

關(guān)鍵字: LED 驅(qū)動(dòng)電源 開關(guān)電源

LED驅(qū)動(dòng)電源是把電源供應(yīng)轉(zhuǎn)換為特定的電壓電流以驅(qū)動(dòng)LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動(dòng)電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動(dòng)電源
關(guān)閉