2006 CIC 電子報

18

description

利用PlatformArchitect完成ARM-Based Platform之設計與效能分析

Transcript of 2006 CIC 電子報

Page 1: 2006 CIC 電子報
Page 2: 2006 CIC 電子報

頭條新聞

11月份外賓參訪實錄

技術推廣組 / 編輯澳門大學 - 余學斌教授

來自澳門大學的余學斌教授與該校學生,於

11/10上午前來本中心參訪。首先余教授及學生前

往8樓會議室,聽取英文簡報,以期瞭解本中心

歷史背景、成立宗旨、內部組織、業務範圍及願

景展望,隨即並針對簡報內容及中心概況等相關

議題,與晶片實作組莊英宗組長交換意見。最後

余教授在同仁帶領下依序參觀其他樓層各項設施:

包括訓練教室、展示櫥窗(包括介紹晶圓製程、IC

設計的實體模型以及多項研發成果)、Agilent

93000 SoC teste,此外晶片實作組林劭冠課長則

向教授解說晶片測量實驗室各項精密儀器,在參

訪過程中,余教授除了詢問各項設備功能外,更

對本中心前瞻技術研發成果表示肯定。透過詳實

導覽下,教授及學生們均對各項測試儀器功能有

了進一步的認識與瞭解,而整個參訪行程至此亦

畫下圓滿的句點。

期盼此次澳門大學余學斌教授之到訪,能藉

由研發成果及環境的介紹,達成學術交流目的,

同時促進未來雙邊合作的契機。

清雲科技大學 - 晶片系統商管學程

清雲科技大學副校長-林仲廉博士及電子工

程系-歐謙敏老師於11/13下午,帶領該校晶片系

統(SoC)商管學程34位同學,前來本中心進行戶外

教學及參訪。此行主要目的係為了讓該學程成

員,進一步認識本中心,同時對晶片應用系統相

關知識有所暸解。

首先王建鎮副主任以致辭歡迎清雲科技大學

師生前來參訪,接著該校副校長-林仲廉博士也

代表全體師生,向本中心表達誠摰的謝意。隨後

同仁以投影片簡報的方式,向大眾說明本中心歷

史背景、成立宗旨、內部組織、業務範圍及願景

展望。最後來訪的師生,在同仁帶領下依序參觀

其他樓層各項設施:包括8樓訓練教室、展示櫥窗

余教授及學生聽取英文簡報

余教授及學生合影留念

王建鎮副主任致辭歡迎師生參訪

- 1 -

Page 3: 2006 CIC 電子報

(包括介紹晶圓製程、IC設計的實體模型以及多項

研發成果),此外設計服務組副研究員陳正斌先

生與晶片實作組林劭冠課長則分別向師生介紹

Agilent 93000 SoC tester及解說晶片測量實驗室各

項精密儀器,在參訪過程中,師生除了詢問各項

設備功能外,更對本中心各項成果表示肯定。透

過完整的解說下,教授及學生們均對各項測試儀

器功能有了基本的概念,而整個參訪活動,即在

大眾合影留念後圓滿落幕!

期盼舉行此項活動,能將IC科技種子廣泛散

播於校園,並於日後吸引更多優質菁英人才,陸

續投入IC相關產業行列,進而提昇前瞻科技研發

水準、開創我國IC產業璀燦光明的未來。

Professor Gary K. Fedder

來自美國卡內基大學的Professor Gary K.

Fedder於11/28下午,在清大微機電研究所-范龍生

所長陪同下前來本中心參訪;當天參與接待者包

括:周景揚主任、邱進峯副主任與莊英宗組長等

人,Professor Gary K. Fedder此行來訪最主要目

的,乃希望透過參訪活動,能進一步瞭解本中心

各項前瞻技術與研發成果。

首先Professor Gary K. Fedder及范所長共同

拜會周主任,雙方藉由簡短晤談交換研發心得,

接著兩位教授則前往大會議室聽取英文簡報,以

期瞭解本中心歷史背景、成立宗旨、內部組織、

業務範圍及未來展望,隨後Professor Gary K.

Fedder則針對SoC設計、晶片實作及教育訓練等

