劉 斌,虞小鵬,譚年熊
(1.浙江大學(xué)微納電子學(xué)院,浙江杭州 310000;2.西安路科驗(yàn)視集成電路技術(shù)咨詢有限公司,陜西西安 710000)
在常規(guī)芯片開發(fā)流程中,時(shí)鐘信息來源于系統(tǒng)工程師(System Engineer,SE),包含時(shí)鐘樹[1]和時(shí)鐘頻率。核心時(shí)鐘信息一般會采用Excel 表格形式進(jìn)行人工維護(hù)。接下來該表格信息交由設(shè)計(jì)工程師(Design Engineer,DE),他們根據(jù)時(shí)鐘信息來實(shí)現(xiàn)設(shè)計(jì),并進(jìn)一步細(xì)化時(shí)鐘表格內(nèi)的信息。DE 在填充更多時(shí)鐘信息后,將其交由驗(yàn)證工程師(Verification Engineer,VE)和后端工程師(Backend Engineer,BE)。最終,不同模塊、子系統(tǒng)的時(shí)鐘信息會合并在一起用來描述整個(gè)系統(tǒng)的時(shí)鐘信息。在這一過程中,不同時(shí)鐘信息來源、不同時(shí)鐘信息的維護(hù)角色的合作可能會增加時(shí)鐘信息出現(xiàn)錯(cuò)誤的可能性,同時(shí)在系統(tǒng)級和子系統(tǒng)級之間的時(shí)鐘信息不匹配也會帶來物理實(shí)現(xiàn)時(shí)的時(shí)序集成風(fēng)險(xiǎn)[2]。
在具備了時(shí)鐘信息一致性管理的方案以后,就可以實(shí)現(xiàn)中心化的時(shí)鐘信息存儲、集成和提取[3],該方案基于Python、Tkinter[4]和Graphviz[5]實(shí)現(xiàn)。時(shí)鐘信息一致性管理方案由SE 和DE 共同維護(hù),而VE、BE和DFT(Design For Test)工程角色均可以從時(shí)鐘信息中提取并生成準(zhǔn)確的時(shí)鐘信息腳本,用于不同的工具流程。
要解決時(shí)鐘數(shù)據(jù)的一致性,就需要提供一種新的定制化方案,不但需要中心化地存儲時(shí)鐘數(shù)據(jù),也需要滿足各種數(shù)據(jù)信息的提取需求,這一方案取名為ClockManager(CM)。采用CM 對時(shí)鐘信息管理時(shí),SE 一般會采用Excel 格式存儲、編輯時(shí)鐘信息,由CM 將其提取為各個(gè)設(shè)計(jì)部分的時(shí)鐘信息,接下來DE 會基于CM 來修改時(shí)鐘信息。同時(shí)CM 也會基于SE 初始提供的時(shí)鐘信息與DE 做過編輯改動(dòng)的時(shí)鐘信息做比較,以確保在SE 和DE 編輯的時(shí)鐘信息的一致性[6]。
一旦各個(gè)模塊和子系統(tǒng)的時(shí)鐘信息一致性得到保證,則頂層系統(tǒng)DE 就會將各個(gè)設(shè)計(jì)部分的時(shí)鐘信息組織在一起,繼而合并構(gòu)建為完整的系統(tǒng)級時(shí)鐘信息數(shù)據(jù),也可以由此生成一個(gè)完整的覆蓋系統(tǒng)全部時(shí)鐘信息的表格。在此之后,SE、DE、VE、BE 和DFT 都可以從CM 提取時(shí)鐘數(shù)據(jù),快速生成與時(shí)鐘有關(guān)的腳本信息[7]。CM 合并系統(tǒng)時(shí)鐘信息表如圖1所示。
圖1 CM合并系統(tǒng)時(shí)鐘信息表
CM 工具用戶可以基于表格信息提取時(shí)鐘信息,并將時(shí)鐘信息顯示在圖形用戶界面(Graphic User Interface,GUI)。CM GUI 編輯窗口可以對時(shí)鐘信息做出多種編輯、比較、核對和導(dǎo)出功能:
1)可以將不同時(shí)鐘組按照不同顏色組顯示。
2)可以在導(dǎo)入或?qū)С鰰r(shí)鐘信息時(shí)做時(shí)鐘信息一致性檢查。
3)會對當(dāng)前導(dǎo)入編輯的時(shí)鐘信息庫做總結(jié),例如時(shí)鐘數(shù)目、PLL 數(shù)目等。
4)會對時(shí)鐘樹結(jié)構(gòu)的源時(shí)鐘和子一級時(shí)鐘做圖形顯示。
5)可以對時(shí)鐘源和時(shí)鐘序列做快捷跟蹤,以便梳理特定時(shí)鐘的時(shí)鐘信息,獲得其父一級時(shí)鐘和子一級時(shí)鐘,如圖2 所示。
圖2 CM GUI中的時(shí)鐘樹界面
6)可以快速查找到目標(biāo)時(shí)鐘。
7)可以查詢詳細(xì)的時(shí)鐘編寫日志。
8)可以將不同版本的時(shí)鐘信息表進(jìn)行對比。
9)VE、BE 和DFT 可以提取方便的時(shí)鐘信息腳本用于不同的工具。
在SE 提供給CM 的時(shí)鐘信息Excel 表格中往往只包含非常有限的信息,例如時(shí)鐘源數(shù)目、頻率要求和時(shí)鐘關(guān)系。在CM 導(dǎo)入這些信息交由DE 編輯后,時(shí)鐘信息會逐漸豐富起來,它們包含以下信息:
1)時(shí)鐘名稱:在全局的時(shí)鐘信息中具有時(shí)鐘名稱的唯一性。
2)時(shí)鐘類型:用來表明時(shí)鐘是否為PLL 源時(shí)鐘、分頻時(shí)鐘、門控時(shí)鐘或者管腳接入時(shí)鐘等。
3)頻率:即時(shí)鐘對應(yīng)的頻率,在某些情況下,不同電壓設(shè)定也會設(shè)定不同的時(shí)鐘頻率。
4)時(shí)鐘源:用來指明產(chǎn)生當(dāng)前時(shí)鐘的時(shí)鐘源。
5)分頻數(shù):用來表明當(dāng)前時(shí)鐘與時(shí)鐘源的分頻關(guān)系。
6)波形:用來指導(dǎo)后端設(shè)定時(shí)鐘的占空比。
7)所屬布局:用來指明當(dāng)前時(shí)鐘所屬的物理實(shí)現(xiàn)布局塊。
8)同步關(guān)系:用來定義某些時(shí)鐘組,在同一時(shí)鐘組的時(shí)鐘會視為同步關(guān)系。
9)掃描時(shí)鐘映射:芯片系統(tǒng)需要若干測試掃描時(shí)鐘。
10)實(shí)例名:由時(shí)鐘所處的結(jié)構(gòu)層次和時(shí)鐘名稱共同構(gòu)成,用來指向系統(tǒng)中的時(shí)鐘路徑。
SE 先編輯基礎(chǔ)的時(shí)鐘信息,而后會由DE 擴(kuò)展編輯這些時(shí)鐘信息。子系統(tǒng)DE 和系統(tǒng)DE 會在最后將其編輯的時(shí)鐘信息表交由CM,由它完成時(shí)鐘信息的合并。例如可以將頂層時(shí)鐘信息表與子一級時(shí)鐘信息表完成合并,生成了合并后的系統(tǒng)時(shí)鐘信息表[8]。
在CM 首次導(dǎo)入某一個(gè)時(shí)鐘信息表(Excel 格式)時(shí),會同時(shí)完成時(shí)鐘數(shù)據(jù)源的提取和數(shù)據(jù)庫的建立。在提取時(shí)鐘數(shù)據(jù)時(shí),CM 既會就原有時(shí)鐘數(shù)據(jù)做檢查,也會將提取的數(shù)據(jù)做格式規(guī)范化[9]。在提取時(shí)鐘數(shù)據(jù)時(shí),會對整體時(shí)鐘數(shù)據(jù)作報(bào)告,包括具體的時(shí)鐘信息以及任何可能違反時(shí)鐘數(shù)據(jù)要求的信息。例如在圖3 中對導(dǎo)入的某個(gè)子系統(tǒng)的時(shí)鐘信息做總結(jié)報(bào)告,其含有同步時(shí)鐘組信息、時(shí)鐘源信息、各個(gè)時(shí)鐘的類型信息以及可能的時(shí)鐘信息違例。
圖3 時(shí)鐘信息的一致性檢查
以上所報(bào)告的時(shí)鐘信息總結(jié)有助于CM 用戶掌握目標(biāo)系統(tǒng)的全局時(shí)鐘信息。其后,用戶可以將CM中的時(shí)鐘信息導(dǎo)出到CSV 或者Excel 表格。用戶也可以稍后繼續(xù)通過CM 或者Excel 編輯導(dǎo)出的時(shí)鐘信息表。在CM 導(dǎo)入時(shí)鐘信息數(shù)據(jù)后,建議繼續(xù)使用該工具做后續(xù)編輯和查看。CM 就時(shí)鐘信息提供了多種常規(guī)操作,可以對某個(gè)時(shí)鐘信息項(xiàng)完成創(chuàng)建、克隆、編輯等操作。
在編輯時(shí)鐘信息項(xiàng)時(shí),彈出的編輯界面可以顯示該時(shí)鐘信息項(xiàng)的詳細(xì)屬性。用戶可以對其參數(shù)進(jìn)行修改,在保存信息時(shí)CM 仍然會對該時(shí)鐘信息做時(shí)鐘信息規(guī)則檢查。如果有信息違例的情況存在,則在對話窗口會彈出警告信息和詳細(xì)的違例解釋。時(shí)鐘信息項(xiàng)的參數(shù)編輯界面如圖4 所示。
圖4 時(shí)鐘信息項(xiàng)的參數(shù)編輯界面
在CM 完成了初始的時(shí)鐘信息導(dǎo)入、分析和規(guī)范化以后,全部的時(shí)鐘信息就會被存入CM 內(nèi)部的格式化時(shí)鐘數(shù)據(jù)庫中。在掌握了每一個(gè)時(shí)鐘項(xiàng)的父時(shí)鐘和子時(shí)鐘后,便可以產(chǎn)生時(shí)鐘樹結(jié)構(gòu)圖。時(shí)鐘樹結(jié)構(gòu)圖有助于用戶更好地理解時(shí)鐘的組織,并且對時(shí)鐘樹上的時(shí)鐘進(jìn)行編輯。
CM 的另一個(gè)編輯功能是在用戶編輯時(shí)鐘時(shí)做若干項(xiàng)時(shí)鐘規(guī)則檢查,并且對于一些時(shí)鐘信息做出自動(dòng)修正[10]。這些時(shí)鐘規(guī)則和信息修正包括:
1)檢查時(shí)鐘項(xiàng)編輯是否有效,并伴隨時(shí)鐘信息一致性檢查。
2)如果當(dāng)前時(shí)鐘項(xiàng)編輯有效,則會自動(dòng)編輯其他可能會受影響的時(shí)鐘。例如父時(shí)鐘A 從400 MHz降低為了200 MHz,則它的子時(shí)鐘B 和C 的頻率也會自動(dòng)從200 MHz 降低為100 MHz。
3)如果對時(shí)鐘樹結(jié)構(gòu)添加或者移除了某些時(shí)鐘,例如將時(shí)鐘A 的父時(shí)鐘從時(shí)鐘B 修改為時(shí)鐘C,則在用戶刷新了時(shí)鐘列表后,時(shí)鐘樹結(jié)構(gòu)也將得到重新排序。
4)一旦時(shí)鐘樹結(jié)構(gòu)發(fā)生變化,在用戶刷新了時(shí)鐘樹結(jié)構(gòu)以后,CM 也會刷新其內(nèi)部的時(shí)鐘信息數(shù)據(jù)庫,并對時(shí)鐘信息項(xiàng)做重新排列。為了更好地分辨不同的時(shí)鐘組,CM 會為其自動(dòng)設(shè)定不同的顏色以用來識別時(shí)鐘組信息。
對于時(shí)鐘信息表的編輯,有時(shí)需要對兩個(gè)版本的時(shí)鐘信息進(jìn)行比較。采用CM 可以跟蹤時(shí)鐘信息的編輯歷史。從圖5 看到,可以對兩個(gè)時(shí)鐘信息表做比較,并給出分類的比較信息。詳細(xì)的比較信息可以報(bào)告哪些時(shí)鐘項(xiàng)的參數(shù)發(fā)生變化、哪些時(shí)鐘項(xiàng)被移除和添加。這一特性可以方便地追蹤時(shí)鐘信息,即便時(shí)鐘信息表由多位DE 維護(hù),也可以利用該特性梳理在不同時(shí)鐘信息表版本的編輯歷史。
在CM 將不同設(shè)計(jì)部分的時(shí)鐘信息導(dǎo)入、合并在一起后,便可以使用CM 的統(tǒng)一時(shí)鐘信息為芯片開發(fā)過程的多個(gè)流程生成所需要的時(shí)鐘信息輸出。例如,CM 可以產(chǎn)生用來完成CDC 檢查的腳本、用來做STA 流程的腳本、用來設(shè)定時(shí)鐘頻率的驗(yàn)證配置等[11]。CM 支持命令行模式和GUI 模式,幫助用戶產(chǎn)生所需要的文件。
在CM 將多個(gè)設(shè)計(jì)部分的時(shí)鐘信息提取之后,就可以利用中心化的規(guī)范時(shí)鐘信息為不同的功能組產(chǎn)生所需要的腳本。CM 提供易用的用戶編程接口(Application Programming Interface,API),用戶可以利用這些接口來產(chǎn)生所需要的腳本。為CDC 做檢查的Spyglass 工具支持的腳本格式和模板可以由DE 獨(dú)立開發(fā),而后由CM 結(jié)合開發(fā)的模板文件,即可從時(shí)鐘信息數(shù)據(jù)中產(chǎn)生所需要的腳本[12]。
如果缺少自動(dòng)化的CM 提取流程,以往在CDC流程中,DE 往往需要就時(shí)鐘有關(guān)配置文件做逐一檢查。而在CM 提取流程引入之后,一致性的時(shí)鐘信息會盡可能避免人為引入的錯(cuò)誤。
在芯片驗(yàn)證過程中,對時(shí)鐘頻率的配置和檢查也是一項(xiàng)必要的工作,繼而保證在子系統(tǒng)或者系統(tǒng)驗(yàn)證中,各個(gè)時(shí)鐘輸入以及時(shí)鐘之間的同步關(guān)系是正確配置的。否則,一些異步時(shí)序處理不恰當(dāng)?shù)牡胤娇赡軙诜抡孢^程中被遺漏。以往在驗(yàn)證過程中人為完成的時(shí)鐘設(shè)定和檢查也會有出錯(cuò)的風(fēng)險(xiǎn)[13]。VE 利用CM 的一致性時(shí)鐘信息,在準(zhǔn)備了定制化的Python 腳本和模板文件后,就可以產(chǎn)生用來做時(shí)鐘頻率配置和檢查的測試序列(C 或者UVM 格式)。
CM 的一致性時(shí)鐘信息也可以用來為BE 的后端流程工具(Design Compiler,DC)STA 和其他工具生成準(zhǔn)確的時(shí)鐘信息腳本。一旦能夠確保時(shí)鐘信息的準(zhǔn)確性,則BE 將會對CM 工具產(chǎn)生依賴。在生成DC工具流程腳本時(shí),每一個(gè)時(shí)鐘項(xiàng)的信息不僅要準(zhǔn)確,還需要保證與其父時(shí)鐘、子時(shí)鐘的信息均保持信息一致。因?yàn)槿绻袃蓚€(gè)時(shí)鐘之間的異步信息沒有被描述準(zhǔn)確,則產(chǎn)生的時(shí)鐘腳本信息很有可能會對某些本應(yīng)該完成同步處理的設(shè)計(jì)區(qū)域遺留盲區(qū)。一個(gè)典型的SoC 時(shí)鐘數(shù)據(jù)庫需要產(chǎn)生上百個(gè)類似的后端腳本,它們之間需要在時(shí)鐘信息發(fā)生添加或者更新后,也能夠完成及時(shí)的、準(zhǔn)確的信息更新和文件結(jié)構(gòu)組織[14]。CM 已經(jīng)在多個(gè)芯片項(xiàng)目中得到推廣,并且不再需要在為后端生成腳本時(shí)引入人工的修改,進(jìn)一步減少了出錯(cuò)的可能性。
除了圖2 展示的CM GUI 時(shí)鐘信息主窗口,CM也同時(shí)具備其他窗口用于DE、VE 和BE 對時(shí)鐘信息的查詢和編輯。CM 也像其他商業(yè)電子設(shè)計(jì)自動(dòng)化(Electronic Design Automation,EDA)工具一樣有菜單欄和多個(gè)嵌入的窗口界面。這些窗口界面除了主窗口以外,還包括時(shí)鐘樹窗口、時(shí)鐘圖窗口和時(shí)鐘查找窗口。
在查看某個(gè)時(shí)鐘項(xiàng)的信息時(shí),往往需要跟蹤它的父時(shí)鐘或者子時(shí)鐘。獲取時(shí)鐘的信息結(jié)構(gòu)有助于理解相關(guān)時(shí)鐘之間的關(guān)系。如圖2 所示,用戶可以在時(shí)鐘樹窗口點(diǎn)擊某一個(gè)時(shí)鐘項(xiàng),然后選擇查看時(shí)鐘樹圖或者時(shí)鐘序列圖,也可以在時(shí)鐘信息對話窗口獲得該時(shí)鐘詳細(xì)的信息。
如果需要跟蹤一個(gè)較大的時(shí)鐘組,該時(shí)鐘組內(nèi)包含許多同源的時(shí)鐘項(xiàng),則除了選擇時(shí)鐘樹圖顯示以外,也可以采用時(shí)鐘圖窗口來顯示。用戶可以在時(shí)鐘信息主窗口或者時(shí)鐘樹窗口中選擇某個(gè)時(shí)鐘項(xiàng),并由CM 生成該時(shí)鐘的時(shí)鐘圖。圖6 展示了由某個(gè)時(shí)鐘項(xiàng)所產(chǎn)生的時(shí)鐘圖。時(shí)鐘圖的展示方式對于用戶理解某些大型復(fù)雜的時(shí)鐘組更為合適[15]。
圖6 CM GUI中的時(shí)鐘圖界面
伴隨著時(shí)鐘信息的集中管理,CM 中的時(shí)鐘信息會增加到一個(gè)非??捎^的數(shù)目。用戶在此時(shí)需要利用一個(gè)獨(dú)立的窗口用來查找和瀏覽一些他們感興趣的時(shí)鐘信息。例如有時(shí)用戶需要查找某個(gè)子系統(tǒng)的一個(gè)時(shí)鐘樹結(jié)構(gòu)信息。時(shí)鐘查找窗口可以很好地滿足用戶想要實(shí)現(xiàn)時(shí)鐘信息查找的需求,它也可以提供正則表達(dá)式查找模式。用戶可以通過時(shí)鐘查找窗口,輸入時(shí)鐘名稱、類型、實(shí)例名、路徑、設(shè)計(jì)塊等信息進(jìn)一步查找和過濾時(shí)鐘信息。
在將CM 投入到芯片研發(fā)后,為了得到該方案的比對數(shù)據(jù),將同一款5G SoC 芯片在第一次流片(未采用CM)和第二次流片(采用CM)作為對比,分別就時(shí)鐘總數(shù)、時(shí)鐘冗余信息、時(shí)鐘文件數(shù)量、投入人力、腳本維護(hù)時(shí)間、時(shí)鐘信息出錯(cuò)率等方面做比較。
從表1 可以看到,5G SoC 芯片的時(shí)鐘信息數(shù)目在使用CM 之后,可以得到有效的信息合并,繼而減少管理的時(shí)鐘總數(shù)。原有的時(shí)鐘文件數(shù)量和冗余信息比例也能得到優(yōu)化。由于采用了時(shí)鐘信息合并、對比、分析等新功能,用來維護(hù)每個(gè)時(shí)鐘有關(guān)腳本的時(shí)間得以有效縮短,而一致性和自動(dòng)化的管理方式也顯著降低了時(shí)鐘信息出錯(cuò)率。在最終的投入人力對比中,未采用CM 時(shí)需要多人投入、更多工作時(shí)間,而在采用CM 后只需要一人管理所有的時(shí)鐘信息,而且采用更少的時(shí)間即能夠完成任務(wù)。
表1 CM投入時(shí)鐘管理使用前后的數(shù)據(jù)
CM 是一個(gè)為芯片項(xiàng)目開發(fā)的用于解決時(shí)鐘信息一致性的管理工具。在硅前(pre-silicon)開發(fā)和硅后(post-silicon)開發(fā)過程中均體現(xiàn)了它的價(jià)值[16]。CM 已經(jīng)投入到多個(gè)大型芯片開發(fā)的過程中,有效地降低了在多個(gè)流程中時(shí)鐘信息不一致所帶來的風(fēng)險(xiǎn)。中心化的時(shí)鐘信息維護(hù)方式和智能的時(shí)鐘信息規(guī)則檢查也有效地降低了在編輯時(shí)鐘信息時(shí)出錯(cuò)的可能。
在投入使用CM 之前,DE、VE 和BE 在以往都是按照自己業(yè)務(wù)執(zhí)行方式準(zhǔn)備時(shí)鐘信息,這增加了不同流程之間時(shí)鐘信息不一致的風(fēng)險(xiǎn)。而在使用了CM 之后,只有管理時(shí)鐘結(jié)構(gòu)和設(shè)計(jì)的DE 才需要統(tǒng)一維護(hù)時(shí)鐘信息。由于與其他EDA 工具的流程可以通過CM 支持的模板形式來完成定制化,CM 目前已經(jīng)能夠很快地投入到新項(xiàng)目的使用,并能夠與各個(gè)業(yè)務(wù)部門之間做緊密的配合,加快時(shí)鐘信息管理有關(guān)的流程,促進(jìn)設(shè)計(jì)、驗(yàn)證和后端等過程的快速交付。