本發(fā)明屬于半導(dǎo)體集成電路中數(shù)字物理設(shè)計(jì)技術(shù)領(lǐng)域,尤其涉及工作頻率高、速度快的soc(systemonchip,片上系統(tǒng))物理設(shè)計(jì)中,實(shí)現(xiàn)了對(duì)時(shí)鐘樹(shù)邏輯物理約束扇出違約的快速修復(fù),該方法也可以應(yīng)用于布線(xiàn)階段扇出違約的快速修復(fù)。
背景技術(shù):
時(shí)鐘樹(shù)綜合是數(shù)字物理設(shè)計(jì)的核心,時(shí)鐘樹(shù)傳遞過(guò)來(lái)的時(shí)鐘信號(hào)驅(qū)動(dòng)了整個(gè)系統(tǒng)的工作,時(shí)鐘樹(shù)上的邏輯約束違約必須要清理干凈。在進(jìn)行時(shí)鐘樹(shù)綜合的時(shí)候,首先需要設(shè)置邏輯約束,如扇出、轉(zhuǎn)換時(shí)間、負(fù)載電容。扇出收斂是邏輯收斂的一個(gè)重要目標(biāo),扇出過(guò)大會(huì)導(dǎo)致前一級(jí)寄存器難以驅(qū)動(dòng)后級(jí)寄存器,從而使該級(jí)時(shí)序不能夠精確的通過(guò)工藝庫(kù)得到,影響建立時(shí)間和保持時(shí)間的精度,進(jìn)而使電路不能準(zhǔn)確按照時(shí)鐘節(jié)拍工作?,F(xiàn)有數(shù)字物理設(shè)計(jì)軟件如icc(iccompiler)可以解決大部分扇出問(wèn)題,但是由于物理設(shè)計(jì)軟件進(jìn)行布局布線(xiàn)時(shí)需要考慮的因素較多,如阻擋位置、標(biāo)準(zhǔn)單元擁塞程度、時(shí)序問(wèn)題等等,或多或少的存在一些難以修掉的扇出違約。
這時(shí)候通常的解決方案一種是手動(dòng)修復(fù),但是違約的數(shù)目如果過(guò)大,手動(dòng)修復(fù)的效率太低,也容易出錯(cuò);另一種方法是使用eco(engineeringchangeorder,工程修改)工具,但是eco工具價(jià)格很昂貴,比如某國(guó)產(chǎn)公司的eco工具,至少得20~30萬(wàn)人民幣,而且用戶(hù)操作界面不是很友好,并且需要花較長(zhǎng)時(shí)間進(jìn)行eco工具的初始化,eco工具導(dǎo)出的腳本,最終還得要數(shù)字物理軟件進(jìn)行執(zhí)行,由于還存在不同軟件之間的關(guān)聯(lián)問(wèn)題,這樣就需要在eco工具和數(shù)字物理設(shè)計(jì)軟件之間進(jìn)行多輪交互才能徹底解決問(wèn)題。
2012年3月,知網(wǎng)公開(kāi)了一篇論文名為“基于socencounter的32位cpu雙界面卡芯片后端設(shè)計(jì)的研究和實(shí)現(xiàn)”,在文中第57頁(yè)提出了“原地優(yōu)化”的方法來(lái)解決扇出違約,不同于本設(shè)計(jì)實(shí)現(xiàn)方法,本設(shè)計(jì)發(fā)明通過(guò)使用tcl編寫(xiě)腳本完成了對(duì)扇出違約pin的修復(fù)。
2006年5月,知網(wǎng)公開(kāi)了一篇論文名為“數(shù)字電視機(jī)頂盒芯片數(shù)字后端設(shè)計(jì)”,在文中第24頁(yè)提出了最大扇出綜合方法,其使用數(shù)字后端設(shè)計(jì)軟件astro對(duì)整個(gè)設(shè)計(jì)的高扇出進(jìn)行綜合,但不同于本設(shè)計(jì),可以針對(duì)具體某個(gè)扇出違約pin進(jìn)行修復(fù)。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明所要解決的技術(shù)問(wèn)題是提供一種基于tcl/tk腳本的時(shí)鐘樹(shù)扇出違約修復(fù)方法,可以快速修復(fù)時(shí)鐘樹(shù)扇出違約,并且可以擴(kuò)展應(yīng)用修復(fù)數(shù)字物理設(shè)計(jì)任何階段的扇出違約,該方法加速了邏輯約束收斂的時(shí)間,減少了手動(dòng)操作,提高了數(shù)字物理設(shè)計(jì)可靠性與效率。
為解決上述技術(shù)問(wèn)題,本發(fā)明提供一種基于tcl/tk腳本的時(shí)鐘樹(shù)扇出違約修復(fù)方法,其特征是,包括以下步驟:
1)輸入扇出違約引腳的全稱(chēng)、插入緩沖器的名稱(chēng)、是否第一次執(zhí)行本方法這三個(gè)參數(shù);
2)遍歷扇出違約引腳連接的所有扇出單元,并將所有單元平均分成兩組;
3)將所有扇出單元的時(shí)序端口與扇出違約引腳的連接斷開(kāi);
4)抓取扇出單元對(duì)應(yīng)層次的名稱(chēng),在相應(yīng)層次下創(chuàng)建需要增加的新的緩沖器和連線(xiàn);
5)按照不改變電路邏輯關(guān)系的原則,將兩組扇出單元分別和兩個(gè)上述緩沖器輸出相連,兩個(gè)上述緩沖器輸入分別和違約引腳相連。
步驟2)中,如果有扇出違約的引腳是頂層的單元,通過(guò)其邏輯端口遍歷所有扇出單元;如果是多層次的單元的引腳,直接按照實(shí)際連接情況遍歷所有扇出單元。
步驟4)中,使用正則表達(dá)式抓取扇出單元對(duì)應(yīng)層次的名稱(chēng)。
步驟4)中,具體包括以下步驟:
根據(jù)輸入的是否第一次執(zhí)行本方法的參數(shù),生成全局控制變量;
使用全局變量創(chuàng)建兩個(gè)新的緩沖器和兩條新連線(xiàn)。
步驟5)中,使用全局變量創(chuàng)建兩條新連線(xiàn),分別連接兩組扇出單元;使用全局變量創(chuàng)建兩個(gè)新的緩沖器,分別與新創(chuàng)建的連線(xiàn)連接。
對(duì)上述步驟編寫(xiě)一扇出修復(fù)軟件程序,采用tcl編寫(xiě)軟件的邏輯處理部分,使用tk編寫(xiě)軟件圖形化界面。
本發(fā)明所達(dá)到的有益效果:
本發(fā)明使用tcl/tk語(yǔ)言編寫(xiě)修扇出的eco工具,主要使用tcl完成邏輯部分的處理,使用tk(tcl語(yǔ)言的圖形化界面工具集)完成該工具的用戶(hù)界面的實(shí)現(xiàn)。該工具可集成在icc的菜單欄中,并且工具在版圖上所增加的單元直接在icc版圖界面即可看到,完全去除不同軟件之間交互操作,該工具直接利用icc的初始設(shè)置,因此也完全不用花時(shí)間再進(jìn)行初始設(shè)化,進(jìn)而能夠快速、有效、準(zhǔn)確的修復(fù)扇出違約,加速了邏輯約束收斂的時(shí)間,減少了手動(dòng)操作,提高了數(shù)字物理設(shè)計(jì)可靠性與效率。
附圖說(shuō)明
圖1本發(fā)明方法的實(shí)現(xiàn)流程圖;
圖2扇出修復(fù)軟件菜單;
圖3扇出修復(fù)軟件圖形界面;
圖4修復(fù)前后的扇出報(bào)告;
圖5扇出軟件修復(fù)前后的版圖對(duì)比。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明作進(jìn)一步描述。以下實(shí)施例僅用于更加清楚地說(shuō)明本發(fā)明的技術(shù)方案,而不能以此來(lái)限制本發(fā)明的保護(hù)范圍。
本發(fā)明的使用tcl腳本編寫(xiě)邏輯處理部分的功能,使用tk編寫(xiě)圖形化操作界面,使用數(shù)字物理設(shè)計(jì)軟件提供的接口將編寫(xiě)軟件集成到菜單欄中即可。程序具體實(shí)現(xiàn)流程圖1所示。首先,必須得輸入扇出違約引腳的全稱(chēng)和插入緩沖器的名稱(chēng)、是否第一次執(zhí)行本方法程序等三個(gè)參數(shù),在解決扇出問(wèn)題的時(shí)候會(huì)使用到這三個(gè)參數(shù)。接著需要遍歷扇出違約引腳連接的所有單元,并將所有單元平均分成兩組。這時(shí)候存在單元層次結(jié)構(gòu)的問(wèn)題,需要按兩種情況進(jìn)行考慮,如果有扇出違約引腳是頂層的單元,那么就需要通過(guò)其邏輯端口遍歷所有扇出單元;如果是多層次的單元的引腳,那么直接按照實(shí)際連接情況遍歷所有扇出單元。接著將所有扇出單元的時(shí)序端口與扇出違約引腳的連接斷開(kāi),使用正則表達(dá)式抓取扇出單元對(duì)應(yīng)層次的名稱(chēng),在相應(yīng)層次下創(chuàng)建需要增加的緩沖器和連線(xiàn)。最后按照不改變電路邏輯關(guān)系的原則,將兩組扇出單元分別和兩個(gè)緩沖器輸出相連,兩個(gè)緩沖器輸入分別和違約引腳相連即可。
使用本方法僅需輸入扇出違約引腳、緩沖器的名稱(chēng)、是否第一次執(zhí)行本方法軟件等三個(gè)參數(shù),軟件得到這些信息之后,就會(huì)自動(dòng)提取所有扇出違約引腳相連的單元、違約引腳單元的坐標(biāo)信息,自動(dòng)創(chuàng)建需要增加的連線(xiàn)和緩沖器,并按照相應(yīng)邏輯關(guān)系進(jìn)行連線(xiàn)。本設(shè)計(jì)方法僅僅需要輸入三個(gè)參數(shù)就解決了對(duì)應(yīng)引腳的扇出問(wèn)題,大大的減少了手工操作,提高了可靠性。原本手動(dòng)操作修復(fù)一個(gè)引腳扇出違約需要至少10分鐘,使用本方法軟件填入三個(gè)參數(shù),軟件修復(fù)扇出違約問(wèn)題不到1分鐘,極大的提高了效率。本方法的軟件的輸入代碼稍加變化,也可實(shí)現(xiàn)扇出違約引腳批量修改,可擴(kuò)展性極強(qiáng)。
1、根據(jù)算法流程編寫(xiě)扇出修復(fù)軟件,主要使用tcl編寫(xiě)軟件的邏輯處理部分,圖形化界面使用tk來(lái)實(shí)現(xiàn)。
2、接著在linux系統(tǒng)(一種開(kāi)源操作系統(tǒng))下啟動(dòng)icc,在icc的對(duì)話(huà)框中讀取源程序文件,就可以把這個(gè)軟件集成在icc的菜單欄中。如圖2所示,具體位置在菜單tclprogram下。
3、在tclprogram菜單下會(huì)看到兩個(gè)選項(xiàng),第一個(gè)為多層次單元(hierarchy)扇出違約修復(fù)使用,第二個(gè)為頂層單元(top)扇出違約修復(fù)使用,詳細(xì)界面如圖3所示,在第一個(gè)輸入欄中輸入有扇出違約的pin引腳名,多層次單元和頂層單元要區(qū)分正確。第二個(gè)對(duì)話(huà)框中輸入選擇的緩沖器名稱(chēng),一般選擇驅(qū)動(dòng)能力適中的緩沖器,在圖3中選擇了slow庫(kù)中的clkbux8這個(gè)緩沖器。第三個(gè)對(duì)話(huà)框中輸入的參數(shù),表示是否第一次執(zhí)行該程序,如果是第一次執(zhí)行該程序,則填1,這個(gè)變量會(huì)控制全局創(chuàng)建線(xiàn)網(wǎng)和緩沖器的命名規(guī)則,其他情況一定要寫(xiě)0。設(shè)置完成之后點(diǎn)擊按鈕fix之后,這個(gè)fix按鈕基于tk,與修復(fù)扇出軟件啟動(dòng)命令綁定在一起,這樣軟件就會(huì)自動(dòng)修復(fù)這個(gè)扇出違約問(wèn)題。在此以修復(fù)u_syncode_top/u_jlxz_s3/cts_clk_50m_cto_delay461/y這個(gè)引腳的扇出為例。
從圖4的修復(fù)前報(bào)告中可以看出這個(gè)引腳的實(shí)際扇出為16,扇出約束為12,因此這個(gè)引腳的違約數(shù)是4,修復(fù)前時(shí)鐘樹(shù)clk_50m上共有6個(gè)扇出違約。從修復(fù)之后的報(bào)告中可以看出,報(bào)告中已經(jīng)沒(méi)有了之前引腳的違約了,并且時(shí)鐘樹(shù)clk_50m的扇出違約數(shù)量也從之前的6個(gè)降為5個(gè)。從報(bào)告中能看出u_syncode_top/u_jlxz_s3/cts_clk_50m_cto_delay461/y這個(gè)引腳的扇出違約已經(jīng)被成功修復(fù)掉了。
從圖5中能看到修復(fù)前,版圖上扇出違約引腳的周?chē)鷽](méi)有別的單元,為了修復(fù)該引腳的扇出違約,在其附件增加了兩個(gè)緩沖器,將扇出違約引腳的連線(xiàn)打斷,再插入兩個(gè)合適的緩沖器,分別將兩個(gè)緩沖器與扇出違約引腳進(jìn)行連接,將之前單路分成兩路,u_syncode_top/u_jlxz_s3/cts_clk_50m_cto_delay461/y這個(gè)引腳的扇出從原來(lái)的16變?yōu)?,兩個(gè)緩沖器分別驅(qū)動(dòng)8個(gè)標(biāo)準(zhǔn)單元,這樣就解決了這個(gè)引腳的扇出違約問(wèn)題。
以上所述僅是本發(fā)明的優(yōu)選實(shí)施方式,應(yīng)當(dāng)指出,對(duì)于本技術(shù)領(lǐng)域的普通技術(shù)人員來(lái)說(shuō),在不脫離本發(fā)明技術(shù)原理的前提下,還可以做出若干改進(jìn)和變形,這些改進(jìn)和變形也應(yīng)視為本發(fā)明的保護(hù)范圍。