首頁 > IT教程 > 正文

邏輯綜合重點解析(Design Compiler篇)

2019-12-12 14:33:02 來源:金橙教程網 作者:admin8 瀏覽:86次 「手機版」

綜合網

前言

本文摘錄自微信公眾號 “數字芯片實驗室”

歡迎關注

在這里插入圖片描述

1、邏輯綜合(Logic Synthesis)分為哪三個步驟?

在這里插入圖片描述

邏輯綜合的行為是將數字電路的寄存器傳輸級描述(RTL,Register Transfer Level)“綜合”成門級網表(Gate-Level Netlist)。Design Compiler將RTL和根據設計需求編寫的約束文件作為輸入綜合出門級網表,在性能、面積和功耗之間進行trade-offs。后端Place&Route工具(ICC、Innovus)將門級網表作為輸入生成GDSII文件用于芯片制造。

邏輯綜合 = 翻譯 + 優化+ 映射。其中,read_verilog將RTL翻譯成GTECH,compile進行綜合,也就是優化和映射成工藝相關的門級網表。

2、當你拿到一個ddc格式的文件,你是否能夠知道這是一個已經綜合過的設計?

False

綜合前和綜合后的設計都能夠保存為.ddc格式。一般保存在unmapped和mapped 文件夾下。

3、使用Design Compiler進行邏輯綜合出現下述log,請問gtech.db和standard.sldb包含哪些信息?

在這里插入圖片描述

gtech.db和standard.db是synopsys提供的默認庫,分別包含了GTECH邏輯單元和基本的DesignWare IP模塊。在使用read命令時,這些庫都被自動地加載。

4、Design Compiler綜合過程中,target_library是如何被使用的?

target_library使用在"compile"過程中,用來生成工藝相關的門級網表。Design Compiler盡量選擇面積最小的邏輯門去滿足設計功能和時序的要求。

如果不通過“set target_library *”指定目標工藝庫,默認值是your_library.db,同時工具會報出warning

5、Design Compiler 綜合過程中 “link”命令完成了什么功能?

link是Design Compiler ”resolve”設計中例化模塊的過程。Design Compiler通過變量“link_library”指定例化模塊庫的位置,和target_library一樣,默認為your_library.db。建議顯式地使用link命令,否則工具可能帶著“unresolved references”進行綜合,產生沒有意義的結果,同時浪費時間。

6、link_library = “ * $target_library”中的 "*"指的是什么 ?

DC memory 。Design Compiler 首先會在DC memory中尋找匹配的例化模塊。

7、Design Compiler 邏輯綜合中 search_path變量的作用是什么?

DC在search_path指定的目錄底下尋找設計代碼和庫文件。建議在search_path中使用相對路徑,增強腳本環境的可移植性

8、Design Compiler 邏輯綜合流程中,下述腳本的意義是?

在這里插入圖片描述

避免某些設計者只使用run 腳本綜合設計,不仔細查看log和reoport。基于錯誤的link或者check_design結果run完整個綜合流程會浪費大量不必要的時間。

9、將綜合前的設計保存為.ddc的格式文件有什么好處?

read命令將rtl(unmapped)翻譯成GTECH格式。對于一個較大的設計,rtl to ddc需要花費很長的時間。當我們需要對設計重新進行compile時,只要讀取保存的unmapped的設計(.ddc)就能節省很多時間。如果rtl已經被更新,還是要重新讀入rtl.

10、請問在Design Compiler綜合過程中,下述命令的作用是什么?

在這里插入圖片描述

Design Compiler 完成了ASIC設計流程中的rtl to netlist過程,后續需要有第三方工具完成netlist to GDSII的實現。而第三方工具對于netlist有字符語法上的限制,所以需要使用change_names 命令,才能讓第三方工具正確識別netlist。

11、下面哪個是關于target_library和link_library變量正確的表述?

a)所有在設計中例化的宏模塊都應該在target_library中設置

