2013年1月9日 星期三

心得


藉由這學期VLSI電腦輔助課程讓我對VLSI設計概論/實論有了更進一步的認識與了解,並且在一步一步的操作過程中,使我漸漸地對這堂課產生了興趣。在還沒做這一份報告之前,我對於VLSI設計概論/實論可以說是相當的陌生,甚至連聽都沒聽過。
 

不過,透過這學期VLSI電腦輔助課程讓我學習到很多額外的知識,原來要設計一顆IC不是那麼簡單的一件事情,首先我們必須先用cadence EDA 工具去模擬出客戶對這顆IC的需求,並且再對這顆IC做實際的測試,如此一來才可以大量的生產,而我們所學習的就是cadence EDA 工具的模擬。
 

除了在專業知識上讓我獲益良多之外,藉由這次的修課也讓我學習到一些做人處事的道理,比如說,當我們在執行模擬程式時,通常不可能一次就會成功,可能需要重試很多次後才會成功,此時就是在考驗著我們的耐心以及解決問題的能力,而最有效解決問題的方法就是多去找別人討論,只要是在這方面較傑出的同學都值得我們去學習。
 
       

這學期修習VLSI電腦輔助課程對我來說真的是一舉兩得,一方面是在專業知識上讓我得到了很多額外的知識,另一方面是在做人處事上讓我學習到了很多不一樣的小技巧,此次的課程可說是獲益良多。

CMOS Ring Oscillator 設計與模擬

1. 創建my090元件庫inv元件(圖1)
(圖1)
 
 
 
 
2.  設計inv元件的schematic電路圖(圖2)
(圖2)
 
3. 設繪inv元件的symbol符號圖(3)
(3)
 
 
4.  設計Ring_Osc_05元件的schematic電路圖(圖4)
(圖4)
 
 
5.  設繪Ring_Osc_05元件的symbol符號圖(5)
(5)
 
 

6.  設計Ring_Osc_05_sim模擬用元件的schematic電路圖(6)
(6)
 
 
7.  設定各模擬參數與儲存模擬輸出腳位(7)
(7)
 
8. 模擬後,獲得結果(8)
(8)
 

9.   zoom in, 1.0ns~8.0ns局部波形圖(9)
(9)
 
心得:CMOS Ring Oscillator 設計與模擬可以說是我做到目前為止最難的一個,在這個設計上我失敗7.8次以上,最後經過同學的指點,終於讓我完成了這不可能的任務!!!!

 
 
 

 
 
 
 
 
 
 
 


MOS IV特性


1. 啟動 cadence EDA 工具

2. 創建一元件庫名稱為ee115c,並icfb啟動的視窗,選擇 [Tool] 功能表,啟動[Library Manager...]功能(圖1)
 
(圖1)
 
 


3.  Library Manager 啟動的視窗,在Library群組中,選擇ee115c元件庫後,再選擇 [File] 功能表,啟動[New][Cell View...]功能,並於出現的視窗Cell Name欄位輸入MOS_IV(圖2)
(圖2)
 
 
 
 
 
4.  設計MOS_IV元件的schematic電路圖(3)
(3)
 
 
 
 
 
5.  設定各模擬參數,並選擇模擬輸出腳位所在(圖4)
(圖4)
 
 
 
 
 
6.  模擬後,獲得結果(圖5)
(圖5)
 

心得:第一次求出模擬過後的結果,雖然在設計的過程中失敗了2次,不過最後還是有跑出模擬圖,完美的結果!!!
 
 
 
 
 
 
 
 
 
 
 

創建自訂元件庫


1. 開啟 [終端機] 後,輸入指令如下:

   >>cd proj001 註解:進入 /home/h371/proj001 工作目錄

   >> icfb & 註解:啟動 cadence EDA 工具(1)
(1)
 
 

2. icfb啟動後的視窗,選擇 [File] 功能表,啟動 [New] [Library...]功能,在出現的視窗中,Name欄位輸入my090,在Technology File選項,選擇 Attach to an existing techfile(2) ,在隨後出現的視窗中,Technology Library選項,選擇gpdk090,再選OK後退出(3)
 
(圖2)
(3)
 
 
心得:創建自訂元件庫是IC設計的第一步驟!!!

反相器

1. 設計反相器元件的schematic電路圖(圖1)
(圖1)
 

2.    設繪反相器元件的symbol符號圖(圖2)
(圖2)
 
心得:反相器模擬成功!!!

緩衝器

1. 設計緩衝器元件的schematic電路圖(圖1)

(圖1)
 
2.    設繪緩衝器元件的symbol符號圖(圖2)
 
(圖2)
 
心得:好的開始是成功的一半!!!!
 


   

2011年12月5日 星期一

2011/12/5 8-bit加法器


程式碼
module top;
reg [7:0] A, B;
reg Cin;
wire[7:0] Sum;
adder8 M8(Cout, Sum, A, B, Cin);
initial
begin
A=8'd16;
B=8'd15;
Cin=1'd0;
end
endmodule
module adder1(Cout, Sum, A, B, Cin);
output Cout,Sum;
input A,B,Cin;
and I1 (AandB, A, B);
xor I2 (AxorB, A, B);
and I3 (And1, AxorB, Cin);
or I4 (Cout, AandB, And1);
xor I5 (Sum, AxorB, Cin);
endmodule
module adder2(Cout, Sum, A, B, Cin);
output Cout;
output [1:0] Sum;
input [1:0] A, B;
input Cin;
adder1 I1 (C0, Sum[0], A[0], B[0], Cin);
adder1 I2 (Cout, Sum[1], A[1], B[1], C0);
endmodule
module adder4(Cout, Sum, A, B, Cin);
output Cout;
output [3:0] Sum;
input [3:0] A, B;
input Cin;
adder2 I1 (C0, Sum[1:0], A[1:0], B[1:0], Cin);
adder2 I2 (Cout, Sum[3:2], A[3:2], B[3:2], C0);
endmodule
module adder8(Cout, Sum, A, B, Cin);
output Cout;
output [7:0] Sum;
input [7:0] A, B;
input Cin;
adder4 I1 (C0, Sum[3:0], A[3:0], B[3:0], Cin);
adder4 I2 (Cout, Sum[7:4], A[7:4], B[7:4], C0);
endmodule
module system_clock(clk);
parameter PERIOD=100;
output clk;
reg clk;
initial
clk=0;
always
begin
#(PERIOD/2)clk=~clk;
end
always@(posedge clk)
if($time>1000)
$stop;
endmodule