12
SOC 設設設設設設設 歐歐歐歐 歐歐歐 歐歐歐 歐歐歐歐歐歐歐歐歐歐歐 歐歐歐歐歐歐 1001 歐 TEL: (03) 5712121 EXT. 56667 Email: [email protected] ; [email protected] ; [email protected] 設設 歐歐 ,體 (IC)歐歐歐歐 IC SOC(System On Chip) SOC SOC 歐歐歐歐歐歐歐歐 OPENCORES 歐歐 ,一 open source 歐歐歐歐歐 IC 歐 OPENCORES 歐歐歐歐歐歐歐 歐歐 OPENCORES 歐歐歐 SOC 歐 歐 SOC 歐 1

speed.cis.nctu.edu.twspeed.cis.nctu.edu.tw/~ydlin/miscpub/soc.doc · Web view答案是有的,這種語言我們通稱為硬體描述語言(Hardware Description Language(HDL)),HDL經過長時間的發展,目前較普遍的有VHDL以及Verilog

  • Upload
    others

  • View
    4

  • Download
    0

Embed Size (px)

Citation preview

SOC設計方法與實例

歐陽銘康 林柏青 林盈達

國立交通大學資訊科學系新竹市大學路 1001號

TEL: (03) 5712121 EXT. 56667

Email: [email protected] ; [email protected] ; [email protected]

摘要在這篇文章中,我們將主要的焦點放在數位積體電路(IC)的發展上,簡介數位 IC設計的進

展與當今普遍採用的設計流程;以及介紹 SOC(System On Chip)這個今天在電子相關產業相當熱門的領域,筆者將簡述 SOC的設計流程跟方法,以及現在市場上跟 SOC設計相關的解決方案;接下來我們會將眼光轉到 OPENCORES,這是一個以 open source的精神推廣 IC設計的機構,筆者會介紹在 OPENCORES中有哪些資源可供利用,接下來我們會看看 OPENCORES目前在SOC的發展上能提供的資源;最後筆者將簡介數位設計的趨勢以及台灣目前在 SOC的發展上所推動的計畫。

1

I 數位電路設計的演進與HDL

I.A 歷史背景數位電路的發展,一路隨著真空管、電晶體到 IC的發明而持續演進,而 IC的問世,更是

不斷地將數位電路的功能及複雜度,提升到新的境界;從早期的 SSI、MSI、LSI、VLSI,到現在大家常看到的 0.25u、0.18u、0.13u等等,其中不斷增加的,就是單一 IC中邏輯閘的數目,從早期的十數個,到現在 0.13u製程的 IC,其中的邏輯閘數目可能高達 10~25M,這其中的的差距真的是不可同日而語。

當 IC中的邏輯閘數目隨著製程的進步而越來越多時,一些在設計上的問題就伴隨而來:我要怎麼利用這麼多可用的邏輯閘?我可以拿來設計什麼?我要怎麼設計?大家可以回想一下當初是怎麼學習數位電路的,一開始的時候不外乎是利用真值表、有限狀態機等等將數位電路轉成一堆邏輯閘的組合,之後在麵包版上用一堆小 IC跟接線將電路實作出來,而在電腦上也有一些輔助設計軟體(CAD)幫助設計者作佈線的工作以及邏輯閘層次的模擬。

這樣看起來好像不錯,但是請大家想一下,現在一顆 0.13u製程的 IC起碼有上千萬個邏輯閘,這下好了,我們要到哪裡去找這麼大的麵包版來測試電路,就算全部都在電腦上測試,接下來的問題是,我們要怎麼去組織這麼多的邏輯閘?我們只能在邏輯閘的層次去設計數位電路嗎?I.B 硬體描述語言與邏輯合成

如果大家學過電腦程式設計的話,就應該會有一種感覺,那就是我們可以用程式語言去描述一些功能,不管這些功能是用來排序或是用來作判斷;同樣的,設計數位電路也是為了實現某些功能,那有沒有程式語言可以用來描述硬體電路的?答案是有的,這種語言我們通稱為硬體描述語言(Hardware Description Language(HDL)),HDL經過長時間的發展,目前較普遍的有VHDL以及Verilog HDL。但是光有HDL並不能解決 IC設計上的問題,我們還是需要以人工的方式將 HDL的設計轉換成邏輯閘之間的連接線路,而邏輯合成(Logic Synthesis)工具的出現,正好彌補這個空缺,使得數位電路的設計工作,產生巨大的改變。

