喻賢坤 姜 爽 王 莉 彭 斌
(北京微電子技術研究所,北京,100076)
宇航專用集成電路(ASIC)設計流程的標準化※
喻賢坤 姜 爽 王 莉 彭 斌
(北京微電子技術研究所,北京,100076)
文摘:結合宇航ASIC的產品特點,將宇航ASIC設計流程劃分為4個主要步驟(功能模塊劃分、邏輯設計、邏輯驗證和物理實現),為每個步驟制定出總體設計方法與規則,在每個ASIC設計流程的細分環節中提煉出共性設計指標和方法,在宇航ASIC設計流程個環節建立相應的標準。
宇航元器件;專用集成電路(ASIC);設計流程;標準化。
隨著超大規模集成電路的飛速發展,集成電路產品更新換代的周期越來越短,與此同時,航天發射任務密度大幅度提高,也在很大程度上考驗著集成電路產品的研制質量和周期。宇航專用集成電路(Application Specific Intergrated Circuit,ASIC)屬于定制或半定制的大規模集成數字電路,從功能模塊劃分、邏輯設計、邏輯驗證到物理實現是一個逐層推進、循環迭代的過程,在保證功能完全符合要求的前提下,需要在面積、速度和功耗之間進行平衡,從而達到電路的最佳整體性能。
目前,在工業界的商用ASIC設計流程中,每一步都離不開電子設計自動化(Electronic Design Automation,EDA)工具的支持。同時EDA工具的自動化和標準化程度也越來越高,商用ASIC設計具有明確的標準化流程。但是由于對可靠性的要求極高,宇航ASIC不可能完全照搬商用ASIC的設計流程標準,必須制定針對宇航ASIC的特定規范和標準。
通過借鑒目前工業界主流的ASIC設計流程以及過去多年的多款宇航ASIC設計成功經驗,我們對每個設計流程制定相應的嚴格標準,并將每個設計流程的標準做到精細化,從而建立一整套的宇航ASIC設計標準化流程,確保宇航ASIC研制的一次投片成功,并有效降低設計過程中的反復迭代,提高設計效率,保證產品質量和性能。
在確立系統需求和完成功能定義后,宇航ASIC的設計流程可以分為4個主要步驟:功能模塊劃分、邏輯設計、邏輯驗證和物理實現,如圖1所示。
在明確功能需求并形成宇航ASIC的功能定義規格書后,應做好以下工作。首先,需要對宇航ASIC進行內部功能模塊的劃分,使每個功能模塊實現相應的功能,各個功能模塊連接到一起形成整個ASIC電路。第二,根據功能模塊的劃分,按照功能和接口要求,采用硬件描述語言(HDL)進行模塊的邏輯設計,形成寄存器傳輸級(RTL)代碼。第三,針對宇航ASIC規格書的功能和時序要求,采用現場可編程邏輯門陣列(FPGA)原型或者軟件仿真的方式,編寫測試代碼或者測試激勵,進行邏輯驗證,并確保邏輯設計完全符合設計要求。第四,將RTL代碼通過邏輯綜合工具映射到相應的工藝庫上,進行布局布線等版圖設計,完成時序驗證和收斂,形成用于投片生產的版圖數據。
1.1 功能模塊劃分
功能模塊劃分定義了ASIC設計的初始架構,有效的功能劃分,既能夠提高代碼的可讀性,更為關鍵的是能夠提升邏輯綜合的效果,降低邏輯綜合所用的時間,簡化邏輯綜合所需的約束和腳本[1]。
首先,根據宇航ASIC的外部功能要求和內在模塊的功能特點,將整體ASIC劃分為不同的功能模塊,比如時鐘產生模塊、復位模塊、分頻模塊、數據接收模塊、處理模塊以及輸出控制模塊等。第二,所劃分模塊的大小也會對后續的物理實現有很大的影響,過小的模塊實際上是人為地在模塊之間插入邊界,不利于邏輯綜合的優化,而過大的模塊會使邏輯綜合時間變得很長。第三,功能模塊劃分是否合理,直接關系到宇航ASIC的自底向上的層次化設計效率,并影響研制進度和產品性能。
1.2 邏輯設計
邏輯設計是指采用HDL語言將電路的功能描述成RTL代碼的形式。目前,HDL語言主要分為Verilog HDL和VHDL,兩種設計語言在語法上很接近,大同小異。邏輯設計在編寫RTL代碼的過程中,應當遵循可綜合的編碼風格,否則會導致代碼不可綜合,或者綜合出的門級網表不正確,或者門級網表中存在潛在不可靠性和風險[2]。此外,RTL代碼的質量高低和是否規范,直接影響到ASIC芯片質量和設計進度。一個好的RTL代碼邏輯設計,能夠實現一個面積相對較小、速度相對較快的電路設計。
1.3 邏輯驗證
在完成邏輯設計后,需要通過FPGA原型或者軟件仿真這兩種形式驗證邏輯設計是否符合設計要求,即為邏輯驗證。邏輯驗證是整個宇航ASIC設計流程的最為關鍵的一個步驟,占用設計時間的比例也最大,約為60%~70%左右。FPGA原型驗證是將RTL代碼燒錄到FPGA中,根據宇航ASIC的功能和時序定義開發測試程序,完成RTL代碼的驗證。軟件仿真是采用仿真工具(如Modelsim、VCS、NC-Verilog等),根據ASIC的功能和時序定義開發測試向量(TestBench,TB)進行模擬仿真,完成RTL代碼的驗證。兩種驗證方式各有優勢,“FPGA原型驗證”能夠驗證實際的時序延遲,電路的實際運行時間即為驗證時間,驗證速度快;“軟件仿真”的優勢在于能夠觀測到每個內部模塊、每個節點的變化,調試方便,易于發現和定位RTL設計中的問題。邏輯驗證的核心在于功能驗證的完備性和時序驗證的充分性[3,4]。
1.4 物理實現
在完成全部設計功能的邏輯驗證后,需要將與工藝無關的RTL代碼映射到特定的工藝庫上,形成可供投片生產的版圖數據。該過程為宇航ASIC的物理實現,包括多個環節,如圖2所示。
如果是電路內部集成存儲器(Memory)單元,需要采用設計工具插入存儲器內建自測試(MBIST)邏輯。插入MBIST邏輯,并經過MBISTRTL仿真確認正確后,采用DFT Compiler工具將邏輯設計RTL代碼和MBIST邏輯映射到特定的工藝單元庫上,并在此過程中插入掃描測試邏輯、門控時鐘等結構,形成門級網表。
·將邏輯綜合產生的門級網表與最初始的RTL代碼,用Formality工具進行形式驗證,確保門級網表與RTL的功能一致,然后采用PT(Prime Time)工具進行靜態時序分析,保證時序滿足設計要求。
·將邏輯綜合后的門級網表與PT工具產生的電路約束文件同時輸入到數字電路版圖設計工具Encounter中,進行版圖布局、供電網絡設計、時鐘樹設計、布線及時序分析優化和物理驗證,并提取電路的實際寄生參數,即標準參數交換格式(Standard Parasitic Exchange Format,spef)文件。
·將布局布線后的網表和邏輯綜合后的網表進行形式驗證,保證二者功能的一致性,然后將布局布線后的網表和spef輸入到PT工具,采用依據電路設計要求制定的約束進行靜態時序分析,完成時序驗證,并產生標準延遲參數(Standard Delay Format,sdf)。
·采用軟件仿真工具,反標sdf,進行掃描測試后仿真、MBIST后仿真和功能后仿真,確認功能和時序符合要求后,即可形成用于投片生產的版圖數據。
宇航ASIC的每一步的設計性能都會直接關系到后續設計步驟的結果,環環相扣,逐層推進,進而實現設計目標。然而,宇航ASIC作為超大規模集成電路,其性能與可靠性的提升,需要每一個步驟的高效可靠設計以及與后續步驟的密切配合。因此,設計流程的標準化對于宇航ASIC性能與可靠性的提升是必要方法。此外,宇航ASIC設計流程的自身特點決定了在設計過程中難免會出現多次設計修改和反復迭代,并且越到設計后期,設計更改對進度的影響越大,付出的代價也更大。而設計流程的規范化和標準化,可以有效減少設計迭代或反復的次數,從而縮短研制周期。
基于以上對宇航ASIC設計流程和特點的分析,制定了規范化的“宇航ASIC設計流程標準”,包括4項標準:《宇航ASIC功能模塊劃分規范》、《宇航ASIC RTL邏輯設計規范》、《宇航ASIC邏輯驗證規范》和《宇航ASIC物理實現設計規范》。
2.1 功能模塊劃分的標準化
在大多數的應用系統中,宇航ASIC是作為協處理器,完成速度要求低的非核心運算和數據處理;或者作為溫度采集、圖像采集、陀螺、馬達等功能組件與主處理器之間的接口電路,完成數據采集、數據轉換、時序驅動和邏輯控制等功能。
我們根據過去多款宇航ASIC的應用場合和特點,結合模塊化驗證和邏輯綜合等設計要求,制定了《宇航ASIC功能模塊劃分規范》,該規范包括3項功能模塊劃分標準:①基于邏輯功能的模塊劃分標準;②基于設計目標的模塊劃分標準;③基于模塊可復用原則的模塊劃分標準。上述標準分別從不同的出發點規范了功能模塊的劃分方式,內容包括該標準的目的、原理分析、劃分方式以及實施方法。
《基于邏輯功能的模塊劃分標準》規定:根據接口功能的不同,模塊可以劃分為處理器接口、數據采集、通用異步收發器(Universal Asynchronous Receiver/Transmitter,UART)、串行外設接口(Serial Peripheral Interface,SPI)、輸出驅動以及數據交互等模塊;根據內部模塊功能的不同,可以劃分為時鐘產生、復位、分頻、數據處理、總線等模塊。
《基于設計目標的模塊劃分標準》規定:根據時鐘域和電壓域要求的不同,模塊可以劃分為高頻邏輯、低頻邏輯、高電壓域、低電壓域等模塊。
《基于模塊可復用原則的模塊劃分標準》規定:哪些模塊適合劃分為可復用模塊以及可復用模塊的接口的定義規則等內容。
如,某星用ASIC需要完成的功能是采集衛星姿態的數據,并將數據存儲后供處理器讀取,同時接收處理器發送來的指令和數據,對衛星進行姿態控制。其功能模塊劃分如圖3所示。
該星用ASIC的功能模塊劃分,由于沒有特殊的時鐘域、電壓域等要求,采用的是《基于邏輯功能的模塊劃分標準》。根據與外部接口功能的不同,劃分為處理器接口、數據采集、控制信號生成和數據發送;根據內部功能模塊的不同,劃分為時鐘產生、復位產生、分頻等模塊。采用這種標準進行的功能模塊劃分,會使RTL代碼具有較強的可讀性,便于維護,并且使得邏輯結構清晰,有利于模塊化的設計和驗證。同時,對于自底向上的層次化設計來說,模塊劃分清晰,接口明確,對于層次化設計的時序匹配和性能提升有積極的促進作用。
2.2 邏輯設計的標準化
我們結合宇航ASIC應用場合的特點,針對宇航ASIC邏輯設計的RTL代碼編寫,借鑒商用數字電路產品代碼設計規則檢查工具Leda的規則集,歸納出現問題的ASIC電路在代碼設計過程中的不足之處,制定了《宇航ASIC RTL邏輯設計規范》。該規范主要包括3項RTL代碼設計標準:①可綜合風格的RTL代碼設計標準;②高可靠性的RTL代碼設計標準;③增強代碼可讀性的RTL代碼設計標準。上述標準是為了實現不同的RTL代碼設計目標,各有側重。
《可綜合風格的RTL代碼設計標準》包括150條RTL代碼設計規則,涉及到不可綜合語句的禁用列表,賦值語句、if語句、case語句等編寫,敏感列表的編寫等規則標準。如,在禁用列表中包括initial、wait、#delay等不可綜合的語句,時序邏輯采用非阻塞賦值,組合邏輯采用阻塞賦值。
《高可靠性的RTL代碼代碼設計標準》包含4條設計規則:①復位結構應當采用異步復位、同步釋放的結構;②影響電路工作模式或狀態的全局性的關鍵配置寄存器,采用三位二進制碼來表示一位配置寄存器的值,并進行糾檢錯刷新操作;③狀態機的所有編碼狀態應當是明確的,不能讓狀態機進入無法轉移的狀態;④存儲器應當配合糾檢錯碼(Error Eetection and Correction Code,EDAC)使用。
《增強代碼可讀性的RTL代碼設計標準》包含2條規則:①模塊、端口、信號和變量的命名,應當清晰地反映功能描述;②每個模塊的開頭都應當具有詳細直觀的聲明注釋,包括模塊名、功能描述、設計者、設計日期、版本和更新內容等。
編制《宇航ASIC RTL邏輯設計規范》應當遵循的原則是:①可綜合,由于邏輯設計是邏輯綜合等物理實現的基礎,直接關系到邏輯綜合出的門級網表的綜合性能,因此在編寫HDL代碼過程中,應當充分考慮代碼的物理實現;優秀的代碼設計風格,包括適當的層次化設計,將會使邏輯綜合工具花費更少的時間來實現設計目標;②高可靠,宇航ASIC的應用場合為地球外空間,會受到大量高能粒子的干擾,在邏輯設計中應當通過增加冗余等方式保證其可靠性;③可讀性,RTL代碼還應當考慮到其可讀性,便于代碼的驗證和維護。
2.3 邏輯驗證的標準化
邏輯驗證的目的是確保邏輯設計能夠完成設計規范的任務。驗證工程師通過閱讀設計規格書并擬定驗證計劃,編寫測試程序或創建測試激勵檢查RTL代碼是否準確地實現了所有設計功能要求。
借鑒工業界的數字集成電路驗證流程,結合FPGA原型驗證和軟件仿真驗證兩種驗證方式,將常用的測試程序或驗證模型固化下來,形成固化的驗證知識產權(Intellectual Property,IP)或方法,融入到相應的驗證標準中,制定了《宇航ASIC邏輯驗證規范》,包括五項標準:①宇航ASIC邏輯驗證計劃制定標準;②宇航ASIC的FPGA原型驗證及考核標準;③宇航ASIC的FPGA原型驗證報告編寫規范;④宇航ASIC的軟件仿真驗證及考核標準;⑤宇航ASIC的軟件仿真驗證報告編寫規范。
以上5項標準是按照ASIC的驗證流程分別來制定的,包括3個技術文檔的編寫和2種驗證方式及其考核標準,可以作為宇航ASIC驗證過程中的指導規范,讓驗證工程師有章可循,同時有利于設計文檔的規范化管理。技術文檔標準規定了技術文檔應當包含哪些內容,采用什么樣的編寫格式。
《宇航ASIC邏輯驗證計劃制定標準》規定:驗證計劃的技術文檔中應當包括引用文件、驗證策略、驗證環境、設計要點檢查計劃、驗證程序或測試向量的說明、外圍驗證模塊的說明、功能驗證和時序驗證通過的標準等內容,而每項內容都規定了應當做到什么程度才符合要求。如,設計要點檢查計劃規定:驗證計劃中的功能驗證點必須涵蓋設計規格書中的所有功能模塊和所有功能點,并做到一一對應。
《宇航ASIC的FPGA原型驗證及考核標準》規定:FPGA型號及原型板的選取、測試PCB板的原理圖設計、單片機固化應用程序基本設置的移植及復用的說明、FPGA原型結果的判斷標準和驗證質量的考核等內容。如,FPGA原型驗證質量,要求通過功能點與設計規格書定義的功能點逐條比對來考核是否進行了完備的FPGA原型驗證。
《宇航ASIC的軟件仿真驗證及考核標準》規定:固化的驗證IP模型、故障注入、時序反標和驗證、驗證質量的考核。“驗證IP模型”包括6種:UART、SPI、I2C、CAN接口模型以及APS模型、CPU模型。以上仿真模型經常作為宇航ASIC的外圍器件,將這些反復使用并且正確的仿真模型固化下來形成驗證IP,能夠很輕易地移植到采用此類外圍器件的宇航ASIC的軟件仿真驗證中。“故障注入”包括故障注入的點應當選取關鍵寄存器、狀態機或者存儲器,而不能是組合邏輯中的某個節點,因為組合邏輯上的某個節點的故障并不一定會導致后級觸發器發生錯誤,可能是一次無效的故障注入。“時序反標和驗證”規定反標的sdf文件應當與電路工作模式一致,時序驗證應當包括最好和最差的兩個工藝角,包括所有的工作模式,如功能模式、MBIST、掃描模式等。“驗證質量的考核”,通過代碼覆蓋率、功能覆蓋率等量化指標來考核軟件仿真驗證的完備性,代碼和功能覆蓋率均需要達到100%,才能開展后續設計工作。通過編制以上標準和規范,在FPGA原型驗證和軟件仿真驗證方面,建立了指導性的驗證方法和策略。
2.4 物理實現的標準化
由于宇航ASIC的空間應用的抗輻照要求,因此在宇航ASIC的物理實現過程中,需要將RTL代碼映射到特定的抗輻照單元工藝庫上。每個工藝庫都具有自身的特征參數,需要在準確把握單元庫特征的情況下,采用設計工具進行合理完善的約束設置,才能夠實現理想的物理設計。此外,在宇航ASIC的物理實現過程中,流程繁多,需要關注的細節也很繁雜,每位設計師對于設計工具的理解和認識也有所不同,這就會給宇航ASIC的物理實現帶來不確定的設計風險。
根據常用宇航ASIC的特點、現有抗輻照單元工藝庫的特征以及設計工具的必要設置,制定了《宇航ASIC物理實現設計規范》[1,5-8],包括6項標準:①MBIST設計規范;②邏輯綜合設計規范;③可測性設計規范;④靜態時序分析規范;⑤后端布局布線規范;⑥后仿真規范。這些標準都是基于目前主流的設計工具,歸納提煉以往多款ASIC的設計約束腳本,將具有共性的設置形成宇航ASIC的物理實現標準。
《MBIST設計規范》,基于Mentor Graphics公司的MBIST設計工具MBISTArchitect,內容包括:MBIST早期規劃、測試算法選取、仿真等。在MBIST早期規劃中,對設計中存在不同類型、數量和工作頻率的Memory的情況下,如何進行MBIST的測試結構的規劃,是采用并行測試還是串行測試結構,如何平衡測試邏輯的規模、復雜度、測試質量與測試時間的關系,根據以往設計經驗,都形成了最優化的方案,可以作為后續電路的指導方案和標準。如,電路中存在兩種不同工作頻率的Memory,應當為這兩類Memory分別插入MBIST測試邏輯結構,如果高頻Memory采用低頻的測試邏輯會造成時序測試達不到要求,而低頻Memory采用高頻的測試邏輯會造成時序的過約,都不是最佳的測試方案。
《邏輯綜合設計規范》,基于Synopsys公司的邏輯綜合工具Design Compiler(DC),根據多款ASIC的設計、實測和應用以及工藝庫特征參數,在邏輯綜合的約束設置和參數選取方面制定了具有宇航ASIC設計特點的標準。內容包括:庫的設置、時序約束、邏輯綜合的結果報告等。庫的設置必須包含目標工藝庫、綜合庫、符號庫、鏈接庫的設置,時序約束必須包含所有時鐘的定義、時鐘偏差裕量設置為20%、端口延時嚴格執行板級實際需求等內容。
其余幾項設計規范,都是采用同樣的思路,在不同的設計流程階段,完成相應標準的制定。
規范化后的《宇航ASIC設計流程標準》,覆蓋了宇航ASIC設計的4個設計步驟,包含17個子規范,既具有總體的設計指導方法和原則,又具備量化的設計考核標準和設計約束參數的設置規范。這些子規范都是按照設計流程來分類、整理和制定的,在每個設計流程環節具有很強的實際指導意義,將之前略顯粗放的設計流程管理做到更加精細化。《宇航ASIC設計流程標準》主要是針對宇航ASIC與商用ASIC產品的差異,對特定設計流程進行了規范化,并且對關鍵的參數進行了精細化的定量規定。
近期,某款ASIC的研制,就是嚴格按照該《宇航ASIC設計流程標準》進行的。該宇航ASIC是一款典型的數據采集、處理和時序驅動電路,除具備自身一些特殊的應用需求外,電路的規模、設計難度類似于之前的某款電路,實現了一次性投片成功,在功耗等性能上滿足用戶需求,并且將設計周期縮短了25%左右。
從該宇航ASIC的研制情況來看,《宇航ASIC設計流程標準》能夠有效規范宇航ASIC的設計流程,提升產品可靠性和性能,縮短研制周期,可執行性較高,效果明顯,實現了產品設計流程的精細化管理,具有很強的指導和推廣意義,發揮了標準化的作用。
通過借鑒工業界的商用ASIC設計流程標準,結合宇航ASIC的應用場合和特點,在抗輻照單元庫的基礎上,總結以往多款宇航ASIC的成功設計經驗,以主流的數字電路設計工具為標準,形成了本文所述的宇航ASIC設計的全流程規范,適用于在確立產品規格書之后到形成符合設計要求的版圖數據的整個宇航ASIC設計流程。通過標準的制定、實施,能夠指導設計人員綜合考量ASIC電路的各個性能指標,有利于產品整體性能的提升,能夠很大程度上減少設計過程中的人為失誤,避免設計反復,提高設計效率。通過標準的實施及效果評價,有利于增強宇航ASIC設計工程師的標準化意識,密切標準化工作與科研工程的結合,提升航天電子產品的研發水平。
[1]Synopsys.Design Compiler User Guide[M]. Version J-2014.09,2014-09.
[2]邸志雄.HDL代碼質量評估方法關鍵技術研究與電路性能優化[D].西安電子科技大學,2013.
[3]夏宇聞.Verillog數字集成電路設計教程[M].第2版.北京:北京航空航天大學出版社,2008.
[4][美]克里斯·斯皮爾//張春,麥宋平,趙益新.System Verilog驗證[M].第2版.北京:科學出版社,2009.
[5]Mentor Graphics,MBIST Architect Reference Manual[M].Software Version 2013.04,2013-12
[6]Synopsys.DFT Compiler,DFTMAX,and DFTMAX Ultra User Guide[M].Version J-2014.09-SP2,2014-12.
[7]Synopsys.Prime Time User Guide[M].Version J-2014.12,2014-12.
[8]Synopsys.Tetra MAX ATPG User Guide[M]. Version J-2014.09-SP2,2014-12.
喻賢坤(1984年—),男,工程師,目前從事ASIC和SoC系統架構設計研究。
姜爽(1981年—),女,高級工程師,目前從事數字集成電路設計研究。
王莉(1982年—),女,工程師,目前從事數字集成電路設計研究。
※本文源于原總裝備部預研項目《導航衛星信息處理專用ASIC技術》(GFZX03010201××)和“十一五”核高基:宇航標準體系建設項目(產品規范類)(HGJ1004××)。