相關議題,與主管們相互討論與問答。接著本中

心主管帶領Professor Gary K. Fedder,前往10樓

晶片量測實驗室,依序參觀了各項簡介海報,於

詳實的導覽解說下,教授因此對各項測試儀器功

能有了更進一步的認識與瞭解,而整個參訪行程

亦在合影留念後,正式畫下了圓滿的句點。

期盼此次Professor Gary K. Fedder之來訪,

能加強本中心與美國卡內基大學更為密切的關

係,同時也希望藉由研究環境及成果介紹,亦可

增進彼此科技交流與尋求未來合作的契機。

清雲科技大學林仲廉副校長致辭表達感謝

清雲科技大學 - SoC商管學程參訪團合影留念

Professor Gary K. Fedder與周主任晤談並交換意見

Professor Gary K. Fedder與中心主管合影留念

- 2 -

Page 4: 2006 CIC 電子報

技術論壇

利用Platform Architect完成ARM-Based Platform之設計與效能分析

錢偉德 [email protected]

摘要

本文主旨為利用JPEG壓縮演算法為範例說明CoWare Platform Architect建構虛擬平台的

流程。內容包括三個部分:一、以CoWare標準模組組成的通用平台執行JPEG壓縮演算法。

二、利用CoWare提供的TLM層級AMBA介面函式將DCT運算獨立包裹成一單獨模組,掛在

原有通用平台上。三、如何利用CoWare的分析函式收集系統效能資料。由於CoWare提供本

中心的訓練教材相當充分,平台建立的步驟均有詳細指引,因此本報告盡量引用已有資料,

而將重點置於CoWare文件未提及的設計細節。

一、簡介

在過去,從事系統設計必須先建立硬體環境,才能考慮軟體的開發及軟硬體的整合,在

設計時程上往往耗費時日,且硬體人員及軟體人員常侷限於自己的觀點。SystemC抽象化硬

體描述語言及相關工具的發展提供了演算法/軟體層面與硬體層面的良好連結。運用以

SystemC所建立的系統模型,軟體開發人員可以在先期就大致瞭解系統平台的特性並驗證自

己所設計的演算法及軟體,而硬體設計人員則一方面可以依照既定好的架構,將原本系統模

型內抽象的SystemC模組置換成實體的RTL設計,另一方面也可以透過模擬瞭解上層軟體的

特性,以作為改進設計的參考。對於只想開發系統內某個或某些軟硬體模組的設計者而言,

SystemC平台內各種既有的IP 模組也可以減輕他們在設計時的負擔,使他們專注在核心模組

的開發而不必為了建立配合的環境而煩惱。

本文將介紹如何利用CoWare Platform Architect這套以SystemC為基礎的系統設計工具快

速地建立一個系統平台模型並作驗證分析。報告將以大家熟悉的JPEG壓縮演算法為切入

點,展示如何利用Platform Architect內的既有模組組成虛擬平台進行模擬。

二、建立通用平台

目前各學校SoC相關計畫所選擇的嵌入式處理器多為ARM926EJ-S,因此我們選擇CoWare

訓練教材裡的Exercise 14 [1] ARM926EJ-S平台來搭配我們的JPEG壓縮程式(圖一)。

- 3 -

Page 5: 2006 CIC 電子報

圖一 - ARM926EJS 平台

關於本平台的使用上有兩項需要注意之處:

1. CoWare為了訓練教材所寫的記憶體模組定址位元只有20 bits。也就是記憶體容量只有

1MB。考慮壓縮之前的BM P原始圖片資料的大小,必須修改記憶體模組型別

memory_AHB_TLM的宣告,把記憶體模組對匯流排接口p_AHB的定址寬度改為24 bits。

SC_MODULE(memory_AHB_TLM) {

AMBA::AHBTarget_inoutslave_port<24, 32> p_AHB;

}

2. 利用Display模組display_APB_TLM可以將各模組內部或是程式檢查點的資訊顯示在

console 畫面上,是在除錯時非常好用的工具。但由於將資料傳送至Display勢必會佔用AHB

