提高FPGA設(shè)計(jì)生產(chǎn)力的工具、技巧和方法指南
2008-07-25
作者:Davin Lim
??? ?影響FPGA設(shè)計(jì)周期生產(chǎn)力的最大因素是什么?許多設(shè)計(jì)人員的答案是,時(shí)序收斂" title="時(shí)序收斂">時(shí)序收斂(timing closure)是影響產(chǎn)品設(shè)計(jì)走向市場(chǎng)的關(guān)鍵,他們還為這個(gè)答案提供了充足的理由。高效實(shí)現(xiàn)時(shí)序收斂,獲得可信的結(jié)果是每一位設(shè)計(jì)師的夢(mèng)想。然而,這僅僅是問題的一部分。要在整個(gè)設(shè)計(jì)周期中真正做到高效率,設(shè)計(jì)師需要依賴整個(gè)設(shè)計(jì)環(huán)境" title="設(shè)計(jì)環(huán)境">設(shè)計(jì)環(huán)境以及其中的多種工具來管理流程復(fù)雜性,并為FPGA設(shè)計(jì)的獨(dú)特風(fēng)格和方法提供真實(shí)的解決方案。一個(gè)完整有效的設(shè)計(jì)環(huán)境提供了問題的焦點(diǎn)和透明性。與許多設(shè)計(jì)良好的工具一樣,最好是提供一個(gè)無縫的解決方案。 ?
??? 要提供最大的生產(chǎn)力,一個(gè)完整的FPGA設(shè)計(jì)環(huán)境應(yīng)當(dāng)包括如下一些主要特性:? ?
?? ?快速確定時(shí)序問題 - 所提供的工具能夠?yàn)樵O(shè)計(jì)師提供關(guān)鍵信息,從而使他們迅速發(fā)現(xiàn)潛在的瓶頸。? ?
?? ?利用一系列視圖探究結(jié)果 - 并非所有問題都是采用同樣的方法解決的。設(shè)計(jì)良好的工具可以讓設(shè)計(jì)師從多個(gè)視角察看有關(guān)時(shí)序路徑的信息。這些工具既可以提供足夠的細(xì)節(jié),又能夠保持問題的焦點(diǎn)。 ?
??? 以設(shè)計(jì)為中心,而非工具 - 能夠在不同視圖間無縫切換,工具操作是透明的,但設(shè)計(jì)問題依然清晰。 ?
??? 提供有意義的中間結(jié)果 - 生產(chǎn)力包括能在盡早的階段監(jiān)測(cè)設(shè)計(jì)性能。如果設(shè)計(jì)師可以盡早解決問題,直接產(chǎn)生的結(jié)果是每天可以有更多的反復(fù)機(jī)會(huì)。 ?
??? 管理復(fù)雜的源代碼" title="源代碼">源代碼結(jié)構(gòu) - FPGA設(shè)計(jì)工具" title="設(shè)計(jì)工具">設(shè)計(jì)工具需要方便源文件的管理,提供兼容設(shè)計(jì)人員所喜好的源代碼控制機(jī)制的能力和方法。??
??? 使用支持更快、更容易的時(shí)序收斂并且支持設(shè)計(jì)聚集的設(shè)計(jì)工具,下面的" title="面的">面的例子詳細(xì)討論了上面的話題。 ?
??? 快速確定時(shí)序問題?
?? “設(shè)計(jì)滿足時(shí)序要求嗎?”每次通過布局布線完成設(shè)計(jì)實(shí)施時(shí),通常設(shè)計(jì)師都會(huì)問這個(gè)問題。無論答案是什么,設(shè)計(jì)人員都希望以簡(jiǎn)潔的形式立即獲得此類信息(圖1)。
?1? 性能摘要表
??? 下一個(gè)問題就是“到底有多少滿足時(shí)序要求,又有多少?zèng)]有達(dá)到?”圖2給出了每一約束對(duì)應(yīng)的時(shí)序結(jié)果簡(jiǎn)表。?
?????? 2???約束摘要表????
??? ?利用不同的視圖探究結(jié)果?
???? 一旦以摘要形式呈現(xiàn)時(shí)序結(jié)果,還可以很容易地察看特定約束或路徑的詳細(xì)信息。從上面的摘要中,簡(jiǎn)單地點(diǎn)擊一條約束,設(shè)計(jì)師就可以看到更詳細(xì)的時(shí)序報(bào)告,如圖3所示。?
3??? 詳細(xì)時(shí)序路徑報(bào)告 ?
??? 設(shè)計(jì)人員可以非??焖俜奖愕貜母邔訒r(shí)序摘要轉(zhuǎn)到詳細(xì)的文本信息,了解特定的時(shí)序路徑。?
文字信息只是了解設(shè)計(jì)時(shí)序特性的一種方法。通常,圖形顯示更有幫助。對(duì)于上面的設(shè)計(jì),點(diǎn)擊超鏈接可以得到路徑在FPGA器件中實(shí)際物理實(shí)現(xiàn)的圖形顯示(圖4)。 ?
4? 時(shí)序路徑的器件視圖 ?
??? 圖4中的例子顯示出時(shí)序路徑從一個(gè)起始模塊,通過每個(gè)中間模塊,最后終止在路徑端點(diǎn)的實(shí)際物理布局。這一視圖也給出了這些模塊間實(shí)際布線實(shí)現(xiàn)的視覺表現(xiàn)。該視圖可以幫助回答與時(shí)序相關(guān)的問題,如:“有沒有特別長(zhǎng)的路徑?”以及“有沒有邏輯的布局跨越了多個(gè)時(shí)鐘區(qū)域?”隨著設(shè)計(jì)師逐漸放大視圖到特定點(diǎn),應(yīng)當(dāng)可以看到如圖5所示的內(nèi)部邏輯片配置。?
?
5?? 器件視圖中的時(shí)序路徑詳細(xì)顯示
?
??? 上面的物理器件視圖通常很有用,但對(duì)于理解設(shè)計(jì)中不同的時(shí)序路徑細(xì)節(jié)來說,其它表示方式也同樣有用。一種基于原理圖技術(shù)的視圖如圖6所示。 ?
?
6?? 時(shí)序路徑的技術(shù)視圖 ?
?
??? 在這一時(shí)序路徑視圖中,很容易看出數(shù)據(jù)路徑中的邏輯層次數(shù)量,并了解時(shí)序路徑如何穿越設(shè)計(jì)層次中的不同部分。還可以逐漸放大顯示的原理圖,顯示其它邏輯連接到構(gòu)成本路徑的單元的情況。? ?
?
??? 以設(shè)計(jì)為中心,而非工具 ?
??? 通過提供同一設(shè)計(jì)問題的多種視圖,設(shè)計(jì)師能夠以不同的方式考慮時(shí)序問題,并定制針對(duì)問題的最適合的解決方案。當(dāng)所有這些視角都集成在單個(gè)設(shè)計(jì)環(huán)境中時(shí),在不同視圖之間的切換就只需點(diǎn)擊一下鼠標(biāo)就可以了,不必再學(xué)習(xí)如何在不同的點(diǎn)式應(yīng)用間以不同的方式來顯示時(shí)序路徑。有時(shí)還可以將多個(gè)視圖疊加或并列顯示,如圖7所示。?
?
7?? 時(shí)序路徑的不同視圖并列顯示?
?
?
??? 提供有意義的中間結(jié)果?
??? 在FPGA設(shè)計(jì)過程的中間,運(yùn)行多個(gè)實(shí)施是很平常的。對(duì)于有大量時(shí)序要求的大型設(shè)計(jì)來說,能夠檢查中間結(jié)果是很方便的。通過方便的方法暫停、檢測(cè)和恢復(fù)實(shí)施過程,設(shè)計(jì)師可以在設(shè)計(jì)編譯的過程中獲得更好的設(shè)計(jì)可視性。圖8所示的設(shè)計(jì)工具提供了此類直接控制。? ?
8? ?控制設(shè)計(jì)流程察看中間結(jié)果。?
?
??? 想象一下,過度的時(shí)序約束可能需要更多時(shí)間才能夠完成設(shè)計(jì)實(shí)施的布局和布線階段。通過中止流程,有些設(shè)計(jì)師可能認(rèn)為設(shè)計(jì)時(shí)序已經(jīng)“足夠收斂”,從而可以將設(shè)計(jì)提交到實(shí)驗(yàn)室繼續(xù)進(jìn)行功能調(diào)試。同時(shí),做完這一步后,還可以恢復(fù)布局布線,繼續(xù)進(jìn)行優(yōu)化處理以滿足最終時(shí)序要求。? ?
??? 更重要的是,通過檢查中間結(jié)果,設(shè)計(jì)師可以更快地確定是否存在任何時(shí)序關(guān)鍵區(qū)域并盡早采取行動(dòng)。? ?
?
??? 管理復(fù)雜的源代碼結(jié)構(gòu) ?
??? 隨著設(shè)計(jì)復(fù)雜性的增加,源代碼結(jié)構(gòu)的復(fù)雜性也在增加。許多設(shè)計(jì)師采用第三方源代碼控制工具來管理復(fù)雜性并保證源代碼文件的一致性。這些文件不僅限于HDL源文件,還包括約束文件、仿真測(cè)試基準(zhǔn)等。?
??? 每位設(shè)計(jì)師都有處理這些問題的特有風(fēng)格和方法,因此并沒有適用于所有用戶的萬能解決方案。通過提供方便的機(jī)制(圖9)來確定并有選擇地輸出FPGA設(shè)計(jì)項(xiàng)目中的所有源代碼/文件,設(shè)計(jì)師可以采用最適合自己需要的外部源代碼控制工具。輸出過程還包括輸出ASCII 形式的項(xiàng)目信息,以后可利用這一信息重建這一項(xiàng)目的早期階段。 ?
9???? 源代碼管理支持。 ?
?
??? 結(jié)論?
??? 對(duì)FPGA設(shè)計(jì)生產(chǎn)力來說,快速實(shí)現(xiàn)時(shí)序收斂確實(shí)是一項(xiàng)關(guān)鍵因素。能否快速了解設(shè)計(jì)時(shí)序狀態(tài)是衡量任何FPGA設(shè)計(jì)環(huán)境有效性的關(guān)鍵。由于導(dǎo)致時(shí)序路徑出現(xiàn)時(shí)序失敗的原因很多,因此設(shè)計(jì)師需要從多種不同角度(文字和圖形)掌握方便察看時(shí)序信息的能力。這樣他們才能夠做出如何改進(jìn)設(shè)計(jì)時(shí)序的最佳決策。以無縫且透明的方式提供綜合工具將可幫助快速實(shí)現(xiàn)時(shí)序收斂。? ?
??? 除了核心的時(shí)序收斂技術(shù)以外,外圍的設(shè)計(jì)工具環(huán)境也會(huì)大大影響生產(chǎn)力。檢查和利用中間結(jié)果以及靈活管理復(fù)雜源代碼結(jié)構(gòu)等能力都會(huì)使設(shè)計(jì)師提高生產(chǎn)力。 ?