綜合分為三個部分:Synthesis= Translate + Mapping + Optimization。
1、 Translate 是將 HDL轉化為GTECH庫元件組成的邏輯電路,這步通過read_verilog進行(verilog代碼),verilog代碼被讀入后,將會被自動translate。GTECH是獨立於工藝庫的通用元件庫。這個時候可以用write -output ./unmapped/design.db輸出unmapped的二進制文件。
2、 Mapping 是將GTECH映射到某一指定的工藝庫,此網表包含了工藝參數。
3、 Optimization 是將網表按設計者的約束進行優化。
后兩步通過加約束后使用compile命令完成。完成optimization之后可以通過
write -format verilog -hierarchy -output./p_syn_sim/design.v
寫成verilog格式的網表,這是map后的結果。如果輸出的是頂層模塊,所有模塊的module都會輸出到同一個文件中。頂層模塊一般在最后。
1 what is synthesis?
綜合是將一種思想轉化為一種可制造的設備,以實現一種預期的功能。
2 level of abstraction
3 synthesis in this workshop
4 library
Sysnopsys提供了一個例子,在下面的位置:
$synopsys/doc/syn/guidelines
首先,可以在.synopsys_dc.setup里面設置庫的位置和一些環境變量。里面包括所使用庫的位置,DC涉及到幾個庫文件:
1、 工藝庫(target_library):工藝庫是綜合后電路網表要最終映射到的庫,讀入的HDL代碼首先由synopsys自帶的GTECH庫轉換成Design Compiler內部交換的格式,然后經過映射到工藝庫和優化生成門級網表。工藝庫是由Foundary提供的,一般是.db的格式。這種格式是DC認識的一種內部文件格式,不能由文本方式打開。.db格式可以由文本格式的.lib轉化過來,他們包含的信息是一致的。
2、 鏈接庫(link_library):link_library設置模塊或者單元電路的引用,對於所有DC可能用到的庫,我們都需要在link_library中指定,其中也包括要用到的IP。此處還要將search_path加進來,這樣才能找到.db文件,否則只會搜索當前目錄。
3、 符號庫 (symbol_library):symbol_library是定義了單元電路顯示的Schematic的庫。用戶如果想啟動design_analyzer或design_vision來查看、分析電路時需要設置symbol_library。符號庫的后綴是.sdb,加入沒有設置,DC會用默認的符號庫取代。
4、 綜合庫(synthetic_library):在初始化DC的時候,不需要設置標准的DesignWare庫standard.sldb用於實現Verilog描述的運算符,對於擴展的DesignWare,需要在synthetic_library中設置,同時需要在link_library中設置相應的庫以使得在鏈接的時候DC可以搜索到相應運算符的實現。
5 the steps of synthesis
綜合策略:
Top-down 方式的層次化編譯策略有這樣三個步驟:
1. 讀入整個設計。
2. 處理多次引用的模塊;基於設計要求在頂層加約束條件以及定義屬性。
3. 編譯。
Bottom-up有下面七個步驟:
1. 獨立編譯子模塊,用估計的驅動和負載。用一個缺省的腳本文件來估計驅動和負載。
2. 將整個編譯好的設計讀入。
3. 對一個子模塊用characterize命令來獲得端口信息。
4. 用write_script來將這些傳遞過來的信息保存下來。
5. 清除內存,將前面得到傳遞信息的子模塊調入並且用保存下來的腳本文件重新編譯。為了這些描述信息能夠應用,需要將db格式的文件讀入。
6. 將這個新編譯的子模塊和其余的子模塊全部再次調入DC。
7. 選擇另外一個子模塊,重復3~7步,直到所有的子模塊都重新編譯過了。