硬件描述語言HDL的現(xiàn)狀與發(fā)展
摘要:從數(shù)字系統(tǒng)設計的性質出發(fā),結合目前迅速發(fā)展的芯片系統(tǒng),比較、研究各種硬件描述語言;詳細闡述各種語言的發(fā)展歷史、體系結構和設計方法;探討未來硬件描述語言的發(fā)展趨勢,同時針對國內(nèi)EDA基礎薄弱的現(xiàn)狀,在硬件描述語言方面作了一些有益的思考。
關鍵詞:ASIC 硬件描述語言HDL Verilog HDL VHDL SystemC Superlog 芯片系統(tǒng)SoC
引 言
硬件描述語言HDL是一種用形式化方法描述數(shù)字電路和系統(tǒng)的語言。利用這種語言,數(shù)字電路系統(tǒng)的設計可以從上層到下層(從抽象到具體)逐層描述自己的設計思想,用一系列分層次的模塊來表示極其復雜的數(shù)字系統(tǒng)。然后,利用電子設計自動化(EDA)工具,逐層進行仿真驗證,再把其中需要變?yōu)閷嶋H電路的模塊組合,經(jīng)過自動綜合工具轉換到門級電路網(wǎng)表。接下去,再用專用集成電路ASIC或現(xiàn)場可編程門陣列FPGA自動布局布線工具,把網(wǎng)表轉換為要實現(xiàn)的具體電路布線結構。
目前,這種高層次(high-level-design)的方法已被廣泛采用。據(jù)統(tǒng)計,目前在美國硅谷約有90%以上的ASIC和FPGA采用硬件描述語言進行設計。
硬件描述語言HDL的發(fā)展至今已有20多年的歷史,并成功地應用于設計的各個階段:建模、仿真、驗證和綜合等。到20世紀80年代,已出現(xiàn)了上百種硬件描述語言,對設計自動化曾起到了極大的促進和推動作用。但是,這些語言一般各自面向特定的設計領域和層次,而且眾多的語言使用戶無所適從。因此,急需一種面向設計的多領域、多層次并得到普遍認同的標準硬件描述語言。20世紀80年代后期,VHDL和Verilog HDL語言適應了這種趨勢的要求,先后成為IEEE標準。
現(xiàn)在,隨著系統(tǒng)級FPGA以及系統(tǒng)芯片的出現(xiàn),軟硬件協(xié)調(diào)設計和系統(tǒng)設計變得越來越重要。傳統(tǒng)意義上的硬件設計越來越傾向于與系統(tǒng)設計和軟件設計結合。硬件描述語言為適應新的情況,迅速發(fā)展,出現(xiàn)了很多新的硬件描述語言,像Superlog、SystemC、Cynlib C++等等。究竟選擇哪種語言進行設計,整個業(yè)界正在進行激烈的討論。因此,完全有必要在這方面作一些比較研究,為EDA設計做一些有意義的工作,也為發(fā)展我們未來的芯片設計技術打好基礎。
1 目前HDL發(fā)展狀況
目前,硬件描述語言可謂是百花齊放,有VHDL、Superlog、Verilog、SystemC、Cynlib C++、C Level等等。雖然各種語言各有所長,但業(yè)界對到底使用哪一種語言進行設計,卻莫衷一是,難有定論。
而比較一致的意見是,HDL和C/C++語言在設計流程中實現(xiàn)級和系統(tǒng)級都具有各自的用武之地。問題出現(xiàn)在系統(tǒng)級和實現(xiàn)級相連接的地方:什么時候將使用中的一種語言停下來,而開始使用另外一種語言?或者干脆就直接使用一種語言?現(xiàn)在看來得出結論仍為時過早。
在2001年舉行的國際HDL會議上,與會者就使用何種設計語言展開了生動、激烈的辯論。最后,與會者投票表決:如果要啟動一個芯片設計項目,他們愿意選擇哪種方案?結果,僅有2票或3票贊成使用SystemC、Cynlib和C Level設計;而Superlog和Verilog各自獲得了約20票。至于以后會是什么情況,連會議主持人John Cooley也明確表示:“5年后,誰也不知道這個星球會發(fā)生什么事情。”
各方人士各持己見:為Verilog辯護者認為,開發(fā)一種新的設計語言是一種浪費;為SystemC辯護者認為,系統(tǒng)級芯片SoC快速增長的復雜性需要新的設計方法;C語言的贊揚者認為,Verilog是硬件設計的匯編語言,而編程的標準很快就會是高級語言,Cynlib C++是最佳的選擇,它速度快、代碼精簡;Superlog的捍衛(wèi)者認為,Superlog是Verilog的擴展,可以在整個設計流程中僅提供一種語言和一個仿真器,與現(xiàn)有的方法兼容,是一種進化,而不是一場革命。
當然,以上所有的討論都沒有提及模擬設計。如果想設計帶有模擬電路的芯片,硬件描述語言必須有模擬擴展部分,像Verilog HDL-A,既要求能夠描述門級開關級,又要求具有描述物理特性的能力。
2 幾種代表性的HDL語言
2.1 VHDL
早在1980年,因為美國軍事工業(yè)需要描述電子系統(tǒng)的方法,美國國防部開始進行VHDL的開發(fā)。1987年,由IEEE(Institute of Electrical and Electro- nics Engineers)將VHDL制定為標準。參考手冊為IEEE VHDL語言參考手冊標準草案1076/B版,于1987年批準,稱為IEEE 1076-1987。應當注意,起初VHDL只是作為系統(tǒng)規(guī)范的一個標準,而不是為設計而制定的。第二個版本是在1993年制定的,稱為VHDL-93,增加了一些新的命令和屬性。
雖然有“VHDL是一個4億美元的錯誤”這樣的說法,但VHDL畢竟是1995年以前唯一制訂為標準的硬件描述語言,這是它不爭的事實和優(yōu)勢;但同時它確實比較麻煩,而且其綜合庫至今也沒有標準化,不具有晶體管開關級的描述能力和模擬設計的描述能力。目前的看法是,對于特大型的系統(tǒng)級數(shù)字電路設計,VHDL是較為合適的。
實質上,在底層的VHDL設計環(huán)境是由Verilog HDL描述的器件庫支持的,因此,它們之間的互操作性十分重要。目前,Verilog和VDHL的兩個國際組織OVI、VI正在籌劃這一工作,準備成立專門的工作組來協(xié)調(diào)VHDL和Verilog HDL語言的互操作性。OVI也支持不需要翻譯,由VHDL到Verilog的自由表達。
2.2 Verilog HDL
Verilog HDL是在1983年,由GDA(GateWay Design Automation)公司的Phil Moorby首創(chuàng)的。Phil Moorby后來成為Verilog-XL的主要設計者和Cadence公司的第一合伙人。在1984~1985年,Phil Moorby設計出了第一個名為Verilog-XL的仿真器;1986年,他對Verilog HDL的發(fā)展又作出了另一個巨大的貢獻:提出了用于快速門級仿真的XL算法。
隨著Verilog-XL算法的成功,Verilog HDL語言得到迅速發(fā)展。1989年,Cadence公司收購了GDA公司,Verilog HDL語言成為Cadence公司的私有財產(chǎn)。1990年,Cadence公司決定公開Verilog HDL語言,于是成立了OVI(Open Verilog International)組織,負責促進Verilog HDL語言的發(fā)展?;赩erilog HDL的優(yōu)越性,IEEE于1995年制定了Verilog HDL的IEEE標準,即Verilog HDL 1364-1995;2001年發(fā)布了Verilog HDL 1364-2001標準。在這個標準中,加入了Verilog HDL-A標準,使Verilog有了模擬設計描述的能力。
2.3 Superlog
開發(fā)一種新的硬件設計語言,總是有些冒險,而且未必能夠利用原來對硬件開發(fā)的經(jīng)驗。能不能在原有硬件描述語言的基礎上,結合高級語言C、C++甚至Java等語言的特點,進行擴展,達到一種新的系統(tǒng)級設計語言標準呢?
Superlog就是在這樣的背景下研制開發(fā)的系統(tǒng)級硬件描述語言。Verilog語言的首創(chuàng)者Phil Moorby和Peter Flake等硬件描述語言專家,在一家叫Co-Design Automation的EDA公司進行合作,開始對Verilog進行擴展研究。1999年,Co-Design公司發(fā)布了SUPERLOGTM系統(tǒng)設計語言,同時發(fā)布了兩個開發(fā)工具:SYSTEMSIMTM和SYSTEMEXTM。一個用于系統(tǒng)級開發(fā),一個用于高級驗證。2001年,Co-Design公司向電子產(chǎn)業(yè)標準化組織Accellera發(fā)布了SUPERLOG擴展綜合子集ESS,這樣它就可以在今天Verilog語言的RTL級綜合子集的基礎上,提供更多級別的硬件綜合抽象級,為各種系統(tǒng)級的EDA軟件工具所利用。
至今為止,已超過15家芯片設計公司用Superlog來進行芯片設計和硬件開發(fā)。Superlog是一種具有良好前景的系統(tǒng)級硬件描述語言。但是不久前,由于整個IT產(chǎn)業(yè)的滑坡,EDA公司進行大的整合,Co-Design公司被Synopsys公司兼并,形勢又變得撲朔迷離。
2.4 SystemC
隨著半導體技術的迅猛發(fā)展,SoC已經(jīng)成為當今集成電路設計的發(fā)展方向。在系統(tǒng)芯片的各個設計中,像系統(tǒng)定義、軟硬件劃分、設計實現(xiàn)等,集成電路設計界一直在考慮如何滿足SoC的設計要求,一直在尋找一種能同時實現(xiàn)較高層次的軟件和硬件描述的系統(tǒng)級設計語言。
SystemC正是在這種情況下,由Synopsys公司和CoWare公司積極響應目前各方對系統(tǒng)級設計語言的需求而合作開發(fā)的。1999年9月27日,40多家世界著名的EDA公司、IP公司、半導體公司和嵌入式軟件公司宣布成立“開放式SystemC聯(lián)盟”。著名公司Cadence也于2001年加入了SystemC聯(lián)盟。SystemC從1999年9月聯(lián)盟建立初期的0.9版本開始更新,從1.0版到1.1版,一直到2001年10月推出了最新的2.0版。
3 各種HDL語言的體系結構和設計方法
3.1 SystemC
所有的SystemC都是基于C++的;圖1中的上層構架都是很明確地建立在下層的基礎上;SystemC內(nèi)核提供一個用于系統(tǒng)體系結構、并行、通信和同步時鐘描述的模塊;完全支持內(nèi)核描繪以外的數(shù)據(jù)類型、用戶定義數(shù)據(jù)類型;通常的通信方式,如信號、FIFO,都可以在內(nèi)核的基礎上建立,經(jīng)常使用的計算模塊也可以在內(nèi)核基礎上建立;如果需要,圖1中較低層的內(nèi)容不依賴上層就可以直接使用。
實際使用中,SystemC由一組描述類庫和一個包含仿真核的庫組成。在用戶的描述程序中,必須包括相應的類庫,可以通過通常的ANSI C++編譯器編譯該程序。SystemC提供了軟件、硬件和系統(tǒng)模塊。用戶可以在不同的層次上自由選擇,建立自己的系統(tǒng)模型,進行仿真、優(yōu)化、驗證、綜合等等。
3.2 Superlog
Superlog集合了Verilog的簡潔、C語言的強大、功能驗證和系統(tǒng)級結構設計等特征,是一種高速的硬件描述語言。其體系結構如圖2。
① Verilog 95和Verilog 2K。Superlog是Verilog HDL的超集,支持最新的Verilog 2K的硬件模型。
② C和C++語言。Superlog提供C語言的結構、類型、指針,同時具有C++面對對象的特性。
③ Superlog擴展綜合子集ESS。ESS提供一種新的硬件描述的綜合抽象級。
?、?強大的驗證功能。自動測試基準,如隨機數(shù)據(jù)產(chǎn)生、功能覆蓋、各種專有檢查等。
Superlog的系統(tǒng)級硬件開發(fā)工具主要有Co- Design Automation公司的SYSTEMSIMTM和SYSTEMEXTM,同時可以結合其它的EDA工具進行開發(fā)。
3.3 Verilog和VHDL
這兩種語言是傳統(tǒng)硬件描述語言,有很多的書籍和資料可以查閱參考,這里不多介紹。
4 目前可取可行的策略和方式
按傳統(tǒng)方法,我們將硬件抽象級的模型類型分為以下五種:
◇ 系統(tǒng)級(system)——用語言提供的高級結構實現(xiàn)算法運行的模型;
◇ 算法級(algorithm)——用語言提供的高級結構實現(xiàn)算法運行的模型;
◇ RTL級(Register Transfer Level)——描述數(shù)據(jù)在寄存器之間流動和如何處理、控制這些數(shù)據(jù)流動的模型。(以上三種都屬于行為描述,只有RTL級才與邏輯電路有明確的對應關系。)
◇ 門級(gate-level)——描述邏輯門以及邏輯門之間的連接模型。(與邏輯電路有確切的連接關系。以上四種,數(shù)字系統(tǒng)設計工程師必須掌握。)
◇ 開關級(switch-level)——描述器件中三極管和存儲節(jié)點以及它們之間連接的模型。(與具體的物理電路有對應關系,工藝庫元件和宏部件設計人員必須掌握。)
根據(jù)目前芯片設計的發(fā)展趨勢,驗證級和綜合抽象級也有可能成為一種標準級別。因為它們適合于IP核復用和系統(tǒng)級仿真綜合優(yōu)化的需要,而軟件(嵌入式、固件式)也越來越成為一個和系統(tǒng)密切相關的抽象級別。
目前,對于一個系統(tǒng)芯片設計項目,可以采用的方案包括以下幾種:
① 最傳統(tǒng)的辦法是,在系統(tǒng)級采用VHDL,在軟件級采用C語言,在實現(xiàn)級采用Verilog。目前,VHDL與Verilog的互操作性已經(jīng)逐步走向標準化,但軟件與硬件的協(xié)調(diào)設計還是一個很具挑戰(zhàn)性的工作,因為軟件越來越成為SOC設計的關鍵。該方案的特點是:風險小,集成難度大,與原有方法完全兼容,有現(xiàn)成的開發(fā)工具;但工具集成由開發(fā)者自行負責完成。
?、?系統(tǒng)級及軟件級采用Superlog,硬件級和實現(xiàn)級均采用Verilog HDL描述,這樣和原有的硬件設計可以兼容。只要重新采購兩個Superlog開發(fā)工具SYSTEMSIMTM和SYSTEMEXTM即可。該方案特點是風險較小,易于集成,與原硬件設計兼容性好,有集成開發(fā)環(huán)境。
?、?系統(tǒng)級和軟件級采用SystemC,硬件級采用SystemC與常規(guī)的Verilog HDL互相轉換,與原來的軟件編譯環(huán)境完全兼容。開發(fā)者只需要一組描述類庫和一個包含仿真核的庫,就可以在通常的ANSI C++編譯器環(huán)境下開發(fā);但硬件描述與原有方法完全不兼容。該方案特點是風險較大,與原軟件開發(fā)兼容性好,硬件開發(fā)有風險。
5 未來發(fā)展和技術方向
微電子設計工業(yè)的設計線寬已經(jīng)從0.25μm向 0.18μm變遷,而且正在向0.13μm和90nm的目標努力邁進。到0.13μm這個目標后,90%的信號延遲將由線路互連所產(chǎn)生。為了設計工作頻率近2GHz的高性能電路,就必須解決感應、電遷移和襯底噪聲問題(同時還有設計復雜度問題)。
未來幾年的設計中所面臨的挑戰(zhàn)有哪些?標準組織怎樣去面對?當設計線寬降到0.13μm,甚至更小時,將會出現(xiàn)四個主要的趨勢:
◇ 設計再利用;
◇ 設計驗證(包括硬件和軟件);
◇ 互連問題將決定對時間、電源及噪聲要求;
◇ 系統(tǒng)級芯片設計要求。
滿足未來設計者需要的設計環(huán)境將是多家供應商提供解決方案的模式,因為涉及的問題面太廣且太復雜,沒有哪個公司或實體可以獨立解決。實際上,人們完全有理由認為,對下一代設計問題解決方案的貢獻,基礎研究活動與獨立產(chǎn)業(yè)的作用將同等重要。
以后,EDA界將在以下三個方面開展工作。
① 互用性標準。所有解決方案的基礎,是設計工具開發(fā)過程的組件——互用性標準。我們知道,EDA工業(yè)采用的是工業(yè)上所需要的標準,而不管標準是誰制定的。但是,當今市場的迅速發(fā)展正在將優(yōu)勢轉向那些提供標準時能做到快速適應和技術領先的組織。處于領先的公司正在有目的地向這方面投資,那些沒有參加開發(fā)這些標準的公司則必須獨自承擔風險。
?、?擴展其高級庫格式(ALF)標準,使其包含物理領域的信息,是EDA開發(fā)商可以致力于解決互連問題的算法,從而使電路設計者在解決設計收尾工作時,不再受到這個問題的困擾。
?、?制定新的系統(tǒng)級設計語言標準。標準化系統(tǒng)芯片的設計工具和語言,使SoC真正達到第三次微電子設計革命浪潮。
6 國內(nèi)發(fā)展的戰(zhàn)略選擇
由于目前IT行業(yè)不景氣,以及ASIC設計復雜程度不斷增加,各EDA公司出現(xiàn)了合并調(diào)整的趨勢。Synopsys合了Avant!和Co-Design,Cadence合了GDA等,形成了幾大巨頭的局面。而各可編程器件廠商,像Xilinx和Altera,也積極與EDA緊密合作,因此,我們必須抓住這個時機,全力發(fā)展;不然,就要面對以后與壟斷巨頭進行競爭的事倍功半的不利局面。
針對目前硬件描述語言的發(fā)展和國家芯片制造生產(chǎn)的發(fā)展戰(zhàn)略,國內(nèi)如何在原EDA基礎薄弱的情況下迅速發(fā)展,使EDA成為一個合理、健康而必不可少的產(chǎn)業(yè);將基礎研究活動與獨立產(chǎn)業(yè)的作用合理的結合,建議開展如下方面的工作:
?、?為了實現(xiàn)我國的芯片設計自主化,必須夯實基礎,在結合VHDL的基礎上,推廣Verilog HDL設計語言,使硬件設計的底層單元庫可以自主研制;
?、?根據(jù)目前芯片系統(tǒng)的發(fā)展趨勢,對系統(tǒng)級語言進行比較研究,在Suoerlog、SystemC等語言中做出選擇,并進行相關工具的推廣,以及與相關企業(yè)進行合作等;
?、?深入HDL語言的綜合和仿真等模型的研究,努力在與國外合作的基礎上,建立自主知識產(chǎn)權的EDA公司;
?、?積極加入EDA目前正在進行的標準化工作,做到了解、學習、應用、吸收、參與并重;
?、?政府積極加入,重視產(chǎn)、學、研的合作,開展卓有成效的發(fā)展模式。