b) 在compile期間,DC從link_library中選擇最小的邏輯門去滿足時序要求

c) link_library用于resolve例化模塊,target_library用于在compile

d) link_library自動加載.ddc文件

C

a) 應該是 link_library

b) 應該是 target_library

d) 應該是 link

12、在設計中,port和pin有什么異同?

相同點:port和pin都是一個input/output;

不同點:port是當前設計的input/output;

pin是當前設計中例化模塊的input/output。

如果當前設計被另外的設計例化,則port會變成pin

13、在Design Compiler中如何正確地使用set_max_area約束命令?

如果是面積約束過于嚴格,或者直接設為0,Design Compiler將執行面積優化,直到無法優化為止。面積優化可能會增加run time,但是不會影響時序優化。 時序約束優先級總是高于面積約束。 如果run time是一個需要在乎的問題,請將面積約束設為實際設計要求的值。 如果不關心run time,可以將其設置0。

14、Design Compiler是如何劃分時序路徑進行時序分析的?

在這里插入圖片描述

Design Compiler將設計劃分為一個個timing path,每一條路徑都有一個startpoint(input port、觸發器的clock pin)和一個endpoint(output ports、觸發器的data pin)

Design Compiler會計算每一條路徑的延時,然后比較arrive time和require time來判斷這條路徑是否滿足時序要求。

15、Design Compiler如何在邏輯綜合的時候考慮到時鐘樹的影響?

在這里插入圖片描述

Design Compiler可以使用 set_clock_uncertainty命令來建模時鐘的skew + jitter + margin。如果不設置的話,默認值為0

16、Design Compiler如何在邏輯綜合階段考慮時鐘延遲的影響?

在這里插入圖片描述

時鐘的network latency是指時鐘輸入端口到觸發器的時鐘端延遲;

時鐘的source latency是指實際的時鐘源到時鐘輸入端口延遲。

在pre_layout階段,使用set_clock_latency (-source)來建模;

在post_layout階段,使用set_propagated_clock來建模。

17、什么是virtual clock,有什么用處 ?

未連接到任何port或pin的時鐘

用作輸入或輸出延遲的參考點

18、為什么模塊級設計推薦寄存器輸出?

方便后級模塊時序約束和時序預算

19、input path、output path和reg-to-reg path分別被什么sdc語句約束?

input path :set_input_delay

output path :set_output_delay

reg-to-reg : create_clock

20、Design Compiler綜合中,set_max_capacitance命令的用處是什么?

max_capacitance屬于“邏輯DRC”,它限制了端口的扇出電容。默認情況下,邏輯DRC的優先級高于時序和面積約束。max_capacitance是由工藝廠的庫決定的。

21、如何通過tcl腳本找出lib庫最大的max_capacitance ?

在這里插入圖片描述

22、Design Compiler 在綜合時如何估計pre_layout的cell和net延時?

在這里插入圖片描述

Design Compiler使用非線性延遲模型生成查找表, 用于計算cell延遲。

在這里插入圖片描述

基于扇出和工藝廠提供的線負載模型(set_wire_load_model)計算net延遲。

23、Design Compiler 的Topographical Mode相比Wire Load Models有什么優勢?

線負載模型(WLM)是基于工藝廠的數據統計,而不是特定于自己的設計。在深亞微米(UDSM)設計中,互連寄生參數對路徑延遲有很大的影響 ,WLM是不夠準確的。

Topographical Mode使用placement算法來估計線延時,提供和實際物理布局更好的時序相關性。

Topographical Mode 除了邏輯庫之外,還需要物理庫(Milkyway)

24、使用Design Compiler,在compile或optimize之后應該執行的分析操作是什么?

report_constraint –all_violators,如果這個報告表明沒有違規行為,不需要進一步的時序和邏輯DRC分析。 如果有違規,可以使用report_timing執行更詳細的分析。