的使用權,因此在系統效能分析時,應該要將各檢查點的顯示資訊關閉以避免干擾系統運

作。

關於JPEG軟體部分,亦有下面幾項需要注意。

ARM926EJ-S處理器具有Instruction Cache 及Data Cache,軟體在編譯時應將其開啟。開

啟方式如下:

- 4 -

Page 6: 2006 CIC 電子報

<1> 在 Makefile 裡加入參數

ARMCC = armcc -$(ENDIAN) -apcs /inter -g+

$(ARMCC) -DENABLE_ICACHE -DENABLE_DCACHE -o $@ -c mySoftware.c -g

<2> 在ARM啟動程式startup.s中宣告有關於 Cache Setup 的常式 CacheHandle。

EXPORT |CacheHandle|

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; |CacheHandle|

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

; This function can be called from within C to enable or disable Dcache and/or

; Icache.

; The function assumes the argument passed to this function (in a1) is one of

; the following :

;#define CACHE_DISABLE 0xFFFFEFFB // Disable Dcache and Icache

;#define CACHE_ENABLE 0x00001004 // Enable Dcache and Icache

;#define CACHE_DISABLE_D 0xFFFFFFFB // Disable Dcache

;#define CACHE_DISABLE_I 0xFFFFEFFF // Disable Icache

;#define CACHE_ENABLE_D 0x00000004 // Enable Dcache

;#define CACHE_ENABLE_I 0x00001000 // Enable Icache

|CacheHandle|

STMFD SP!,{LR}

SWI 0xFE

LDMFD SP!,{LR}

; Return.

MOVS PC, LR

我們必須在JPEG 主程式裡呼叫CacheHandle並給予適當參數,在mySoftware.c中加上下

列宣告。

extern void CacheHandle(unsigned int);

int main(void) {

CacheHandle(0x00001004);

}

另外startup.s的最後一段為設定ARM926EJ-S MMU的page table。在建構平台時必須與平

台各模組的memory map相互配合。記憶體各區段的讀、寫權限應該與該區段對應之模組的

屬性一致。以下為page table的片段。

- 5 -

Page 7: 2006 CIC 電子報

AREA |pagetab|, ALIGN=14, DATA, READONLY

|__cwr_page_table|

; Area 1 : 0x0000_0000 - 0x0400_0000 -> AHB ROM

; domain 0, cacheable, not bufferable, no user write

counter SETA 0x0

WHILE counter < 0x040

PELINE SECTION, (counter:SHL:20), 0, C_BIT, 0, NO_USR_W

counter SETA counter + 1

WEND

; Area 2 : 0x040_0000 - 0x0800_0000 -> AHB RAM

; domain 0, cacheable, not bufferable, all_access

counter SETA 0x040

WHILE counter < 0x080

PELINE SECTION, (counter:SHL:20), 0, C_BIT, 0, ALL_ACCESS

counter SETA counter + 1

WEND

三、將DCT運算獨立包裹成一單獨模組

JPEG Encoding演算法包括下列步驟。

1. 將BMP的RGB格式轉換為YUV格式。

2. Discrete Cosine Transform (DCT)。

3. Quantization。

4. Huffman Encoding。

第一個步驟除外,整個JPEG Encoding的運算的重點是在DCT部分。這個運算是對一個

一維64元素向量(實際上是二維8x8個元素的矩陣)進行加乘運算。整個演算法如下。

