計算機設計自動化

計算機設計自動化

用計算機作為工具輔助設計計算機,以實現計算機的設計和研製過程的自動化或半自動化。輔助設計指輔助生成、驗證、分析和記錄計算機設計中的數據和文件。計算機的設計過程包括系統設計、邏輯設計、組裝設計、集成電路設計以及診斷和測試設計等階段和方面。程序設計自動化一般不屬計算機設計自動化的範圍,而是計算機軟體的一個獨立分支。

發展概況


在較早的第二代計算機設計中,用計算機進行邏輯正確性驗證,生成連線表和生成測試模式等輔助設計方法已得到初步應用。集成電路第三代計算機出現后,設計自動化的內容不斷擴大和更新,已從個別設計階段發展到一切階段,並逐漸形成了設計自動化系統。自70年代后,面向某些設計目標的商品化的設計自動化系統已研製成功。較大的計算機公司都已建立以資料庫為核心的綜合的交互設計自動化系統,如美國IBM公司的 EDS系統已有效地用於新型計算機和大規模集成電路的研製。

定義


計算機設計自動化,就是使用計算機來幫助設計和研製計算機,使設計工作在計算機幫助下,達到自動化或半自動化,從而減輕人的勞動和提高設計質量。使用計算機來幫助設計,亦常被稱為計算機輔助設計。按照問題的性質,有些設計工作是可以由人工預先安排好,編出程序由計算機去自動完成的,因而稱為設計自動化

功能設計


系統設計和邏輯設計通稱功能設計。硬體描述語言是實現功能設計自動化的有效工具。輔助系統設計的內容主要是系統級模擬。邏輯設計自動化所涉及的內容較多,有自動邏輯綜合、邏輯模擬、微程序設計自動化等。

程序語言


一種描述硬體設計對象的形式語言。用這種語言能較方便地描述設計對象的行為、組成、組織和有關的控制特性,建立設計對象的模型。在計算機上,以這種模型作為源程序,通過專門的翻譯程序可以為輔助設計的功能程序提供便於處理的模型內部表示。
在不同的設計對象和目標下,已發展出許多不同的硬體描述語言。按對象分類,有系統描述語言、邏輯描述語言、固件(微程序)描述語言等。按語言特性分類大致有系統級、寄存器傳輸級、門級、電路級等描述語言。各級語言具有各自的側重點。例如,寄存器傳輸語言可以方便地用於描述寄存器、開關、存儲器、解碼器等構件之間的邏輯控制關係和信息傳輸關係,某些寄存器傳輸語言對於系統行為的描述或以邏輯門為構件的硬體描述也有一定能力。這類語言中典型的有DDLCDL、AHPL等語言。結構式描述語言能分層逐級描述計算機,隨著設計進程的推進而使硬體描述不斷深化,適用範圍也較大,但尚處於研究和局部應用階段。

邏輯演演算法


應用自動邏輯綜合演演算法對需要綜合的邏輯函數進行邏輯最小化處理,並最終確定一個符合邏輯設計規範的、由可用的標準組件構成的網路。
早期使用較多的自動邏輯綜合演演算法是以處理真值表為基礎的奎因-麥克拉斯基法。這種演演算法比較簡單,但佔主存儲器單元太多,執行時間過長,一般只適用於小型網路的邏輯綜合。廣泛採用的方法是用多維體表示邏輯函數,並使用一組算符對多維體進行代數拓撲運算,完成邏輯函數的綜合。現代已出現以資料庫為核心的智能化的自動邏輯綜合系統。

模擬


用硬體描述語言或通用程序設計語言建立設計對象的模型,並在計算機上對模型進行試驗,獲取所需的設計數據。
象硬體描述語言一樣,模擬也可以從宏觀到微觀或從粗到精劃分成許多級。系統級模擬主要用於評估計算機(大至計算機網,小到中央處理器)的宏觀特性,以幫助人們對系統設計的性能進行評價和分析,包括對系統設計方案的選擇和改進。寄存器級模擬主要用以考察數據在寄存器中的傳輸情況,常用於檢查操作表的正確性。門級模擬以邏輯門(不限單門)為模型的基本構件,用以考察信號在邏輯門或組件之間的傳輸情況,常用於邏輯設計的正確性驗證。大規模集成電路的出現,使許多組件內部的邏輯關係成為無從知悉的“黑箱”,門級模擬於是發展成以組件功能為構件的功能塊級模擬。電路級模擬以二極體晶體管電阻等為構件建立模型,用於邏輯電路瞬態特性的分析。按設計階段分類,對邏輯功能使用的模擬屬於邏輯模擬。此外,故障模擬用以獲取輸入模式的故障響應,生成測試文件。
模擬技術的關鍵是模擬演演算法,按程序方式分,有編譯法和表驅動法(解釋法);按控制方式分,有下一事件法、編排級數法和時間映射法等;按狀態值分,有二值、三值、八值等演演算法。

自動化


微程序