另一方面,相較於用 HDL開始 Top-to-Button的設計方式,還有一種稱之為 Cell Based的

2

方法是採取從電晶體層次開始由下往上的設計方式,目前較常用於記憶體的設計。

II SOC設計方法與業界的解決方案II.A 數位 IC設計流程

圖 1 Top-to-Button的 IC設計流程圖 1是一般數位 IC的設計流程,大體來說 Top-to Button的 IC設計分為 Front End以及

Back End兩個部分, Front End的工作主要就是把程式碼轉換成邏輯閘層次的電路,而到了Back End的部分,P & R作的是佈局(Place)與繞線(Route),Timing Simulation主要是測試經過 P

& R後某些電路產生的延遲對整個系統的影響,最後兩個步驟是投光罩前所作的修正;大家應該可以感覺到 Front End的工作主要是在功能開發以及邏輯合成產生電路,而 Back End就是作一些電路佈局以及半導體相關的工作,通常 Front End跟 Back End會交給不同的人或小組負責,在業界甚至有些公司就是專精在作 Front End或 Back End的部分。II.B 矽智財與模組化設計

從前文的介紹,我們可以看出目前數位 IC設計的重心,就在於如何用 HDL撰寫適合邏輯合成的程式,而這些程式也就是矽智財(Intellectual Property(IP))中的一種,通常我們稱這種用HDL寫出來的程式為 Soft IP;一般來說,用 HDL撰寫程式碼時,通常會以模組化的方式將電路組織起來,換句話說,利用模組化的方式將一個個 IP組合成一個電路是現在數位電路設計普遍採用的方式。II.C System On Chip (SOC)

之前討論的話題,一直圍繞在數位 IC設計的演進,但是我們不要忘了,設計方法的演進,3

有部分是因為 IC的製程不斷提昇而產生的需求,前面也提過一顆 0.13u製程的 IC可以包含上千萬個邏輯閘,那麼延續文章一開始我們提的問題,我們現在可以利用 HDL設計大型的數位電路,而現在單一 IC的容量也放得下這麼大型的電路,那我們可以拿它來作什麼?

說到系統(System),以 PC為例子,大家應該都看過 PC的主機板,上面有 CPU、記憶體、控制晶片、匯流排等等不同的部分,而整張主機板也佈滿了大大小小一堆的 IC,也就說 PC這個系統並不是由單一的 IC所組成的;換過來說,如果我們今天需要一個系統,但是不需要擁有類似 PC的計算能力或完整的功能,再加上現在的 IC可以塞那麼多的東西,那我們可不可以把整個系統放到一顆 IC裡面?

System On Chip (SOC),照字面的意思講起來就是把系統放到晶片上,它現在也是電子業界熱門的話題,我們先給系統一個簡單的定義,那就是系統是一些模組以及子系統的集合,將這些模組跟子系統連結起來達到特定的功能就是一個系統,所以說起來,PC是一個系統,手機也是一個系統,遊樂器也是一個系統,很多東西都可以稱得上是系統。

那把整個系統塞到一顆或少數幾顆晶片中麼好處?以下就列舉幾項 SOC的優點:1. 成本降低。2. 執行效能增加。3. 耗電量降低。4. 體積縮小。5. 可靠度增加。將系統中 IC數目降到最低,體積縮小跟成本降低是可以預期的,而把所有電路濃縮到一顆

晶片使得不同模組間彼此的連接距離都相當短,所以可以增加執行效能以及降低耗電量,可靠度之所以能提昇是因為系統中外部連接點數目減少的緣故,一般來說盡量將系統的功能整合到單一晶片中是目前 IC設計的趨勢。II.D SOC架構

4

圖 2 SOC架構圖 2是目前一般常見的 SOC架構,以處理器為中心,加上記憶體、匯流排、控制模組、週邊