for(y=0;y<2;y++) { //DCT_1D*2

for(x=0;x<8;x++) { //DCT_1D

if(y==0) { //column

x_t[0]=Block[ x]; x_t[1]=Block[8 +x];

x_t[2]=Block[16+x]; x_t[3]=Block[24+x];

x_t[4]=Block[32+x]; x_t[5]=Block[40+x];

x_t[6]=Block[48+x]; x_t[7]=Block[56+x];

}

else { //row

x_t[0]=Block[8*x ]; x_t[1]=Block[8*x+1];

x_t[2]=Block[8*x+2]; x_t[3]=Block[8*x+3];

- 6 -

Page 8: 2006 CIC 電子報

x_t[4]=Block[8*x+4]; x_t[5]=Block[8*x+5];

x_t[6]=Block[8*x+6]; x_t[7]=Block[8*x+7];

}

for(m=0;m<8;m++) {

y_t[m]=0;

for(n=0;n<8;n++)

y_t[m]=y_t[m]+DCT_coefficient[m*8+n]*x_t[n];

}

if(y==0) {

Block[ x]=(y_t[0]>>9); Block[8 +x]=(y_t[1]>>9);

Block[16+x]=(y_t[2]>>9); Block[24+x]=(y_t[3]>>9);

Block[32+x]=(y_t[4]>>9); Block[40+x]=(y_t[5]>>9);

Block[48+x]=(y_t[6]>>9); Block[56+x]=(y_t[7]>>9);

}

else {

Block[8*x ]=(y_t[0]>>9); Block[8*x+1]=(y_t[1]>>9);

Block[8*x+2]=(y_t[2]>>9); Block[8*x+3]=(y_t[3]>>9);

Block[8*x+4]=(y_t[4]>>9); Block[8*x+5]=(y_t[5]>>9);

Block[8*x+6]=(y_t[6]>>9); Block[8*x+7]=(y_t[7]>>9);

}

}//End DCT_1D

}//End DCT_2D

我們把圖一的架構加以修改,把DCT部分從程式抽取出來改為獨立的TLM模組。新架構

如圖二所示。在DCT模組對AHB介面的設計部分,由於一次DCT運算的資料是64 bytes,我

們可以考慮兩種方式:第一種是讓介面通道只對應0x8000000一個位址,並在DCT模組內部

設計一個計數器,在接收64筆資料之後開始運算;另一種方法是將DCT內部看成是一塊小型

記憶體,定址範圍為0x8000000~0x800003F,每次運算時以burst transition方式一次將資料傳

入DCT模組。我們為了配合原本已有的Verilog設計,因此採用第一種方式。

- 7 -

Page 9: 2006 CIC 電子報

圖二 - 含獨立DCT模組的ARM926EJS平台

基本上SystemC可說是一個C++的型別庫,所以SystemC模組的宣告類似於C++中的型別

宣告,同樣具有private/public變數與成員函式,也必須設定建構子及解構子。但由於描述硬

體特殊需求,模組的宣告格式不同於一般C++型別,必須包括這個模組對外傳遞資料的通

道,以及成員函式執行的條件,也就是激勵訊號(sensitive signal)[2]。在成員函式中有些

是透過激勵訊號才會被啟動,這一類型的函式被稱做程序(Process)。程序之間只能透過內

部變數傳遞資料,但不可以互相呼叫。在SystemC中模組的宣告有兩種語法

SC_MODULE(M) class M: public sc_module

{ {

M(sc_module_name){} 以及 M(sc_module_name){}

… …

}; };

我們採取前種宣告方式。DCT模組的宣告如下:

#include "systemc.h"

#include "AMBA/AMBA.h"

#include "cwrAnalysisData.h"

#define DMA_BASE 0x04000000

using namespace AMBA;

SC_MODULE(DCT_AHB_TLM) { // DCT_AHB_TLM 為模組名稱

- 8 -

Page 10: 2006 CIC 電子報

AMBA::AHBTarget_inoutslave_port<1, 32> p_AHB;

// CoWare設計的一種AHB連接埠

// 當建構子非使用SC_CTOR巨集格式,但建構子內有宣告程序時

//,必須包括下列宣告。

SC_HAS_PROCESS(DCT_AHB_TLM);

//建構子

DCT_AHB_TLM(sc_module_name name_) :

// 模組實體(物件)的名稱以參數方式傳入

sc_module(name_), p_AHB("p_AHB"), i(0), j(0){ // 各項變數的起始值

//函式receiveWriteData () 會因為 p_AHB埠

//傳來ReceiveWriteDataTrf訊號而被啟動

SC_METHOD(receiveWriteData);

sensitive << p_AHB.getReceiveWriteDataTrfEventFinder();

dont_initialize();

//確保receiveWriteData()在啟始設定(initialization)時不會被執行

SC_METHOD(sendReadData);

sensitive << p_AHB.getSendReadDataTrfEventFinder();

dont_initialize();

SC_METHOD(sendEoT);

sensitive << p_AHB.getSendEotTrfEventFinder();

dont_initialize();

}

// 解構子

~DCT_AHB_TLM() {} //~DCT_AHB_TLM()

// 成員函式

void receiveWriteData();

void sendReadData();

void sendEoT();

void computation();

// 內部變數

private:

int i,j;

unsigned int Block[64];

unsigned int x_t[8];

unsigned int y_t[8];

};

