電子設計自動化(EDA)近來成為炙手可熱的產業,每年皆有達兩位數的成長。隨著技術的發展,單一晶片精密度、處理器速度及軟體複雜度隨之提昇,連帶而來的是面臨市場要求性能表現之同時,還必須降低成本之挑戰,再加上愈來愈短的上市時程(time-to-market)帶來之壓力,使得傳統上設計階段分離、在各種不同工具間轉換且一再重新改寫的設計流程已不再適用。負責系統元件(component)開發工作之設計人員或公司主管,必須思考可以改善或加速其設計流程之各種方法及策略。
傳統的設計流程
整體IC設計之流程可以大致分成三個主要階段,從演算法的開發(Algorithm Development)、設計與模擬(Design & Simulation)到最後的原型化及實現階段(Prototyping & Link to Implementation)。傳統上在進行設計工作時,每個階段的工作往往是由不同部門、缺乏共同溝通介面的團隊負責,每個階段使用的設計工具環境也完全不同:一個系統開發者在設計演算法時使用的開發工具,與工程師進行軟體或硬體實現時使用的工具不同,這樣的流程使得在不同的設計階段,必須使用不同的工具,而造成一再重複相同的工作,例如重新撰寫程式碼。不但工作過程繁瑣,且可能因各階段開發團隊的溝通整合困難,造成直到在進行設計最後階段之工作時,才發現錯誤百出,而需要不斷重複之前流程,並一再延後上市時程的結果。
如(圖一)所示,從設計概念的產生,一直到最後產品的推出,之間各階段的工作都由不同團隊、甚至不同公司負責,但因為缺乏共同的設計環境和溝通介面,往往必須將程式碼及設計規格用文件方式傳遞,造成溝通的不便及整合的困難,就如同要跨越一道道的牆,才能達到設計流程的下一階段般。
在90年代初期,ASIC設計者由以往仰賴schematic capture的CAE設計工具轉向使用HDL Code的EDA開發工具,製程技術之提昇使得在晶片上作複雜系統之設計更具成本效益。Verilog或VHDL滿足了元件設計者在實現其設計時之需求,成功扮演了模擬(Simulation)與合成(Synthesis)工作之間的橋樑。雖然這兩種工具之出現,便利了將高階設計概念實現在晶片上之過程,但在整體流程之另一面向上,卻無法達成相同的效率及便利性。更精確地說,以HDL為基礎之模擬環境輸出的0和1等數位訊號,無法正確地支援系統層級模型的整合性開發。HDL基礎的模擬環境由於缺乏驗證系統層級表現所需的分析工具,因此大部分負責架構開發(architecture development)的系統工程師並不使用這些傳統的EDA工具。這種系統工程師與設計工程師使用不同發展環境的情形,對整個產品開發流程帶來相當程度的潛在風險。
當製程技術的進步再一次地迫使整體開發流程發生改變的同時,上述提及之風險便浮現出來。這次的改變並非發生在實體的設計流程,而是在系統設計之流程方面。為了滿足設計資源的重複使用(design reuse)及開發整合核心程式等需求,一個更為複雜的模型化環境-一個將系統層級模型和實體及驗證模型整合成一個完整的系統設計環境-應運而生,即本文中介紹的「系統層級設計環境」(System-Level Design Environment)。
系統層級設計環境
系統層級設計環境指的是一個高度整合的設計環境,使傳統上分離的設計流程和難以溝通的開發團隊得以在一個緊密連結的流程中,共同合作以完成開發工作。不論是負責資料分析及演算法概念開發、系統及元件模擬、即時原型化或是硬體測試軟體實現等不同工作的工程師,皆可在此環境中完成工作,加速整個開發流程,並使設計之驗證及重複使用更為容易。
利用提供這種整合環境之開發工具,設計者可以大幅省下花在撰寫程式以及尋找並修正設計問題的時間,而將時間與精力投注在設計概念的開發、全新科技的發展,以及即時地將一流的產品設計上市等工作方面,有效地降低整體設計工作可能面臨的風險,並滿足今日市場對於更好的性能表現、更低的成本及更快的上市時程等方面之要求。
系統層級設計環境之優點
一個理想的系統設計環境需要涵蓋完整的設計流程,亦即從演算法開發、設計與模擬到最後的原型化及實現皆可在單一設計平台環境中完成;如(圖二)所示。為了實現這樣的概念,這樣的設計環境需要具備能夠整合不同元件,包括:類比/混和信號(analog/mixed signal)、DSP、數位通訊(digital communications)、及控制邏輯(control logic)等元件的能力。一但將系統模型化後,開發團隊即可開始檢視系統的表現是否能夠達成規格之要求,測試並決定設計之取捨(trade-offs)安排及參數之調校等工作,以達成性能表現最佳化。
上述種種工作都能在一個階層式的模塊圖表(hierarchical block diagram)中設計呈現並進行模擬,使得負責各個不同設計階段工作的工程師,能夠對整個設計有明白一致的概念,並且提供一個清楚、可執行的規格以為各個軟、硬體工程師設計系統元件時之依據。此設計平台可應用在DSP、數位通訊、類比/混和信號以及控制邏輯元件之設計,可以用來模擬單一或多頻道資料,以及線性和非線性元件。這種能夠在單一平台上模擬整個系統及系統中細部元件之情形,使得開發者得以測試整個系統。
利用事先建立好的模塊(block)及函式庫(library),加上簡單的拖放(drag-and-drop)動作,開發者便可輕易地開始設計模擬一個規模巨大且複雜的系統,並藉著直覺式的模型圖表呈現及互動式的模擬、視覺化能力,讓複雜的系統簡單易懂,且可輕易地修改系統中的元件。而這些模塊及函式庫在日後設計其他系統時,可以再次運用,省去了重新編寫的時間,充分達到設計資源重新利用之需求。(圖三)為一ADSL系統模型,用以模擬利用現有的電話線,將資料由網路接線生端(ATU-C)以高速傳輸送到客戶端(ATU-R)之過程情形。
在系統層級設計環境中,各階段開發團隊不需要在設計流程的三個階段中轉換時反覆重新編寫程式碼,以配合傳統上各階段不同的設計工具。過去在重複進行編寫動作的同時,錯誤往往也不斷產生。在改用系統層級設計環境之同時,利用高階(high-level)的模塊以設計演算法,低階(low-level)的元件以建立精準的模型,最後連結到目標硬體的DSP進行即時的測試及除錯等工作,能夠在設計流程之初便除去因反覆撰寫程式碼而可能產生的錯誤。
在快速原型化和程式碼產生階段,可以直接在同一設計環境中,將上一階段的系統模塊圖表自動轉換成C code,不但省去人工編碼可能花費的大量時間,並且方便開發者將系統下載到各種目標硬體如:DSP、FPGA等,有效率且可靠地在實際目標硬體上測試設計,以方便在實際進入生產階段前作最後的修改。
系統層級設計環境之工具範例
The Math Works.的MATLAB & Simulink環境即為系統層級設計環境之一種,且涵蓋之應用領域亦十分廣泛,包括無線通(wireless)、寬頻通訊(broadband)、多媒體(multi-media)或半導體(semiconductor)等設計領域。在MATLAB & Simulink的開放架構下,設計者可以將自己編寫的C code或M code包裝起來,以建立自己的模塊或函式庫,實現設計資源重複使用的理想。
如(圖四)所示,從研究階段到最後的原型化測試及實現部分,MATLAB & Simulink設計環境不但涵蓋完整的設計流程,還可以直接透過Real-Time Workshop,將Simulink模型轉成C程式碼,並與TI、Xilinx及Altera等廠商之硬體連結,以進行硬體測試與實現。
DSP及數位通訊系統設計
以MATLAB搭配Signal Processing Toolbox,可以提供開放的架構幫助使用者進行類比及數位信號處理之設計,內建許多訊號或系統分析方法,如:濾波器設計(filter design)、濾波器分析(filter analysis)、頻率響應(frequency response)、頻譜估計(spectral estimation)及統計訊號處理(statistical signal processing)等。Fiter Design Toolbox協助開發者進行數位濾波器的設計及分析等工作,藉由此工具,使用者可以達到許多實體設計方面所要求的規格、功率及速度方面的需求。Wavelet Toolbox提供直接點選(point-and-click)的圖形化工具及指令列功能,以便利設計者對訊號及影像作1D或2D的分析、合成(synthesis)、去除雜訊(denoising)及壓縮等工作,提供一個實用且完整的管道以運用小波分析理論工具。
對於從事DSP設計的工程師來說,Simulink及DSP Blockset提供所有標準的DSP元件。Simulink是一個功能強大的模塊圖表模擬環境,使用者僅需利用拖放及連結等的簡單動作,配合上預先內建的各種模塊,便可建構複雜的系統模型,為整個MATLAB&Simulink系統層級設計環境之基礎。DSP Blockset預建的模塊庫中包括可運用來作濾波、頻譜估計、向量及矩陣數學及統計等模塊。模塊可以在多種速率(multiple rates)下執行,支援快速訊框基礎(frame-based)模擬使得大量數據資料可在每段時間下處理,使得模擬可以更快速地進行,另外支援多頻道內建矩陣基礎模擬亦為其功能之一。Fixed-Point Blockset讓使用者能夠有效率地設計定點的系統和數位濾波器,並且進行bit-true模擬以觀察在有限的精準度下的模擬結果。
對於數位通訊系統的設計工作者來說,其工作往往牽涉到頻道、調變、error-coding以及inter-leaving schemes的設計,並需管理不同取樣速率(sample rates)下的位元、符號及訊框等。此外,系統的性能表現也要分析,通常是以bit error rate(BER)測試來進行檢驗。MATLAB的Communication Toolbox提供函式以建構ISO 實體層(physical layer)的元件模型,用來分析及開發如:手機、基地台、無線電話、DSL、纜線及撥接數據機、區域網路及衛星系統等,並且可用來作為通訊系統工程研究及教學方面的基礎工具。Communication Blockset包括來源(source)及頻道編碼(channel coding)、誤差編碼(error coding)、頻道模型化及調變等應用模塊。另外,CDMA Reference Blocksets包含用來建立及模擬CDMA IS-95A無線通訊標準的模塊,開發者可以藉此建立一個完整、end-to-end的無線通訊系統模型。
類比/混合信號及控制邏輯系統設計
傳統上利用電路模擬器(circuit simulators)設計的類比/混合信號及控制邏輯系統元件,如:鎖相迴圈(phase-locked loop)及類比/數位轉換器(A/D converters),現在可在Simulink單一平台上設計並模擬。過去使用的電路模擬器如:SPICE等工具,往往存在著模擬速度慢、僅提供針對類比行為(analog behavior)的非連續時間近似(discrete-time approximation)。但由於在類比及混合信號模擬方面,時間的正確性至關重要,因此傳統的做法往往在正確性方面受到一定的限制。
利用Simulink的系統層級設計環境,開發者可以在單一模擬中同時建立類比及數位元件之模型。真實世界中混合信號的元件,如:轉換器,可以用Simulink中的混合信號模塊來表示,並以高速在極短的時間間隔下進行模擬,以避免受制於一個過度取樣(over-sampled)類比信號有限的正確性。至於控制邏輯設計方面,如:初始化(initialization)、協定(protocols)以及使用者介面(user interfaces)等,通常具有事件驅動(event-driven)或回應的特性,一般往往都以有限的狀態機器(finite state machines)來建立這類的模型。Stateflow使開發者得以利用建構視覺化的狀態圖表來設計這些事件驅動的控制邏輯,一個狀態圖表就如同Simulink模型中的一個模塊一樣,可以被Simulink的信號驅動,並且可以依據Simulink送的訊號決定要如何反應,呼叫MATLAB程式碼和C程式碼,並輸出資料或事件,以控制整個模型的其他部分。這些事件狀態的轉換都可以用視覺化的方式呈現,並可以清楚地檢視這些狀態與系統訊號間的關係。
原型化及實現
測試及驗證階段的工作過去可能佔了整個設計流程三分之二以上的時間,而人工編碼(hand-coding)時的繁瑣工作及過程中產生的錯誤往往更延長了這些原本就花去許多時間的過程。Simulink利用即時快速原型化的工具、co-simulation的能力以及與不同廠商DSP、FPGA軟體或硬體間的緊密連結,協助開發者減少錯誤、有效利用所有程式開發資源、節省專案開發之時間並降低設計成本。
藉由Simulink系統層級設計環境中的Real-Time Workshop-一個程式碼產生及快速原型化工具-可直接將Simulink模型轉成有效率、可自由運用的程式碼。Real-Time Workshop可產生ANSI C程式碼,供開發者下載到DSP或嵌入式系統等晶片硬體。利用簡單的點選動作,Real-Time Workshop可將編譯(compiling)、連結(linking)及下載(downloading)等動作全部自動完成,藉此與目標硬體之間建立快速且簡易的連結,在即時環境中提供一個有效率且可靠的方式來測試、評估及實現開發者之設計。開發者可以利用Real-Time Workshop中內建的Target Language Compiler來產生適用於不同平台的程式碼。此編譯器利用可供檢視並修改的ASCII檔案,以控制每個特定Simulink模塊的程式碼產生方式。同時,利用Stateflow搭配Stateflow Coder,開發者也可以直接由Stateflow的狀態圖模型產生相對應的C程式碼,並可與Real Time Workshop產生的Simulink模型的C程式碼整合,產生代表整個模型的C程式碼,這使得Simulink和Stateflow環境成為發展汽車、航太及電信產業設計應用之嵌入式系統的理想平台。
最後,藉由硬體連結功能,開發者可輕易地將系統下載至目標硬體DSP,如:TI的C2000、C6000系列DSP、Motorola MPC555,或FPGA,如:Xilinx及Altera的FPGA等,便利開發者在硬體上進行測試及實現。下面便以一實例來說明整體系統層級設計環境。
實例說明
以往我們在設計一個系統模型時,前置作業都需經過繁瑣的程序,包括研究階段之複雜polynomials推導、設計階段的軟、硬體結合/除錯等,常常都消耗大量時間成本及研發時間,若能改以一系統層級設計環境,從頭到尾的涵蓋此研發到量產階段之設計流程,可大大地降低研發時間及人力成本。下例我們以一FIR response在DSP/FPGA實現的模型來說明整個系統層級發展環境的開發流程。
1.演算法開發
此例中開發團隊希望建構一FIR濾波器,做一個改變音頻解析度(audio resolution)的處理器。首先,利用(圖五)中藍色部分的MATLAB&Simulink,可以順利幫助開發者完成演算法開發的過程。而建立好的Simulink模型,即成為各階段開發團隊間易於上手應用的規格模型。
《圖五 演算法開發的工作通常在MATLAB&Simulink環境下進行。》 |
|
2.測試與模擬
當演算法開發完成後,整個系統模型便已經清楚地呈現,如(圖六)所示。在此例中由於目標硬體是Xilinx的FPGA,因此在建構模型時,利用到Xilinx所提供的模塊組。而圖中在輸入部份是以Simulink中內建的模塊去產生一個音訊,此例中我們以最簡單的一個Sine波為訊號來源;在輸出部分同樣是以Simulink內建的模塊Scope供開發團隊在作測試時可以清楚地觀察結果。模型的中央則是由加拿大的LSP公司提供,針對Xilinx FPGA作軟體模擬的模塊,而MCBSP Gateway in、out,是負責Simulink及Xilinx模塊間的溝通媒介,正中央則為開發團隊所建構的FIR核心設計部份。由於之前研發階段已完成,接下來就進入了內部參數設定,即相當於軟體、硬體團隊在作連結及演算法設計流程。而在軟、硬體模擬部份,我們一樣以此相同環境及模型以進行除錯或修改等步驟。
《圖六 在相同的環境下進行測試、模擬、除錯及修改等步驟。》 |
|
3.原型化及實現
當在軟體環境下之測試模擬都完成之後,我們接下來便要在實際的目標硬體上測試所設計的系統,即原型化測試。(圖七)中央的SMC6XX MCBSP模塊代表即將下載至目標硬體-此例中為Xilinx的FPGA-實現的系統模型,而輸入、輸出訊號已經改成實際日常應用的音效源(如:麥克風)及喇叭。在下載過程中,只要設計者想要改變內部參數去測試不同狀況,便可在模塊中即時去修改參數,而系統也會即時地去調整參數。在完成原型化測試,確定系統在硬體上面之運作無誤後,便可直接進行產品量產階段。
《圖七 在同一環境下將相同模型下載到目標硬體上直接進行原型化測試》 |
|
結語
系統層級設計之概念與環境已成為EDA產業不可避免的趨勢,在產品上市時程不斷提前之壓力下,如何以最快速、最有效率的方法完成系統的觀念產生、設計、測試、模擬到產品上市的一連串過程,成為電子產品研發成敗的重要關鍵。因此一個涵蓋整體設計流程、應用範圍廣泛,且能有效提高IP再使用率的開放性設計工具,實是搶佔市場先機所不可或缺之因素。
(作者任職於鈦思科技)