25、Milkyway庫包含了哪些信息,Design Compiler中如何指定Milkyway庫?

物理Milkyway庫(例如std,ip和pad)包含cell的物理布局描述,用于執行placement。 technology file定義了該工藝金屬層,物理設計規則,電阻,電容單位等。TLU-plus文件定義深亞微米RC寄生模型。 這些文件由工藝廠商提供。

在Design Compiler中,由下列命令定義:

在這里插入圖片描述

26、Floorplan是通過什么指標來設置芯片的大小和形狀的?

Aspect Ratio(height/width),默認比值為1

在這里插入圖片描述

Utilization(利用率)決定了cell的密集程度,提高利用率將減少core大小,默認利用率為0.6

在這里插入圖片描述

27、DC Topographical mode如何讀入設計的實際物理布局信息?

1、 source PhysConstr.tcl

2、 extract_physical_constraints <def_file>

28、為什么用于綜合的verilog不建議使用for循環?

DC無法優化for循環的邏輯,只是單純進行展開和復制,這可能降低電路的面積和性能

29、Milkyway庫中的“Layout” vs. “Abstract” 視圖有什么不同?

Milkyway庫中包含相應的Abstract視圖和 Layout視圖, Abstract視圖用于Place & Route減少工具處理的數據量。

在這里插入圖片描述