DCT_AHB_TLM的成員函式定義如下:函式receiveWriteData()每被trigger一次就接收一

筆資料,函式的末尾有個計數器使本函式第64次接收資料後隨即執行computation()做DCT運

算;函式sendReadData()每被trigger一次就送出一筆DCT係數,送出64筆係數後,計數器會重

- 9 -

Page 11: 2006 CIC 電子報

置。函式sendEoT()則是配合上述兩函式,在資料傳送結束後呼叫CoWare AMBA Library 內

建end-of-transmission 函式,以完成一次transmission protocol。相關的CoWare AMBA Library

函式介紹與使用說明都記錄在[3]。

#include <iomanip.h>

#include "DCT_AHB_TLM.h"

void DCT_AHB_TLM::receiveWriteData() {

p_AHB.getWriteDataTrf();

unsigned int address = p_AHB.WriteDataTrf->getAddrTrf()->getAddress();

unsigned int data = p_AHB.WriteDataTrf->getWriteData();

Block[j+8*i] = data; // cloumn data in at first

i++;

if (i==8) {i=0; j++;}

if (j==8) {

j=0;

computation();

}

}

void DCT_AHB_TLM::sendReadData() {

p_AHB.getReadDataTrf();

unsigned int address = p_AHB.ReadDataTrf->getAddrTrf()->getAddress();

unsigned int data;

data = Block[8*j+i];

i++;

if (i==8) {i=0;j++;}

p_AHB.ReadDataTrf->setReadData(data);

p_AHB.sendReadDataTrf();

if (j==8) j=0;

}

void DCT_AHB_TLM::sendEoT () {

p_AHB.sendEotTrf();

}

void DCT_AHB_TLM::computation() {

int m,n,x,y;

- 10 -

Page 12: 2006 CIC 電子報

short DCT_coefficient[64] =

{ 181, 181, 181, 181, 181, 181, 181, 181,

251, 213, 142, 50,-50,-142,-213,-251,

237, 98,-98,-237,-237,-98, 98, 237,

213,-50,-251,-142, 142, 251, 50,-213,

181,-181,-181, 181, 181,-181,-181, 181,

142,-251, 50, 213,-213,-50, 251,-142,

98,-237, 237,-98,-98, 237,-237, 98,

50,-142, 213,-251, 251,-213, 142,-50 };

for(y=0;y<2;y++) //DCT_1D*2

{

for(x=0;x<8;x++) //DCT_1D

{

if(y==0) {

x_t[0]=Block[ x]; x_t[1]=Block[8 +x];

x_t[2]=Block[16+x]; x_t[3]=Block[24+x];

x_t[4]=Block[32+x]; x_t[5]=Block[40+x];

x_t[6]=Block[48+x]; x_t[7]=Block[56+x];

}

else {

x_t[0]=Block[8*x ]; x_t[1]=Block[8*x+1];

x_t[2]=Block[8*x+2]; x_t[3]=Block[8*x+3];

x_t[4]=Block[8*x+4]; x_t[5]=Block[8*x+5];

x_t[6]=Block[8*x+6]; x_t[7]=Block[8*x+7];

}

for (m=0;m<8;m++) {

y_t[m]=0;

for(n=0;n<8;n++) {

y_t[m]=y_t[m]+DCT_coefficient[m*8+n]*x_t[n];

}

}

if(y==0) {

Block[ x]=(y_t[0]>>9); Block[8 +x]=(y_t[1]>>9);

Block[16+x]=(y_t[2]>>9); Block[24+x]=(y_t[3]>>9);

Block[32+x]=(y_t[4]>>9); Block[40+x]=(y_t[5]>>9);

Block[48+x]=(y_t[6]>>9); Block[56+x]=(y_t[7]>>9);

}

else {

Block[8*x ]=(y_t[0]>>9); Block[8*x+1]=(y_t[1]>>9);

- 11 -

Page 13: 2006 CIC 電子報

Block[8*x+2]=(y_t[2]>>9); Block[8*x+3]=(y_t[3]>>9);

Block[8*x+4]=(y_t[4]>>9); Block[8*x+5]=(y_t[5]>>9);

Block[8*x+6]=(y_t[6]>>9); Block[8*x+7]=(y_t[7]>>9);

}

}

}

}