電路等等,配合嵌入式軟體(Embedded Software)跟即時作業系統(RTOS)等一起運作,大家或許會覺得這看起來跟一般微處理機系統好像差不多,不過當系統整合在單一晶片中,有些地方的考量就會不一樣,如晶片中的匯流排結構(即上圖的 OCB(On Chip Bus) Architecture),因為連接匯流排的模組以及匯流排本身都在同一個晶片中,而一般匯流排連接的裝置就不是如此。II.D SOC設計上的挑戰

由於 IC製程的演進,使得將系統單一晶片化成為一項趨勢,而這的確也有它的好處存在,但是在 SOC的設計上,也有其困難之處,例如系統的複雜度就是其中之一,一個 SOC的設計可能包含了處理器、DSP、軟體介面、作業系統、匯流排結構、數位或類比模組等等,其中的複雜度可能不下於一般的處理器系統。另外由於市場競爭的壓力越來越大,產品的成本不斷向下探底,開發週期也越來越短,如何滿足客戶不同的需求也是重點之一。II.E IP模組的可重複使用性

SOC的發展除了如何有效發揮 IC的功能外,經濟性也是非常重要的考量,如何縮短開發時間,如何有效利用現有的資源都是關鍵之一。而現今 IP的設計大都以模組化為主,接下來 IP

模組的可重複使用性便成了一個重要的課題,模組是否可重複使用的關鍵之一就是介面的設計。例如Virtual Socket Interface(VSI) Alliance提出的VC Interface便是提供一個模組跟匯流排之間以及模組之間連接介面的標準規格,在這個規格之下,所有的 IP模組都被視為一個個的 Virtual

5

Component(VC),而 VC之間的溝通就藉由 VCI來完成,如此 IP模組的可重複使用性便能大幅的提升,自然有助於降低開發成本以及開發週期。II.F 平台式設計

面對日趨複雜的 SOC結構以及越來越快的市場週期,另一項設計趨勢是採用平台式的設計方式(Platform-Based Design),所謂的平台(Platform),一般來說就是一個完整的匯流排架構以及一些 IP模組所組合而成,而這個架構也必須考量到新增 IP模組的方便性,而要設計一個平台,大致上需要的步驟有:1. 決定這個平台主要的應用領域在哪裡。2. 選擇主要的 IP模組,一般來說就是選擇處理器的 IP。3. 決定匯流排、系統結構以及模組間的溝通方式。4. 決定記憶體的存取方式。5. 選擇所需的軟硬體 IP模組。6. 有時候選用的模組無法直接跟系統溝通,這時要考慮設計橋接器的問題。在 SOC的設計上採用一個成熟的平台通常會有幾點好處:

1. 開發的時間可有效的縮短。2. 在複雜的設計中,大量使用已驗證過的模組,可有效偵測系統遇到的瓶頸或問題。3. 容易建立開發平台供軟體開發之用。II.G SOC設計流程

在圖 3中我們將看到採用平台式的 SOC設計流程。

6

圖 3 SOC設計流程 from: “Surviving the SOC Revolution-A Guide to Platform-Based Design”

圖 3的橫軸代表的是主要的四項開發工作,從左到右分別是模組開發、模組轉移、晶片整合、軟體開發。模組開發主要的工作是準備需要的 IP模組供整合之用;模組轉移是將個別的模組作整合之前的調整,以利模組能順利的整合;晶片整合就是將模組結合成所需的系統;軟體開發則包含了作業系統、驅動程式、應用程式等的開發。縱軸代表的是整個設計流程,從上到下分別是功能設計、結構設計、整合計劃、模組開發、製造,最下面的則是支援用的技術。

圖 3所描述的整個設計流程是四項開發工作並行地從上到下的進行,圖中的各項作業在此不詳細說明,其實這張圖只是簡圖,對詳細流程有興趣的可以參考”Surviving the SOC

Revolution-A Guide to Platform-Based Design”,這本書對整個流程有非常詳細的描述。II.H SOC平台市場概況

接下來我們將看一看目前市場上有關 SOC的解決方案,而且我們將鎖定廠商提供的 SOC

