Synopsys Design Compiler/Synthesis 之安裝
再執行此部份流程。
Cell Library 標準元件庫是 Cell Base 流程的基礎,也是編譯 RTL 碼不可或缺的重要元素,所謂的標準元件庫是指由 AND、OR、NOT、XOR、FlipFlops .. 等構成的元件庫,這些元件可以用來組合成「所有」的數位電路。
由於 Cell Library 為各 EDA 大廠的智慧財產權,沒有申請前無法下載、使用商業版的 Cell Library,只能使用 CIC 所提供的 IC 競賽元件庫,底下介紹流程。
下載
CBDK_IC_Contest_v2.1.tar
解壓縮
請解壓縮至 /opt/PROCESS 目錄下
tar xfva CBDK_IC_Contest_v2.1.tar -C /opt/PROCESS
此時會出現底下目錄
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC
裡面有兩個子目錄,分別是 db 及 lib 目錄。
設定
請在 DC 的選單中執行:
File -> Setup
此時會出現 Setup 視窗,請在此視窗設定三個參數,分別如下:
Link Library
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC/db/fast.db
Target Library
/opt/PROCESS/CBDK_IC_Contest_v2.1/SynopsysDC/db/fast.db
Symbol Library
/opt/EDA/synthesis/cur/libraries/syn/class.sdb
並且將其它元件庫刪掉。
編譯:
如果一切都沒問題的話,我們可以執行編譯的流程,在編譯前請選 Logical Hierarchy 視窗中的 half_adder,並看其 Schematic (圖示在上方),我們會發現電路目前是一個十字符號。接著請執行選單:
Design -> Compile Design
此時會出現一個視窗作微調,在此我們不作任何微調,直接點選 OK 按鍵。點選 OK,Design Compiler 會自動進行電路編譯,並作最佳化,作完之後再點選 Schematic 即可看到編譯完之電路,理論上應該是最精簡的電路。編譯完之電路請選
File -> Save As 將編譯完之後的電路存為 ha_compile.v,其內容如下:
/////////////////////////////////////////////////////////////
// Created by: Synopsys DC Expert(TM) in wire load mode
// Version : K-2015.06-SP5
// Date : Tue May 17 11:08:48 2016
/////////////////////////////////////////////////////////////
module half_adder ( x, y, Sum, Cout );
input x, y;
output Sum, Cout;
XOR2X1 U3 ( .A(y), .B(x), .Y(Sum) );
AND2X1 U4 ( .A(y), .B(x), .Y(Cout) );
endmodule
我們可以很明顯的看出此段程式是由 Design Complier 所編譯出來,它使用到的 AND 及 XOR 閘的名稱分別是 AND2X1 以及 XOR2X1,這不是基本 Verilog 閘,所以如果我們使用 cver 來編譯這檔案,會出現底下錯誤:
cver ha_compile.v
GPLCVER_2.12a of 05/16/07 (Linux-elf).
Copyright (c) 1991-2007 Pragmatic C Software Corp.
All Rights reserved. Licensed under the GNU General Public License (GPL).
See the 'COPYING' file for details. NO WARRANTY provided.
Today is Tue May 17 11:32:39 2016.
Compiling source file "ha_compile.v"
Unresolved modules or udps:
XOR2X1
AND2X1
2 modules or udps unresolved after library processing - cannot continue.
Unable to begin simulation.
End of GPLCVER_2.12a at Tue May 17 11:32:39 2016 (elapsed 0.0 seconds).
這兩個錯誤的意思是 XOR2X1 及 AND2X1 是找不到的電路模組,要解決這個問題,我們還是要來看 CIC 所提供的元件庫,在
/opt/PROCESS/CBDK_IC_Contest_v2.1/Verilog/tsmc13.v 中可以看到其中有 AND2X1 及 XOR2X1 之定義。因此我們可以將此檔複製過來我們跑模擬的目錄,再執行:
cver ha_compile.v tsmc13.v
此時應該不會有任何錯誤。
最後我們再加上 testfixture 檔,看看能不能跑波型出來:
cver ha_compile.v tsmc13.v test_ha.v
此時一樣會生出新的 testha.dmp,並且可以使用 gtkwave 觀察出波形,我們可以看到這邊的波形是有輸入 -> 輸出 延遲的。
到這邊為止,我們已經完成 Design Compiler 編譯 RTL 碼至 Gate Level 碼的流程,並又使用 cver 來重新驗證所跑出來的 Gate Level 碼是否能正確模擬出波形來。
沒有留言:
張貼留言