主程式部分,由於DCT運算部分已獨立成硬體模組,因此原本DCT運算程式碼的位置則

改為在DCT模組間傳送及接收資料。

#define DCT_Addr (*((volatile unsigned int *)0x08000000))

//Send Data to DCT

for(y=0;y<8;y++)

for(x=0;x<8;x++)

DCT_Addr = Block[y+8*x];

//Read Data from DCT

for(y=0;y<8;y++)

for(x=0;x<8;x++)

Block[8*y+x] = (short) DCT_Addr;

將SystemC程式碼包裝製作成Platform Architect模組的步驟,請參照[4]的說明。

四、以分析函式收集系統效能資料

對平台效能的分析可以從軟體及硬體兩個方面來觀察。啟動平台的分析功能的方式在[5]

之中有詳細的示範。我們啟動平台之後可以一覽所有的效能分析函式如圖三,其中由於APB

僅供開發時除錯用,而DTCM及ITCM實際上並未使用因此不列入。隨著平台設計的複雜

度,各種分析項目就會顯出其重要性。以本報告中的平台而言,我們只觀察三個項目,包括

Function Profiling、Function Trace及i_AHB Bus Utilization。

- 12 -

Page 14: 2006 CIC 電子報

圖三 ARM926EJS 平台效能的分析函式

我們首先要分析演算法在效能上的瓶頸部分。圖四為JPEG Encoding程式Function

Profiling的部分結果。上表為通用平台,而下表為使用DCT硬體模組的平台。我們把程式的

主要運算分成四個子函式:BMP2YUV()(只要讀入圖片資料為TIF格式,這個運算就沒有必

要)、DCT_2D()、Quantize()及HuffmanEncode()。在通用平台上執行純軟體的演算法之後,

很顯然我們可以判斷出DCT_2D()是系統瓶頸,在HW/SW Partition階段就可以考慮將DCT運

算獨立成硬體模組,而下表可以反映出效果。請注意目前我們設計的DCT模組,以及原本平

台上使用的記憶體模組,都只是Untimed Model,所以並不能反映真正的運算時間。如果此

部分有加入模組內,會反映在DCT_2D()的運算時間上。

圖四(上表)通用平台及(下表)使用DCT硬體模組平台的Function Profiling

合併兩個不同效能分析視窗,可以幫助我們更容易發覺系統效能異常之處及其原因。圖

五是Function Trace(上圖)及i_AHB Bus Utilization(下圖)的合併視窗。在Bus Utilization

的視窗中,綠色部分為ARM處理器的IAHB埠佔用匯流排資源的比例,而藍色部分是DAHB

埠佔用資源的比例。從這個資訊我們可以知道:

- 13 -

Page 15: 2006 CIC 電子報

1. 目前讓IAHB及DAHB共用一條匯流排的設計在效能上是允許的。

2. 對照Function Trace便可以瞭解,在模擬剛開始IAHB埠異常的資源佔用,是因為我

們把圖片資料寫在程式碼內,因此匯流排資源花費在載入程式上。

圖五是Function Trace(上圖)及i_AHB Bus Utilization(下圖)的合併視窗

七、結論

根據以上的步驟,我們已經有能力初步建立一個Platform Architect上的硬體模組。接下

來我們仍有兩項工作。首先是將Untimed Model進一步修改為 Cycle Accurate Model。在這項

工作中,模組的運作方式必須要從Event Driven改為Clock Driven。當第一項工作完成後,我