設計平台,資料來源是 Design And Reuse,這是一個提供 B2B服務的機構,主要收集的資料就是各廠商在 IP及 SOC領域的產品,它的網址如下:http://www.us.design-reuse.com/,在 Platform

7

Level IP的目錄下共有以下各類產品,在此只列出數量: Processor Core Dependent

8051: 1

ARC: 1

ARM: 24

Intel 186: 0

MIPS: 2

PowerPC: 1

Processor Core Independent

General-Purpose: 3

Networking & Communications: 9

Multiprocessor / DSP

General-Purpose: 9

從這裡可以很明顯的看到 ARM這顆處理器在目前的 SOC市場上佔有明顯的優勢,而應用在網路及通訊領域的 SOC平台設計也比較多。II.I SOC平台實例

ARM除了在 IP的處理器市場佔有一席之地,在 SOC的設計上也有完整的解決方案,PrimeXsys Wireless Platform是 ARM在無線通訊應用上提供的 SOC平台,其基本架構如圖 4所示:

8

圖 4 ARM PrimeXsys Wireless Platform

整個架構以 ARM926這顆 CPU為中心,透過 AHB匯流排跟其它基本模組如 LCD控制器 、SDRAM控制器、SRAM介面連接,特殊需求的 IP模組也是經由AHB匯流排跟系統連接,Core

APB則是提供作業系統運作所需的基本功能,而 DMA APB則提供快速的 DMA介面,在這個平台中除了 ARM自己的處理器外,它採用的系統匯流排 AMBA及其它 IP模組也是 ARM的產品,除了硬體架構外,PrimeXsys在作業系統上提供 Linux、Windows CE、Symbian OS多種選擇;在其它方面,ARM也為 SOC設計提供完整的開發工具,如 Integrator硬體開發平台,ARM

Developer Suite、ARM Applications Library、ARM Firmware Suite等軟體開發工具。舉這個例子是為了強調一個完整的商業化 SOC平台可以包含哪些東西,從應用領域、硬體架構、作業系統、程式介面到軟硬體開發工具等等,完整的平台解決方案一方面可以有效開發功能越來越強大的IC,另一方面也可以有效縮短開發的週期。

III OPENCORES與 SOC設計相關資源9

III.A OPENCORES

當今的 IC設計大部分是以 IP設計為主,而 IP主要是以HDL所構成,也就是說用 HDL寫成程式碼是現在數位電路設計的主流。說到程式,大家可能就會想到要錢的跟免費的,上一節提到的 Design And Reuse中就有很多廠商提供的 IP程式,不過絕大部分都是要收錢的,那在 IP

設計的領域中,有沒有人在推廣或收集免費的 IP程式,接下來要介紹的OPENCORES就是這麼一個機構,OPENCORES主要希望以 Open Source的理念推廣 IP程式的設計,它的網址如下:http://www.opencores.org/,OPENCORES中可以利用的資源大致可分為四大類,簡述如下。一、News:提供最新消息的地方,這裡也可以看到一些專案的最新進度以及新進的技術文件。二、Articles:目前這裡的文章有 4篇,不算很多。三、Forums(Mailing Lists):OPENCORES目前有 13個討論區,大部分的討論區其實都是跟某些專案相關的,條列如下。

Bluetooth

Cdrom

Cores

Ecc

EthMac

Fpu

Nnarm

Openip

Openppc

Openrisc

Pci

Usb

Video

四、Projects:專案區可以說是整個OPENCORES的重心所在,所有的 IP設計在這裡都是以一個個的專案在進行著,到目前為止(2002/09/05),OPENCORES中總共有 145個專案,開發者有四百多人,其中有 45個專案是已經完成的;一般來說,一個完整的專案會包含以下的資料:說明文件通常以 PDF的格式存在,完整的說明文件中會詳細的列出 IP模組中的輸出入介面、暫存器、記憶位址、行為模式等資料;IP以及作模擬及測試的程式碼則主要以VHDL及Verilog HDL為主。接下來我們將以分類的方式看看OPENCORES中有哪些已完成的專案。