Abstract視圖不包含底層器件細節,僅包含以下內容:

  • cell的輪廓(placement工具將每個cell放置在core中的site上。 Placement工具只需要知道的是cell的大小和形狀(輪廓)。)
  • 引腳位置和層(引腳通常是金屬連接的區域。routing工具使用這些引腳位置來布線
  • Metal blockages(cell中某些不能布線的金屬層區域,因為這些區域已經被該cell使用。上面的示例布局太簡單,不需要Metal blockages。 Metal blockages更常見于IP宏模塊

30、針對上圖,分別使用report_timing、report_timing -max_paths 2、report_timing -nworst 2 -max_paths 2會輸出哪些slack ?

在這里插入圖片描述

report_timing: 由于4條路徑都屬于同一path group,因此report_timing只會報出一條路徑,即時序最差的路徑(Slack =-0.3)

report_timing -max_paths 2在每個endpoint都會報出一個最差的slack ,即(Slack = -0.3、Slack = -0.15)

report_timing -max_paths 2 -nworst 2在每個endpoint允許報出兩個最差的slack,即(Slack = -0.3、Slack = -0.25)

31、分析上述時序報告,該進行什么樣的優化操作?

在這里插入圖片描述

請注意,相對于12.5ns的時鐘周期,input delay為8.4 ns - 幾乎為70%!

實際上,該值要小得多,可以考慮將input delay減少到更合理的數字。

32、如何生成上圖所示的時鐘,假設觸發器的setup為0.03ns,Tmax最大允許延時為多大?

在這里插入圖片描述

create_clock –period 1.6 –waveform {0 0.4 0.6 1.4 } –name My_CLK [get_ports Clk]

Tmax = 0.6 - 0.4 – 0.03 = 0.17ns

33、怎樣理解上述原理圖和約束?

在這里插入圖片描述

指定外部邏輯(JANE’s_DESIGN)使用的時間,然后Design Compiler計算內部邏輯(MY_DESIGN)允許的時間。

在這里插入圖片描述

如何約束上述設計?如果FF2和FF3的setup要求為0.2 ns:

最大延遲TNmax =

最大延遲TXmax =

create_clock –period 3.6 –waveform {0.0 1.2} [get_ports Clk]

set_input_delay –max 1.3 –clock Clk –clock_fall [get_ports A]

Tn, max = 3.6 – 1.2 – 1.3 - 0.2 = 0.9ns

Tx, max = 3.6 – 0.2 = 3.4ns

34、如何約束上圖多輸入路徑?假設觸發器setup要求為0.14ns,兩條路徑中哪一條更加嚴格?

在這里插入圖片描述

在這里插入圖片描述

create_clock -period 2 [get_ports Clk]

set_input_delay -max 0.3 –clock Clk –clock_fall [get_ports A]

set_input_delay -max 1.2 –clock Clk –add_delay [get_ports A]

M1:TNmax = 2 – 1 – 0.3 – 0.14 = 0.56ns

M2:TNmax = 2 – 1.2 – 0.14 = 0.66 ns

35、如何約束上圖多輸出路徑?假設觸發器setup要求為0.1ns,兩條路徑中哪一條更加嚴格?

在這里插入圖片描述

在這里插入圖片描述

create_clock -period 4 [get_ports Clk]

set_output_delay –max 2.5 –clock Clk [get_ports B]

set_output_delay –max 0.7 –clock Clk - clock_fall –add_delay [get_ports B]

T1:TSmax = 4 – 2.5 = 1.5ns

T2:TSmax = 2 – 0.7 = 1.3 ns

36、用什么命令來設置設計驅動和負載約束?

set_driving_cell 、set_load

37、如何約束上述包含異步時鐘的設計?

在這里插入圖片描述

在這里插入圖片描述

如果設計中的所有時鐘都是異步的,可以使用以下腳本:

在這里插入圖片描述

38、上述設計,時鐘周期為10 ns。 加法器需要近6個時鐘周期。經過六個時鐘周期使能觸發器。如何不施加多周期約束,會發生什么?

在這里插入圖片描述

Design Compiler默認所有路徑都是單周期路徑。不施加多周期約束,工具會盡量讓64bit加法器滿足10ns約束!

39、Design Compiler綜合過程中,上述命令的用處是?

在這里插入圖片描述

單時鐘設計,因此所有路徑都在同一path group中。在I/O上的非常糟糕的約束可能影響設計最后的綜合效果。 我們可以自定義path group,使得每個path group的WNS path都能夠得到優化,不至于其中一個WNS的path阻礙另一個path group的優化。

在這里插入圖片描述

在這里插入圖片描述

report_timing也會分別報告每個path group的時序

40、group path中的 –weight選項有什么實際用處?

Design Compiler以降低cost function為優化方向,–weight用于給特定path group設置優先級或權重

例如:path group 1:

slack =-2ns,weight=5,則cost function = 10

path group 2:

slack =-3ns,weight=1,則cost function = 3.Design Compiler優化的方向是降低兩個path group的cost function之和

41、group path中的 –critical選項有什么實際用處?

在這里插入圖片描述

–critical選項用于優化 critical range范圍內的路徑,critical range不應超過時鐘周期的10%。優化次關鍵路徑可能有助于關鍵路徑。

默認情況下,所有路徑的critical range均為零。

42、下列關于DesignWare庫的描述正確的是?

a、compile_ultra之前需要額外設置庫變量

b、推斷綜合各種各樣的算術和關系運算符

c、推斷綜合各種各樣的標準IP,例如 FIFO,移位寄存器,分頻器

d、以上都是

B. compile_ultra自動設置庫變量; 非算術/關系IP不能由DC推斷,它們必須在RTL代碼中實例化

43、下列關于optimize_registers的描述正確的是?

a、拆分/合并寄存器 - 不優化組合邏輯

b、可以增加pipeline中的寄存器級數

c、可能會增加違規,以減少寄存器數量

d、可能生成更快和更小的流水線設計

D. optimize_registers:不改變寄存器級數; 可能會增加

寄存器數量; 將利用正slack以減少寄存器數量; 將執行增量編譯,以進一步優化組合邏輯

44、通過增加Design Compiler delay優化的的優先級將不會修復任何邏輯DRC違規 - True or False?

False Design Compiler將修復邏輯DRC違規,只要不增加負slack

45、在單時鐘設計中,默認情況下,Design Compiler不會自動創建任何path group - True or False?

False: Design Compiler為時鐘創建至少一個path group。 如果有任何不受約束的路徑,

這些路徑會被分組為名為default的path group

46、默認情況下,path group內的優化會停止在關鍵路徑的優化上 - True or False?

True 當關鍵路徑無法進一步優化時,、默認情況下,次關鍵路徑不會

優化。 Design Compiler進入下一個path group的優化。

47、為什么建議優化次關鍵路徑?

通過優化次關鍵路徑,可能能夠改善相關的關鍵路徑,最終會減少違規路徑,更容易通過Place&Route物理設計工具來修復

48、默認情況下被忽略優化的次關鍵路徑如何能夠得到優化

a)將它們放在自己的path group中

b)將critical range應用于create_clock