們就可以把Untimed Model、Cycle Accurate Model及Verilog三種程式碼包裹(encapsulate)成

一個單一介面的模組,如此未來的使用者可以依其需要,建立不同層級的虛擬平台以供效能

分析使用。

八、參考文獻

[1] Ron Green, George Larsen, “Exercise 14 – Building a Platform with the ARM926,” CIC 訓練課程 (A508) CoWare Platform Architect Training Manual, pp. L121-L133, Jan. 2005.

[2] IEEE, IEEE 1666 Standard SystemC Language Reference Manual, December 2005.

[3] CoWare,“AMBA Bus Library,” CoWare Platform Architect On-line Documents, ver. 2006.2.2, July. 2006.

[4] Ron Green, George Larsen, “Exercise 11 – Building a Library,” CIC 訓練課程 (A508) CoWare Platform Architect Training Manual, pp. L103-L108, July 2006.

[5] Ron Green, George Larsen, “Exercise 23 – Platform Analysis,” CIC 訓練課程 (A508) CoWare Platform Architect Training Manual, pp. L191-L197, July 2006.

- 14 -

Page 16: 2006 CIC 電子報

各組訊息

晶片組訊息

高頻量測服務-量測形式與佈局規則

為使晶片設計不因pad layout導致面積浪費,未來高頻量測實驗室(預計2006/7/1起)將開

始提供pitch均為100µm的DC與RF探針,以預期縮小整個晶片面積。

目前高頻量測實驗室提供DC pitch均為150µm的3pin (PGP) / 6pin (PGPPGP)之探針,以及

RF pitch均為150µm的single-ended (GSG)與differential(GSGSG)探針,而未來則希望全部改為

pitch 100µm的探針,並增加DC 9pin(未定義ground port,意即任意配置)探針以符合設計需求。因此,在探針替換以及下線時程間會有過渡時期,所以在此說明,高頻量測實驗室將在

明年(2007/7/1)起,停止使用pitch 150µm的探針,請設計者自行評估時間來更改晶片設計佈局。下表列出實驗室探針之規劃,”●”表示目前開放之探針形式,”○”表示未來將開放

之探針。

Pitch

100µm 150µm

DC

3pin (PGP) ○ ●

6pin (PGPPGP) ○ ●

9pin (undefined ground) ○

RFSingle-ended (GSG) ○ ●

Differential (GSGSG) ○ ●

因應探針替換,底下針對量測環境量測形式與pad layout規則作更新說明:

1. On Wafer Measurement

● 單一Pad可允許之最小尺寸為50µm×50µm。 ● RF Single-ended探針配置為GSG,Differential為GSGSG。探針方向儘可能為東西

向。

● DC 探針配置為3pin(PGP),6pin(PGPPGP),9pin(undefined ground)。探針方向儘可

- 15 -

Page 17: 2006 CIC 電子報

能為南北向。

● 相鄰不同向Pad最近距離需大於150µm,以避免探針撞擊。

注意:若探針pitch不符合規則,需自行攜帶探針,填寫切結書,否則不予量測。

如果設計者晶片量測時所使用到之探針為3pin,例如RF Single-ended (GSG)或是DC 3pin

(PGP),在此建議將Ground Pad如下圖所示佈局(50µm×100µm),如此在探針替換的過渡時期將不會受到探針pitch差異的影響,但注意此佈局只適用於3pin探針,大於3pin者(例如RF

Differential)不適用。

2. PCB Measurement

● 實驗室目前S參數在PCB提供3.5mm calibration kit作為量測校準,因此限制頻率到

40GHz的量測。

● Port1、Port2 Adaptor皆為3.5mm,可自備3.5mm test-fixture或是自行焊接SMA。

3. On wafer Measurement with PCB Bias Network

● 量測前須將鎊線與DC Bias mount 至PCB上,並由南北方外接DC,相關規定如下圖

所示,藍色區域下,不允許鎊線穿過,以防止RF探針撞擊。

注意:若不符相關規則將無法量測

- 16 -

Page 18: 2006 CIC 電子報

- 17 -