1. Arithmetic core:完成的有一個執行 CORDIC演算法的 IP。2. Communication controller:這裡有很多已完成的通訊控制及傳輸介面 IP,如

IrDA、USB、Ethernet MAC、HDLC、UART、I2C、GPIO、TDM、SPI、Serial Uart、Reverse

10

CDMA Access等,共有 11個完成的專案。3. Coprocessor:有 1個 FPU的專案已完成。4. Crypto core:有 1個作DES運算的專案已完成。5. DSP core:有 2個 Filter core已完成,分別是 FIR以及 Biquad IIR。6. Memory core:3個完成的專案。7. Microprocessor : 有 11 個 處 理 器 的 專 案 完 成 , 分 別 是 RISC

Microcontroller、T80、RISC5X、OPENRISC 1000、tiny8、AX8、PPX16、Yellow Star、Mini-

Risc、Plasma、nnARM,但是 nnARM這個設計已經不開放下載,詳細情形在 Articles

中有一篇文章有解釋。8. Other:這裡有 1個 PS2介面以及 1個 PWM/Timer/Counter產生器已完成,另外完成的還有 1個OpenRISC開發及除錯用的介面設計。

9. Prototype board:除了 1個小型的 FPGA測試用機版外,另外 1個就是 OPENCORES

開發的 IP測試用機版,其中有完整的機版電路圖,之前有提供訂購電路板的服務,不過目前已取消。

10. SoC:目前完成的 2個專案都是WISHBONE匯流排的控制或橋接介面。11. System controller : 完 成 的 專 案 有 5 個 , 分 別 是 PCI bridge 、 RS232 、 IDE

Controller、Memory Controller、AC97 Controller。12. Video controller:有 3個專案已完成。

III.B OPENCORES中的 SOC設計相關資源由上面的介紹,可以明顯的看到目前 OPENCORES中已經有相當多 IP模組的設計,而且

種類不少,除了上述已完成的專案外,還有很多開發中的專案在進行著,而且未完成的專案大都有部分完成的程式碼可供參考。那到目前為止,它有沒有一個完整的 SOC設計?很遺憾的,目前還沒有較完整的設計出現,不過有幾個相關的專案正在進行。

講到這裡,我們先來看一項重要的東西,那就是匯流排,匯流排在系統中扮演著連接不同模組的角色,所以對一個系統而言,模組的設計採用何種匯流排的介面便是重要的考量之一。而 SOC匯流排的標準目前是出現百家爭鳴的局面,很多 SOC開發相關領域的廠商都有推出匯

11

流排的規格,如ARM的AMBA、Altera的Avalon、IBM的 CoreConnect、VSIA的VSIA On-Chip

Bus等等,不過使用這些匯流排規格不是要收費,就是需要取得授權,免費自由使用的很少。在 OPENCORES 中,推薦的 SOC 匯流排是 WISHBONE,WISHBONE 是由 Silicore

Corporation所開發出來的晶片匯流排規格,使用它是完全免費的,也不需要授權,WISHBONE

的規格可參考下列網址:http://www.silicore.net/wishbone.htm,而OPENCORES中的專案,若是採用WISHBONE作為匯流排的介面,便會有一個 wbc(WISHBONE Compliant Core)的標誌,以玆識別。

WISHBONE採用MASTER/SLAVE的架構,資料的傳輸都是從MASTER端開始,SLAVE

端接收,但是 MASTER端跟 SLAVE端的連接方式共有 4種:Point-to-point, Data flow, Shared

bus, Crossbar switch,我們用圖 5來表示。

圖 5 WISHBONE連接 IP模組的方式從圖 5 中可以看出,在 WISHBONE 的規格中, IP 之間的溝通方式都是採用相同的

12

MASTER/SLAVE結構,但是 IP跟 IP連接的方式就可視需要選擇 4種中的任何一種,這種彈性是跟一般的匯流排規格比較不同的地方。

WISHBONE嘗試以一種簡單,但是有彈性的方式提供一個 SOC匯流排所需要的功能,不過目前WISHBONE在市場上的可見度並不高,反而在 OPENCORES中使用的比例就高很多,這大概是因為它本身是免費且完全開放使用的緣故。

