大約從20世紀80年代起,就有許多業內專家宣稱模擬電路已走進死胡同,而數字應用將在電子世界中大放異彩,包括用在通信上的集成電路(integrated circuits,ICs)。在現實中,當然,現代化的通信系統同時需要將模擬及數字功能復雜地融合在一起。 不過有一個問題,比起它的數字同胞,在支持自動化能力這方面,模擬設計及驗證工具卻遠遠落后。其結果,模擬設計工程師的生產力遠不及數字搭檔來得強。 就以數字集成電路設計為例,現代最先進的設計環境提供了高階的自動化,即使是包含上億個晶體管的最復雜設計,也能在短短幾天內重新轉給新的代工廠、同一座代工廠但不同的制程、甚至全新的技術節點。 相對地,缺乏自動化支持的傳統式模擬設計環境,代表模擬電路的制作及修改幾乎全靠人工。這樣的結果,即使把相當簡單的模擬功能轉向新的代工廠、制程或技術節點,也要耗費6~12個月的時間。換言之,雖然尖端的數字設計已經達到32nm的技術節點,絕大多數的模擬設計仍深陷在130nm及250nm節點的泥沼之中,那算是5~10年前的老舊技術了。 首先,本文先提出數字設計及驗證技術演進的概觀,并說明現代最先進數字設計環境在支持高階自動化上的生產力優勢。本文接著提出模擬設計及驗證技術演進的概觀,并且拿來跟數字的自動化能力做對比。 最后,本文討論了模擬工具必須予以強化以支持更高階自動化的方法;同時也闡述了現代化IC設計環境必須強化的方法,以具備足以支持真正的、統一的、全芯片混合信號設計、驗證、及實現的能力。 數字工具的演進 早期的數字IC設計,約20世紀60年代初期,電子電路皆以手工建立。電路圖(原理圖)都是用紙筆及印刷模板以手繪制。這些圖面顯示邏輯門與功能的各式符號,并且用來實現符號之間連線的設計。 執行“功能驗證”時,通常是一群工程師圍坐在桌子旁,通過原理圖兢兢業業地討論:“這部分我看應該沒問題!”同樣地,進行“時序驗證”時,典型的做法也是靠著紙和筆。最后,用來組成晶體管、電阻器及彼此之間互連的架構都是以人工繪制而成的。 毫無疑問,這種手工藝品方式的設計極為耗時,而且很容易出錯。這種情形必須要有解決之道,于是有些公司及大學就率先跳出來,采用各種不同的研究方向。就設計獲取(design capture)而言,門級(gate-level)的“原理圖獲取”套件即在市場上開始出現,至于功能及時序驗證,在20世紀60~70年代初期所看到的,則是先出現以“事件驅動邏輯仿真器”及“靜態時序分析器”為形式的專門程序。 以抽象的門級建立數字設計,就如同使用匯編語言撰寫軟件程序一般。就執行效率及所需的計算機內存數量而言,匯編語言的程序或許是不錯的實施,但它需要很長時間的獲取及確認,而且不容易轉到另一臺計算機上。同樣,門級的表示方式也需要很長的時間獲取及確認,轉移到新的代工廠或制程/技術節點也相當困難。 至于軟件方面,開發者的解決方案則以程序語言(如C語言)的形式,提升至另一個更高層次的抽象概念。然后,這些高級表達式可以編譯成計算機所需的機器級指令。這些高級表達式的優點是,可容許軟件開發者迅速而精準地捕捉到程序的含義,確認其功能。同時,以C語言撰寫的程序可以很容易地轉移到其他的計算機平臺。 同樣,對于數字邏輯而言,設計工程師也開始提升至更高階的抽象概念,稱之為“寄存器傳輸層”(Register Transfer Level,RTL)。在20世紀80~90年代初期登場的“邏輯綜合”(logic synthesis)則用來將RTL表示式編譯成對應的門級網表(netlist)。這項“前端”綜合技術另以“后端”的自動布局布線(place-and-route)引擎補其不足之處,后者可從門級網表,執行設計的物理實現。 循著C語言程序在編譯后能用在不同計算機上的足跡,RTL與邏輯綜合的組合讓數字設計能更輕易地移植到新的代工廠或制程/技術節點。 模擬工具的演進 實際上,模擬電路的計算機輔助設計與驗證工具,在早期是優于數字電路的。模擬電子系統設計在剛起步的時候,電子電路完全靠人工繪制。晶體管層的電路圖完全用紙筆及印刷模板以手工繪制,再搭配基本的“紙筆”分析及驗證。 在設計由離散(獨立封裝)的元器件例如晶體管、電阻器、電容器及電感組成時,通常是建立設計的實體原型,將它放上測試平臺(test bench),測量實際的數值,以判定性能優異,然后參考元器件所得的數值,新增或移除所需的元器件,以達到期望的效果。 很顯然,這種方法在開始建立第一片模擬IC時并不可行,因為IC設計的工程變更代價非常昂貴。在20世紀60~70年代初期,有幾所大學及商業公司著手開發模擬仿真器。這些程序讓學生及工程師得以仿真模擬電路,而無須實際付諸行動制造。早期的幾個仿真器中,最有名的大概就是“SPICE”(Simulation Program with Integrated Circuit Emphasis),這套程序是由加州大學柏克萊分校所開發,并在70年代初期廣為流傳供大家使用。 隨著時間的演進,模擬仿真在基本模型及算法的復雜度,以及仿真引擎的能力與表現上,有顯著的發展。多數今日所使用的模擬工具都發祥成形于20世紀90年代的初期與中期。和其他不同的是,這些工具的基本結構從未試圖支持混合信號設計環境的復雜需求,一如本文稍后章節的討論。 或許更重要的是,現今的模擬設計及驗證工具在實質上僅限于捕捉及模擬晶體管級的單線圖。到目前為止,有關自動化的成功案例仍屬鳳毛麟爪,例如: ● 在高階抽象概念上描述模擬功能,然后用來生成等效的晶體管級電路。 ● 自動優化模擬電路。 ● 自動布局布線模擬電路。 圖1 每道制程/技術節點以人工重新設計需要耗費9~12個月 最終的結局是,模擬集成電路仍舊大多處于全定制,并以人工方式費心費力繪制。除了非常昂貴、耗時、容易出錯以外,這類晶體管級的設計型態并不容許現有的設計簡簡單單地就能轉換到新的代工廠或制程/技術節點。相反的是,欲移植這類型的設計需要將電路重頭開始,重新實施,耗時9~12個月是常有的事。 這也有助于說明為何最尖端的數字設計目前已邁入32nm的技術節點,但最先進的模擬設計只在90nm節點,而且大部分的模擬設計依然深陷在130nm及250nm節點的泥沼中,那算是5~10年前的老舊技術了。 模擬自動化的要求 此處所說的要求可以簡要地說明之;如何實際達成可說非常地復雜。最低限度,強化后的模擬設計工具必須能提供與數字設計相類似的自動化及生產力能力。這些自動化能力應包括但不限于以下: ● 在高階抽象概念下確認模擬功能的能力,然后自動將表示式編譯成等價的晶體管層級。 ● 自動執行模擬精細改進及優化的能力。 ● 自動在IC上布局模擬零組件的能力。 ● 自動在IC上布線模擬零組件的能力。 ● 從某制程/技術節點自動移植模擬設計制程至另一個,以及從某代工廠移植至另一家的能力。 從某方面來說,需考慮的最后一點就是所有其他點的疊合。老實說,需耗費6~12個月才能將模擬設計轉移到新的技術節點早已令人無法接受。若能透過自動化將此過程降低到僅需數天的時間,模擬功能即可享受到功耗及最新技術節點性能特征的完全優勢。 混合信號的考慮 直到最近,大部分的集成電路在性質上若不是純數字,就是純模擬。因此,很自然地,任何用來設計或驗證這些器件所使用的計算機輔助設計工具,都是只為數字或只為模擬的領域單獨設計的。 圖2 模擬/全定制的生產力依靠集成化和自動化的提高可以顯著地增加 初期的通信系統是由一大堆相當簡單的模擬及數字IC所組成。隨著時間的歷程,為了滿足多樣化的要求,例如尺寸、成本、功率、性能及可靠度,越來越多的功能結合在越來越少的芯片上。開始只是將多種模擬功能合并在特定的模擬芯片上,將多種數字功能合并在數字芯片上。直到最近,終于將模擬及數字功能結合在單一的混合信號裝置上。 經過這些年的發展,雖然傳統的模擬與數字設計及驗證工具,在容量及性能上已有長足地進步,但其最基本的底層架構大部分仍是以20世紀90年代中期的技術為基礎,而這些工具依舊專注在模擬或數字的領域。舉一個簡單的例子,模擬與數字的工具及流程使用不同的數據庫,因此這兩個領域之間的交互非常困難。其結果是數字及模擬的設計團隊向來都是井水不犯河水,甚少關注對方倒底是在研究什么。 即使是現代“最先進”的混合信號及全定制設計環境,數字與模擬團隊大多還是各自獨立作業,甚少涉足到對方的領域中。在芯片最后整合(chip finishing)的階段,也就是將模擬模塊和數字模塊擺放在一起并走線的時候,兩個團隊才首次見面并互相介紹認識,這種情況并不罕見。 芯片最后整合通常是以人工的方式執行,其中發生在芯片投片之前的就有許多工作。由于缺少自動化,芯片最后整合活動及動作常常不能反饋回原來的模塊設計,這有可能導致成為下一代芯片在設計重用上產生問題。 總結 最近幾年,市場上的需求著眼在通信系統日益增加的性能上,而且帶寬正以倍數的速度成長,然而許多產業觀察家相信,目前所看到的只不過是“冰山一角”。為了滿足目前及未來的需求,進入21世紀,模擬設計與驗證工具必須在本文前述的自動化能力上努力奮進。然而,靠著孤立的方式強化模擬工具是不夠的;真正的要求將是一個真實、統一、全芯片的混合信號設計,以及驗證的環境。首先,所有的模擬與數字設計,以及驗證引擎應使用統一的數據庫。其次,環境必須提供最大的容量及性能,例如將整個全芯片的數據在一分鐘之內加載,并在短短數秒之內重新繪制所有的模擬及數字層。第三,環境必須支持極為精確的寄生參數提取及全芯片混合信號仿真與分析。第四,在芯片最后整合階段,環境必須支持自動全域布線。 通信業正在迅速接近這樣一個危機,就是需要快速設計和制造大型復雜的混合信號器件方面的能力。當今最先進集成電路的設計師需要所有這些能力,他們現在就需要! |