微程序通常存放在只讀存儲器中,一要保證絕對正確,二要盡量壓縮字長和容量,因此微程序設計的自動化顯得十分迫切。主要研究課題有微程序(固件)描述語言、微程序自動生長技術、優化技術和正確性驗證技術。
早期使用彙編語言描述微程序,后廣泛使用 CDL等寄存器傳輸語言,並已出現適合固件設計的專用高級語言,同時還產生了各種編譯技術和微程序邏輯綜合技術,自動生成微程序代碼。微程序的優化問題有:優化微碼,盡量壓縮微指令的字長和字數;微碼變換,使通常稀疏的微碼陣列變換成稠密的微碼陣列。微程序模擬技術已大量用於微程序的正確性驗證。

組裝設計

組裝設計又稱工程化設計或實體設計,目的是把設計好的邏輯線路組合成組裝單元,並交付工廠生產。組裝方式因製造技術而異,一般都由機櫃(底板)、印製板插件、集成電路組件和基本單元電路等若干組裝單元逐級構成。為減少設計的複雜性,組裝設計過程常分成邏輯劃分、布局、布線等若干階段。

邏輯劃分


根據組裝的限制條件和既定的目標,把整個邏輯線路逐級劃分成多個組裝單元或超大規模集成電路晶元,這就是邏輯劃分。經典的劃分方法幾乎完全以減少連線為目標,后又出現一些找近似最優解的逐次試探法。
門分配或組件分配是根據給定的標準組件庫,選擇總代價最小的標準組件的集合,全部實現已劃分的組裝單元。這一分配選擇問題在形式上可化為整數線性規劃問題,實際上也是用試探法求近似最優解。

布局


單元電路在大規模集成電路基片上的布置,組件在插件板上的布置和插件在機櫃底板上的布置,均屬於布局問題。布局可抽象成數學問題,例如在N≤M的條件下把N個元件分配到M個地點,使目標函數最優。對於插件板上的組件布局,較多的演演算法均以滿足布線約束的總連線長度作為目標函數。布局過程通常是在人工確定的初始布局的基礎上,按一定的演演算法交換元件位置,直到連線總長度減少到某一近似最優值。常用的布局演演算法是構造型演演算法和迭代改進演演算法。為提高布局的實際效果,廣泛採用圖形顯示人-機交互布局。

布線


布局確定以後,便是按照元件的接線網表在板上布出連接各元件的導線的具體路徑,並滿足給定的限制條件和布線規則,這就是布線。布線過程可以分為分線、分層、定順序和走線四步。
① 分線:把接線網表中要求連接的幾個結點變成n-1對“點對”之間的接線表。減少總連線長度是分線的關鍵問題。常用的解法有推銷員路徑、最小生成樹、斯坦納樹等方法。
② 分層:把接線表中連接的“點對”合理地分配到不同走線層上去,使得各層上的連線互不衝突或衝突最小。分層的主要方法有按交叉點數分層和干涉度分層兩類。
③ 定順序:按照分層結果確定各層上的連接“點對”的走線順序。定順序演演算法中採用較多的是按長度定先後順序,也有兼顧線長和走線密度的投影密度法等。
④ 走線:按照各層的走線順序,在各自的走線平面上確定具體的走線路徑,最後形成連線表、布線圖等。走線演演算法很多,使用較廣的有迷路法、線段探索法和通道法等。
設計自動化系統 綜合的計算機設計自動化系統大多由大型通用計算機和擴展的商品化交互圖形系統構成,也有採用功能分散式的計算機網構成的。

組成


從功能上看,一個實用的設計自動化系統主要由四大部分組成:①輸入部分對提供的各種形式的輸入信息(圖形、語言描述等)進行解釋和轉換;②輸出部分產生設計人員和生產製造所需的各種文件和數據;③功能處理部分包含輔助完成各種設計和設計檢驗的多種功能處理程序;④設計自動化資料庫是核心部分,它是各功能程序進行數據交流所必需的。資料庫按所存的信息性質分為兩種:參考信息資料庫存儲設計的基準數據供程序公用,又稱程序公用資料庫;設計信息資料庫存放與設計過程有關的輸入、輸出和必要的中間信息。

構造


在綜合的設計自動化系統中,各子系統按一定的方法構成。構成方法大致有三類,分別對應三種設計自動化系統。
① 順序結構:這種設計自動化系統的各子系統象流水線那樣順序地處理設計數據。每個子系統獨立地處理由前面子系統送來的數據,並輸出數據供下一個子系統使用。
② 并行結構:這種系統的特點是許多子系統共用一個公用資料庫。資料庫溝通各子程序間共同數據的通信,但這會增加建立數據結構和進行數據管理的複雜性。
③ 層次結構:為適應越來越複雜的設計需要,又出現以分層資料庫為特徵的第三種設計自動化系統。分層資料庫採用三維數據結構,可以嚮應用程序提供任一層次的數據,且數據量和存儲量可以得到進一步壓縮。

參考書目


M.A.巴留耳著,中國科學院計算技術研究所設計自動化組譯:《數字計算機設計自動化的理論和方法》,科學出版社,北京,1978。(M.A.Breuer, Design Automation of Digital System,Theory and Techniques,Prentice Hall,New Jersey,1972.)