接下來我們會把重點放在處理器的模組,因為這會與系統結構跟軟體息息相關,在OPENCORES中,較完整而且跟WISHBONE相容的處理器設計首推 OpenRISC 1000專案,這個專案包含了完整的軟硬體架構,在架構方面,OpenRISC 1000架構預計提供一個 32/64-bit的RISC 處理器設計,目前整個架構的規格已經完成,而 OpenRISC 1200 是目前第一個採用OpenRISC 1000規格設計的 32-bit處理器,目前大致上也已經完成,它們的關係如圖 6所示。

圖 6 OpenRISC架構在軟體方面,目前在系統移植工具方面,包括 GCC,GNU Binutils, Newlib以及 GDB等

工具都已完成,而且在 Linux上也有OpenRISC 1000的模擬器可以使用。在作業系統方面,目前已有 Linux、RTEMS可以在OpenRISC 1000的模擬器上執行,而UClinux已經可以在OpenRISC

1200上執行。接下來在系統架構上,這個專案也嘗試建立一個 OpenRISC Reference Platform (ORP)的規

格,它的目的一方面提供 OpenRISC相容軟體執行的標準平台,另一方面也是為了提供以OpenRISC為基礎的 SOC平台設計,目前的規格有記憶體位址規劃以及中斷規劃,其餘的尚未完成。

13

在這裡還是要強調平台的重要性,以上面的專案為例,若是整個 ORP規格完成,那我們就有一個標準的平台可供使用,對硬體而言,要加入其它的 IP模組大致上挑選WISHBONE相容的模組即可,會省下很多功夫,對軟體而言,因為從處理器到記憶體位址定義都有明確的規定,不論是撰寫或移植程式都會方便許多,這樣一來,不論是 IP模組或是軟體程式,它們的可重複使用性都可以大幅提昇,這些都可以大幅提昇開發的效率。

IV 總結IC的製程目前還在不斷的進步中,晶圓越作越大,從八吋一直到現在的十二吋;而 Intel

不久前也發表了 0.09u的製程技術,從現在的 0.13u又跨出了一步,可預見的是 IC的容量越來越大,能提供的功能也越來越強,而在數位電路的設計方面,為了有效利用容量越來越大的IC,利用VHDL或Verilog等HDL撰寫電路的程式碼已是普遍的做法,而 HDL本身也是不斷地在發展中,最近比較熱門的如 SystemC就嘗試著將撰寫程式的層次從 RTL提升到以 C為模組介面的層次,使得程式寫起來越來越像高階語言,也越容易模組化。IP模組的可重複利用性再配合平台式設計,將可為 SOC設計帶來更充分的便利性,以面對快速變遷的市場需求。

台灣的半導體產業在世界上已經佔有舉足輕重的地位,我們完整的垂直分工體系也是世界上獨一無二的,近年來 IC設計產業在台灣的蓬勃發展也是有目共睹的;照目前的趨勢看來,SOC已經是 IC設計的技術指標以及未來的趨勢,但是 SOC設計的技術層次複雜,牽涉到系統、軟體、硬體、矽智財的開發整合,有鑑於此,在政府所推動的矽導計畫中,與 SOC設計相關的從人才培育、產品設計到平台開發等,都有完整的規劃;這些都有助於讓台灣的半導體產業,除了目前在製造上能繼續擁有優勢外,在設計整合上也能和歐美並駕齊驅。

V 參考資料1. Surviving the SOC Revolution-A Guide to Platform-Based Design by Chang, Cooke, Hunt,

Martin, McNelly, Todd; Kluwer Academic Publishers, 1999

2. Design And Reuse, http://www.us.design-reuse.com/

3. ARM Ltd., http://www.arm.com/

14

4. OPENCORES, http://www.opencores.org/

5. Silicore Corporation, http://www.silicore.net/

6. SystemC Community, http://www.systemc.org/

7. Virtual Socket Interface Alliance, http://www.vsi.org/

8. SOC國家矽導計畫, http://www.eic.nctu.edu.tw/soc/

15