综合工具-DesignCompiler学习教程
-
1、綜合與Design_Compiler(很好 很經(jīng)典).pdf
-
2、Design Compiler入門
-
3、Design Compiler總結(jié)
-
4、Design Compiler進行數(shù)字綜合
-
5、邏輯綜合重點解析(Design Compiler篇)
-
6.1、DesignCompiler學(xué)習(xí)(1)- 邏輯綜合簡介
-
6.2、DesignCompiler學(xué)習(xí)(2)- Tcl基礎(chǔ)語法
-
6.3、DesignCompiler學(xué)習(xí)(3)- 基本操作流程
-
6.4、DesignCompiler學(xué)習(xí)(4)- 綜合庫、設(shè)計對象和DesignWare庫
-
6.5、DesignCompiler學(xué)習(xí)(5)- 基本的時序路徑約束
-
7、Design Compiler 13講,還有一個基本上很類似的專欄:https://www.cnblogs.com/xh13dream/tag/DC/,也可以參考。
Design Compiler 13講中的部分內(nèi)容:
Tcl與Design Compiler (二)——DC綜合與Tcl語法結(jié)構(gòu)概述
1、邏輯綜合的概述
- DC工作流程分為三步
2、DC的三種啟動方式
-
GUI
-
dc_shell
-
Batch mode
3、DC-Tcl語言的基本結(jié)構(gòu)
Tcl與Design Compiler (三)——DC綜合的流程
1、高層次設(shè)計的流程圖
2、DC在設(shè)計流程中的位置
3、使用DC進行基本的邏輯綜合的流程圖與相應(yīng)的命令
①準備設(shè)計文件
②指定庫文件
③讀入設(shè)計
④定義設(shè)計環(huán)境
⑤設(shè)置設(shè)計約束
⑥選擇編譯策略
⑦編譯
⑧分析及解決設(shè)計中存在的問題
⑨存儲設(shè)計數(shù)據(jù)
Tcl與Design Compiler (四)——DC啟動環(huán)境的設(shè)置
(1)啟動環(huán)境配置簡述
(2).synopsys_dc.setup配置文件的書寫
(3).synopsys_dc.setup的講解
Tcl與Design Compiler (五)——綜合庫(時序庫)和DC的設(shè)計對象
(1)標準單元庫
-
①概述
一個ASIC綜合庫包括如下信息:
·一系列單元(包括單元的引腳)。
·每個單元的面積(在深亞微米中,一般用平方微米表示,在亞微米工藝下,一般用門來稱呼,至于具體的單位,可以咨詢半導(dǎo)體制造商)。
·每個輸出引腳的邏輯功能。
·每個輸入到輸出的傳遞延時,輸出到輸出的傳遞延時;inout到輸出的傳遞延時。
-
②內(nèi)容與結(jié)構(gòu)
Synopsys的工藝庫是一個.lib文件,經(jīng)過LC編譯后,產(chǎn)生.db文件。工藝庫文件主要包括如下信息:
·單元(cell)(的信息):(主要有)功能、時間(包括時序器件的約束,如建立和保持)、面積(面積的單位不在里面定義,可按照規(guī)律理解,一般詢問半導(dǎo)體廠商)、功耗、測試等。
·連線負載模型(wire load models):電阻、電容、面積。
·工作環(huán)境/條件(Operating conditions):制程(process)(電壓和溫度的比例因數(shù)k,表示不同的環(huán)境之間,各參數(shù)縮放的比例)
·設(shè)計規(guī)則約束(Design ):最大最小電容、最大最小轉(zhuǎn)換時間、最大最小扇出。
工藝庫的結(jié)構(gòu)如下所示:
(2)DC的設(shè)計對象
-
在了解了綜合庫之后,下面介紹一下DC的設(shè)計對象,雖然這個設(shè)計對象相對于綜合庫沒有那么重要,但是還是要了解一下的。
對于一個verilog代碼模塊,我們知道這是一個模塊的名字是什么,這個模塊的功能是什么,這個模塊有哪些端口等等信息。但是對于DC來說,它不想我們那么理解,給它一個verilog模塊,它把這個模塊的內(nèi)容當(dāng)做設(shè)計對象(簡稱對象)來看。DC支持的對象和解釋如下所示:
DC支持8中設(shè)計對象:
Design :具有某種或多種邏輯功能的電路描述;
Cell :設(shè)計的 instance;
Reference :cell 或 instance 在庫中定義的名字;
Port :design 的輸入、輸出;
Pin :design 中 cell 的輸入、輸出;
Net :ports 和 pins 之間或 pins 之間的信號名;
Clock :被定義為時鐘源的 pin 或 port;
Library :cell 的集合,如: starget_library,link_library;
(3)Design Ware 庫
- DesignWare是Synopsys提供的知識產(chǎn)權(quán)(Intellectual Property,簡稱IP)庫。IP庫分成可綜合IP庫(synthesizable IP,SIP) ,驗證IP庫(Verification IP,VIP)和生產(chǎn)廠家?guī)?foundry 1ibraries)。IP庫中包含了各種不同類型的器件。這些器件可以用來設(shè)計和驗證ASIC, SoC和FPGA。
Tcl與Design Compiler (六)——基本的時序路徑約束
1、時序路徑與關(guān)鍵路徑
2、常見的時序路徑約束
- 建立時間、保存時間和亞穩(wěn)態(tài)
- 時鐘的約束(寄存器-寄存器之間的路徑約束)
- 輸入延時的約束
- 輸出延時的約束
- 組合邏輯的約束
Tcl與Design Compiler (七)——環(huán)境、設(shè)計規(guī)則和面積約束
1、工作環(huán)境屬性約束
- 設(shè)置環(huán)境條件(set_operating_conditions)
- 設(shè)置線負載模型(set_wire_load_model)
- 設(shè)置驅(qū)動強度(set_drive與set_driving_cell)
- 設(shè)置電容負載(set_load與set_load load of)
2、設(shè)置設(shè)計規(guī)則約束
-
最大電容(max_capacitance)
-
最大轉(zhuǎn)換時間(max_transition)
-
最大扇出(max_fanout)
3、面積約束
Tcl與Design Compiler (八)——DC的邏輯綜合與優(yōu)化
1、DC的邏輯綜合及優(yōu)化過程
主要包括:
- 第一階段的結(jié)構(gòu)級的優(yōu)化(Architectural-Level Optimization)
- 第二階段的邏輯級優(yōu)化(Logic-Level Optimization)
- 最后階段的門級優(yōu)化(Gate-Level Optimization)
2、時序優(yōu)化及方法
-
(1)當(dāng)違規(guī)得比較嚴重時,也就是時序的違規(guī)(timing violation)在時鐘周期的25%以上時,就需要重新修改RTL代碼了。
-
(2)時序違規(guī)在25%以下,有下面的時序優(yōu)化方法:
①使用compile_ultra命令(在拓撲模式下運行)
compile_ultra命令包含了以時間為中心的優(yōu)化算法,在編譯過程中使用的算法有:
- A 以時間為驅(qū)動的高級優(yōu)化(Timing driven high-level optimization);
- B 為算術(shù)運算選擇適當(dāng)?shù)暮陠卧Y(jié)構(gòu);
- C 從DesignWare庫中選擇最好的數(shù)據(jù)通路實現(xiàn)電路;
- D 映射寬扇入(Wide-fanin)門以減少邏輯級數(shù);
- E 積極地使用邏輯復(fù)制進行負載隔離;
- F 在關(guān)鍵路徑自動取消層次劃分(Auto-ungrouping of hierarchies)。
- set_dont_retime
- set_optimize_registers -design Pipeline
②使用compile -scan -inc 命令
③使用自定義路徑組合、關(guān)鍵范圍
Design Compiler中,常用report_timing命令來報告設(shè)計的時序是否滿足目標。執(zhí)行report_timing命令時,DC做4個步驟:
- 把設(shè)計分解成單獨的時間組;
- 每條路徑計算兩次延遲,一次起點為上升沿,另一次起點為下降沿;
- 在每個路徑組里找出關(guān)鍵路徑(critical path),即延遲最大的路徑;
- 顯示每個時間組的時間報告。
DC的默認行為是對關(guān)鍵路徑作優(yōu)化。當(dāng)它不能為關(guān)鍵路徑找到一個更好的優(yōu)化解決方案時,綜合過程就停止。DC不會對**次關(guān)鍵路徑(Sub-critical paths)**作進一步的優(yōu)化。因此,如果關(guān)鍵路徑不能滿足時序的要求,違反時間的約束,次關(guān)鍵路徑也不會被優(yōu)化,它們僅僅被映射到工藝庫。
使用自定義路徑組合后,綜合時,工具只對一個路徑組的最差(延時最長)的路徑作獨立的優(yōu)化,但并不阻礙另外自定義路徑組的路徑優(yōu)化。產(chǎn)生自定義路徑組也可以幫助綜合器在做時序分析時采用各自擊破(divide-and-conquer)的策略,因為report_timing命令分別報告每個時序路徑組的時序路徑。
自定義路徑組: 用戶自定義路徑組后,如果設(shè)計的總性能有改善,DC允許以犧牲一個路徑組的路徑時序(時序變差)為代價,而使另一個路徑組的路徑時序有改善。在設(shè)計中加入一個路徑組可能會使時序最差的路徑時序變得更差。
關(guān)鍵范圍: 關(guān)鍵范圍不允許因為改進次關(guān)鍵路徑的時序而使同一個路徑組的關(guān)鍵路徑時序變得更差。如果設(shè)計中有多個路徑組,我們只對其中的一個路徑組設(shè)置了關(guān)鍵范圍,而不是對整個設(shè)計中的所有路徑組都設(shè)置了關(guān)鍵范圍,DC只會并行地對幾條路徑優(yōu)化,運行時間不會增加很多。
④重新劃分模塊(Repartition Block)
Tcl與Design Compiler (九)——綜合后的形式驗證
1、準備好RTL文件、綜合優(yōu)化后的文件以及帶有優(yōu)化映射信息的SVF文件:
2、書寫相應(yīng)地流程文件:
3、執(zhí)行我們寫的腳本
得到結(jié)果如下,說明驗證通過了:
Tcl與Design Compiler (十二)——綜合后處理
1、概述
-
.sdc文件:標準延時約束文件
-
Scan_def.def文件:DFT、形式驗證可能用到
-
.sdf、.v文件:標準延時格式和網(wǎng)表格式文件,用于后仿真
2、綜合網(wǎng)表處理與生成
-
(1)綜合網(wǎng)表的處理:
-
(2)相關(guān)文件的生成
3、時序檢查與報告的生成
-
(1)時序報告的查看:
第一部分是路徑信息部分
第二部分是路徑延遲部分
第三部分是路徑要求部分
第四部分是時間總結(jié)部分
-
(2)timing_report的選項與debug
-
(3)設(shè)計違規(guī)檢查
-
(4)查看分組優(yōu)化結(jié)果
2、綜合網(wǎng)表處理與生成
-
(1)綜合網(wǎng)表的處理:
-
(2)相關(guān)文件的生成
3、時序檢查與報告的生成
-
(1)時序報告的查看:
第一部分是路徑信息部分
第二部分是路徑延遲部分
第三部分是路徑要求部分
第四部分是時間總結(jié)部分
-
(2)timing_report的選項與debug
-
(3)設(shè)計違規(guī)檢查
-
(4)查看分組優(yōu)化結(jié)果
總結(jié)
以上是生活随笔為你收集整理的综合工具-DesignCompiler学习教程的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 论文阅读:Graph Contrasti
- 下一篇: JS、JSP、JQuery区别