c)將weight應用于其path group

d)以上所有

A. critical range適用于path group,而不是時鐘約束;

應用weight沒有指示Design Compiler來優化否則被忽略的路徑 - 它只是對已經考慮優化的路徑施加更多的優化權重

49、通過將-weight選項應用于path group,它可能會惡化另一條路徑上WNS - 對錯嗎?True or False?

True,如果Design Compiler可以降低整體的cost function的話

50、Topographical mode相比WLM模式,通常提供更好的速度/面積結果 - True or False?

False。 Topographical mode導致與實際布局更好的時序相關性,不一定是更好的速度和/或面積結果。

51、在Topographical mode中包括物理約束

a)獲得更好的速度/面積優化

b)生成一個ready for clock tree synthesis的設計

c)是可選的,但建議用,以提高與實際物理布局更好的時序相關性

d)以上所有

C.雖然Topographical mode確實執行了placement引擎,但這僅適用于

時序計算的目的。只有能夠保存網表,用于Place&Route物理設計工具。

52、綜合后,已經完成映射的網表為什么不能夠包含assign語句,assign語句可能是由什么引起的?

布局工具可能無法處理Verilog網表中assign語句

網表中assign語句可能是由多端口網絡和三態網絡導致

53、Design Compiler怎么fix多端口網絡導致的網表中含有的assign語句問題?

在這里插入圖片描述

確保最終網表不包含assign語句,在綜合時,分隔多端口網絡:

在這里插入圖片描述

在這里插入圖片描述

54、Design Compiler怎么fix三態網絡導致的網表中含有的assign語句問題?

Design Compiler使用assign語句描述三態網絡,我們需要將三態網絡聲明轉換為wire聲明

在這里插入圖片描述

歡迎關注微信公眾號 “數字芯片實驗室”

相關閱讀

一文解讀垂直搜索引擎和個性化推薦的應用邏輯

垂直搜索引擎和個性化推薦都有哪些特點?在實際應用中二者又有何關聯?文章為您解讀。既談垂直搜索引擎和個性化推薦,就繞不開AI。AI已

邏輯分析儀的使用方法

1,下載邏輯分析儀配套軟件 我手頭是Kingst的LA5016型號,直接去官網下載對應版本http://www.qdkingst.com/cn 2.安裝和使用 安裝

邏輯回歸的思想方法

邏輯回歸的思想 廣義線性回歸模型的種類 邏輯回歸是應用非常非常廣泛的分類方法,這里需要注意的是雖然邏輯回歸就回歸,但是實際

以「閱鄰」為例,看二手書的市場邏輯與模式創新

本篇文章從閱鄰這款產品的角度出發,對當前的二手書市場進行分析,并介紹了二手書行業除了C2B2C模式的低價收高價賣的商業邏輯之外,還

產品分析 | 嗶哩嗶哩,從垂直平臺到綜合社區平臺

經過10年光陰,嗶哩嗶哩從最初ACG彈幕網成長到現在的垂直視頻巨頭,憑借平臺的PUGC內容和Z世代的認同感,并以“視頻彈幕網站”為產品口

(責任編輯:jjjccc)

關鍵詞:邏輯,邏輯,綜合

福彩3d字谜画谜藏机图