




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
邏輯綜合邏輯綜合2概述綜合是將RTL源代碼轉(zhuǎn)換成門級網(wǎng)表的過程。電路的邏輯綜合一般由三個步驟組成,即綜合=轉(zhuǎn)化+邏輯優(yōu)化+映射(見下頁圖)(Synthesis=Translation+LogicOptimization+Mapping)在綜合過程中,優(yōu)化進程嘗試完成庫單元的組合,使組合成的電路能最好地滿足設(shè)計的功能、時序和面積的要求綜合是約束驅(qū)動(constraintdriven)的,給定的約束是綜合的目標。約束一般是在對整個系統(tǒng)進行時序分析得到的,綜合工具會對電路進行優(yōu)化以滿足約束的要求。綜合以時序路徑為基礎(chǔ)進行優(yōu)化。常用的綜合工具有Synopsys公司的DesignCompiler和Candance公司的EnconterRTLCompiler2概述綜合是將RTL源代碼轉(zhuǎn)換成門級網(wǎng)表的過程。334綜合過程中時序與面積的關(guān)系從下圖中可以看出面積與延遲的折衷關(guān)系,綜合工具以約束為指導(dǎo),在滿足時序的情況下獲得最小面積。如果不施加約束,綜合工具會產(chǎn)生非優(yōu)化的網(wǎng)表,而這是不能滿足要求的網(wǎng)表。所以約束對于綜合來說是必不可少的。
4綜合過程中時序與面積的關(guān)系5綜合的基本流程
1.準備RTL代碼:RTL代碼經(jīng)過前端仿真后才能用于綜合。 2.定義庫:設(shè)定好所需要用到的綜合庫等多種庫。 3.讀入設(shè)計:綜合工具讀入RTL代碼并進行分析。
4.定義設(shè)計環(huán)境:設(shè)定設(shè)計的工作環(huán)境、端口的驅(qū)動和負載,線負載模型等。
5.設(shè)置設(shè)計約束:這是綜合的一個極其重要的環(huán)節(jié),設(shè)定好正確的約束才能得到正確的綜合結(jié)果。約束要適當,不能過緊或過松。主要是定義時鐘和I/O的約束。 6.設(shè)置綜合策略:有top-down和bottom-up兩種策略,各有所長,對于不同的設(shè)計要具體分析。 7.優(yōu)化設(shè)計:綜合工具可以根據(jù)約束對電路進行優(yōu)化,也可以人為地加入命令,改變優(yōu)化方法。 8.分析和解決設(shè)計的問題:在設(shè)計綜合(compile)后,根據(jù)報告來分析設(shè)計中出現(xiàn)的問題,進而修訂所出現(xiàn)的問題。
9.保存設(shè)計數(shù)據(jù):綜合完成后,保存各種數(shù)據(jù),以供后續(xù)的布局布線使用(需先通過驗證)。5綜合的基本流程6
BasicFlowDevelopHDLfilesSpecifylibrariesReaddesignDefinedesignenvironmentSetdesignconstraintsSelectcompilestrategyOptimizethedesignAnalyzeandresolvedesignproblemSavethedesigndatabase6BasicFlowDevelopHDLfilesS7DesignCompiler簡介DesignCompiler有兩種界面供用戶使用,一種是命令界面,一種是圖形界面。在UNIX命令行下分別執(zhí)行以下命令可以分別進入上述兩種界面:
unix%dc_shell-t
(命令界面)
unix%design_vision
(圖形界面) DesignCompiler支持TCL(ToolCommandLanguage)語言,它是公開的業(yè)界標準界面語言。DC-Tcl在TCL的基礎(chǔ)上擴展豐富了TCL,使用戶可以更加靈活方便地運用TCL命令來對電路進行分析和優(yōu)化。DC中包含了多種工具,如DFTCompiler,PowerCompiler,HDLCompiler,LibraryCompiler等,使得DC具有強大的功能,成為業(yè)界最流行的綜合工具。7DesignCompiler簡介DesignCompi8目標庫和初始環(huán)境的設(shè)置DC啟動時會先啟動.synopsys_dc.setup文件,它里面設(shè)定了綜合所需要的工藝庫的信息以及一些對于工具的設(shè)定命令。在綜合之前,要設(shè)定好所需要的庫,如綜合庫、I/O單元庫,IP核等。半導(dǎo)體廠商提供與DC兼容的工藝庫-綜合庫,它包含許多信息,如單元的功能、面積、時間、功耗、測試等,線負載模型,工作條件和設(shè)計規(guī)則約束等。在0.18um的工藝下,可采用非線性延遲模型(NLDM)來計算單元的延遲。單元的延遲與輸入的邏輯轉(zhuǎn)換時間和輸出負載有關(guān)。根據(jù)每個單元的輸入邏輯轉(zhuǎn)換時間和輸出負載,在工藝庫提供的查找表(Look-UpTable)中查出單元的延遲。8目標庫和初始環(huán)境的設(shè)置DC啟動時會先啟動.synopsys9.synopsys_dc.setup文件主要包括各種庫的設(shè)定,變量的設(shè)定等。下面具體介紹各種庫的意義及如何設(shè)定。(實例)
目標庫(target_library): 是DC在做編譯(compile)的時候來構(gòu)成電路圖的,將電路映射到具體的單元上。例如
settarget_librarymy_tech.db
鏈接庫(link_library): 是將設(shè)計連接到對應(yīng)的庫上,一般包含目標庫、宏單元、IP核等。例如:
set
link_library“*my_tech.db”。其中“*”指明當鏈接設(shè)計時,DC先搜尋內(nèi)存中已有的庫,然后再搜尋變量link_library中制定的其它庫。
符號庫(symbol_library): 定義了單元顯示的圖形庫,當用design_vision來查看圖形的時候使用。
綜合庫(synthetic_library): 是由Synopsys公司提供的DesignWare庫,包含了許多IP核及運算單元,用于實現(xiàn)verilog描述的運算符,為電路的優(yōu)化起著重要的作用。 搜尋路徑(search_path): 指定各種庫的路徑,可以將所用的庫的路徑放入search_path中,在設(shè)定target_library和link_library時就不必加上庫的絕對路徑,DC會自動在search_path中尋找所用到的庫的路徑從而讀入該庫。.synopsys_dc.setup文件9.synopsys_dc.setup文件主要包括各種庫的設(shè)10
變量的設(shè)定:設(shè)置的變量在DC啟動時讀入,便于綜合的處理,同時有些DC的變量必須在設(shè)置文件中輸入。如可以設(shè)定命令的簡寫,保存多少條命令等:aliascudcurrent_designaliasrptreport_timinghistorykeep30010 變量的設(shè)定:設(shè)置的變量在DC啟動時讀入,便于綜合的處理11綜合腳本實例(.synopsys_dc.setup)11綜合腳本實例(.synopsys_dc.setup)12系統(tǒng)層次的劃分與基本概念在DC中,每個設(shè)計由6個設(shè)計物體組成,它們分別是design,cell,port,pin,net和clock。其中clock是特別的端口,它存在DC內(nèi)存中,是用戶自己定義的物體。如下圖所示:12系統(tǒng)層次的劃分與基本概念在DC中,每個設(shè)計由6個設(shè)計物體13當前設(shè)計為TOP。Port和Pin是與當前設(shè)計有關(guān)的一對概念,如果當前設(shè)計改變,相應(yīng)的port和pin也會不同13當前設(shè)計為TOP。Port和Pin是與當前設(shè)計有關(guān)的一對14設(shè)計讀入讀入設(shè)計有多種方法,DC支持讀入Verilog,VHDL,可以是RTL級代碼,也可以是門級網(wǎng)表,也可是ddc格式的文件。綜合前的設(shè)計不需用RTL格式(雖然也有其它格式)輸入到DC中??梢杂靡韵旅钭x入設(shè)計:
1.analyze和elaborate命令:這是兩個不同的命令,它使得設(shè)計人員可以在建立設(shè)計通用邏輯之前先對設(shè)計進行語法錯誤和RTL轉(zhuǎn)換分析。2.read_file命令:如:
read_file–formatverilogsd_clk.v3.read_verilog或read_vhdl命令,這些是從read_file中分離出來的命令,如:
read_verilogsd_clk.v讀入代碼后用命令current_design和link將讀入的設(shè)計和綜合庫連接起來。14設(shè)計讀入讀入設(shè)計有多種方法,DC支持讀入Verilog,15電路的設(shè)計目標與約束RTL模塊綜合的流程如下圖所示。電路的約束分為設(shè)計環(huán)境和設(shè)計約束,DC以約束為目標進行電路優(yōu)化。15電路的設(shè)計目標與約束RTL模塊綜合的流程如下圖所示。電路16設(shè)計環(huán)境 通過環(huán)境約束的設(shè)計,將設(shè)計所處的真實環(huán)境因素包含進去,使得設(shè)計可以正常工作在真實環(huán)境下。環(huán)境約束如下圖所示:
16設(shè)計環(huán)境17set_operating_conditions描述了設(shè)計的工藝、電壓及溫度條件。Synopsys庫包含這些條件的描述,通常為WORST,TYPICAL,BEST情況。工作條件的名稱可庫的名稱是相關(guān)的,如SMIC0.18um工藝提供slow.db,typical.db,fast.db三種工藝庫,它們的工作條件分別是slow(WORST),typical(TYPICAL)和fast(BEST)。WORST情況通常用于綜合階段,而BEST情況通常用于修正保持時間違規(guī)。有時可能同時用WORST和BEST情況同時優(yōu)化設(shè)計,這時使用命令:
set_operating_conditions-maxslow-max_libraryslow\ -minfast-min_libraryfast可以用set_min_library指定best和worst兩種庫,在設(shè)計中所用到的庫都可以指定。如: #為綜合用的sram庫指定最佳情況可最壞情況
set_min_librarysram_slow.db–min_visionsram_fast.db17set_operating_conditions描述了設(shè)18set_wire_load_model命令為DC提供估計的線負載信息,反過來DC使用線載信息把連線延遲建模為負載的函數(shù),Synopsys工藝庫里提供了多種線載模型,每個模型代表一個特定大小的模塊。設(shè)計人員需要準確地選擇線載模型。設(shè)置線載模型命令如下:
set_wire_load_model–namesmic18_wl10–libraryslowset_wire_load_mode定義了三種同建模線負載模型相關(guān)的模式,分別是top,segmented和enclosed,如下圖所示:18set_wire_load_model命令為DC提供估計19
1.top模式定義層次中所有連線將繼承和頂層模型同樣的線載模型。如上圖中,所有的連線都繼承頂層的線載模型50x50。
2.segmented模式用于跨越層次邊界的連線。如上圖中,子模塊A和子模塊B中的連線繼承各自的線載模型,而A與B之間的連線繼承模塊MID的線載模型。
3.enclosed模式指定所有的連線(屬于子模塊的)將繼承完全包含該子模塊的模塊線載模型。如上圖中,整條連線處于模塊MID的完全包圍中,所以采用40x40線載模型。其命令如下
set_wire_load_modeenclosedset_driving_cell和set_drive用于設(shè)置模塊輸入端口的驅(qū)動能力。set_drive命令用于指定輸入端口的驅(qū)動強度,它主要用于模塊或芯片端口外驅(qū)動電阻。set_driving_cell用于對輸入端口的驅(qū)動電阻進行建模,這一命令將驅(qū)動單元的名稱作為其參數(shù)并將驅(qū)動單元的所有設(shè)計規(guī)則約束應(yīng)用于模塊的輸入端口。 set_driving_cell –lib_celland2a0[get_portsIN1]\ –libraryslow19 1.top模式定義層次中所有連線將繼承和頂層模型同樣的20
set_drive10[get_portsData_in_0]set_load將工藝庫中定義的單位(通常為pf)上的容性負載設(shè)置到設(shè)計的指定連線或端口,設(shè)置輸出端口的負載。
set_load5[get_portsOUT1] set_load[load_ofmy_lib/and2a0/A][get_portsOUT1]20 set_drive10[get_portsDat21設(shè)計約束描述了設(shè)計目標,包括時序和面積等。DC會依據(jù)約束來優(yōu)化電路。因為不實際的規(guī)范會導(dǎo)致面積增大、功耗增加和/或時序惡化,所以設(shè)計人員必須根據(jù)情況指定實際的約束,約束設(shè)計的基本命令如下圖所示。設(shè)計約束21設(shè)計約束描述了設(shè)計目標,包括時序和面積等。DC會依據(jù)約束22單周期同步設(shè)計的時序要求DC默認的時序電路是單周期的,如下圖所示。假設(shè)FF3的建立時間為Tsetup,保持時間為Thold,觸發(fā)器FF2的時鐘端到Q端的延遲為Tclk-q,對于setup來說:clockperiod>Tclk-q+Tx-max+Tsetup對于hold來說:Thold<Tclk-q+Tx-min時鐘22單周期同步設(shè)計的時序要求時鐘23定義時鐘
create_colck–period10[get_portclk]
對于時鐘(除了虛擬時鐘)的定義來說,時鐘周期和時鐘源(port或pin)是必不可少的,還可以定義時鐘的占空比,時鐘名等。定義虛擬時鐘時,不必定義時鐘源。設(shè)定時鐘的uncertainty、latency和transition,其中uncertainty是用來模擬時鐘的skew和jetter,latency設(shè)定時鐘的延遲,transition設(shè)定時鐘的轉(zhuǎn)換時間。通過這些設(shè)定讓時鐘更加接近實際情況,更有利于綜合的準確性,但過分約束會使得綜合起來比較困難。由于時鐘一般是高扇出(highfanout)的,DC不會對高扇出的連線做設(shè)計規(guī)則(DRC)的檢查和優(yōu)化。DC默認的時鐘網(wǎng)絡(luò)是理想的。在綜合時不對時鐘的高扇出做處理,而是留在后續(xù)的布局布線中做時鐘樹綜合(CTS)。23定義時鐘24sourcelatency是指實際的時鐘源到時鐘定義點的傳播延遲,而networklatency是指設(shè)計內(nèi)部從時鐘定義點到觸發(fā)器時鐘端的延遲。如下圖所示,設(shè)置如下:
create_clock–period10[get_portsCLK]
#設(shè)置sourcelatency為3ns
set_clock_latency–source3[get_clocksCLK]
#設(shè)置networklatency為1ns set_clock_latency1[get_clocksCLK]24sourcelatency是指實際的時鐘源到時鐘定義點25set_clock_uncertainty命令讓用戶定義時鐘扭斜信息?;旧洗嗣钣糜诮o時鐘的建立時間和保持時間增加一定的余量。由時鐘的抖動(jitter)可扭斜(skew)組成,如下圖:
set_clock_uncertainty0.6[get_clocksCLK]set_clock_transition命令讓用戶定義時鐘的轉(zhuǎn)換時間。如下圖
set_clock_transition0.45[get_clocksCLK]25set_clock_uncertainty命令讓用戶定義26除了create_clock命令,還有create_generated_clock命令用來創(chuàng)建產(chǎn)生的時鐘,如時鐘經(jīng)過分頻后的時鐘,在創(chuàng)建生成時鐘時,要指定源時鐘的名字和端口,分頻數(shù)(倍頻數(shù)),生成時鐘的端口。
create_generated_clock–sourceclk2x–divied_by2\ [get_pinsclk]有時需要創(chuàng)建虛擬時鐘(virtualclock)用來說明相對于時鐘的I/O端口的延遲,虛擬時鐘在設(shè)計里并不驅(qū)動觸發(fā)任何寄存器。
#建立虛擬時鐘,周期為10ns,命名為vclk,不需要定義時鐘源
create_clock–period10–namevclk通常給時鐘加上dont_touch的約束,使得DC在綜合的時候不會給時鐘網(wǎng)絡(luò)加入BUFFER以滿足skew的要求,時鐘網(wǎng)絡(luò)通常留在布局布線階段進行時鐘樹綜合(CTS)。
set_dont_touch_network[get_clocksclk]
26除了create_clock命令,還有create_ge27I/O的約束set_input_delay指定相對于時鐘的信號輸入的到達時間。它用在輸入端口,指定在時鐘沿后數(shù)據(jù)穩(wěn)定所需的時間。如下圖所示,設(shè)置的輸入延遲的值為Tclk-q
+TM。27I/O的約束set_input_delay指定相對于時鐘28例:根據(jù)外部邏輯的延遲設(shè)定輸入延遲
#創(chuàng)建時鐘
create_clock–period20–nameClk[get_portsClk]
#將時鐘設(shè)置為dont_touch_network
set_dont_touch_network[get_clocksClk]
#設(shè)置輸入延遲,外部邏輯延遲最大值為7.4,加入-max選項 #用于setup分析(setup分析采用最慢的路徑延遲)
set_input_delay7.4–max–clockClk[get_portsA]
28例:根據(jù)外部邏輯的延遲設(shè)定輸入延遲29set_output_delay命令用于在輸出端口定義在時鐘邊沿來到之前數(shù)據(jù)有效所需時間。如下圖所示,設(shè)置輸出時間的值為TT
+Tsetup29set_output_delay命令用于在輸出端口定義在30例:設(shè)置輸出延遲
#創(chuàng)建時鐘
create_clock–period20–nameClock[get_portsClock]
#將時鐘設(shè)置為dont_touch_network
set_dont_touch_network[get_clocksClock]
#設(shè)置輸入延遲,外部邏輯setup要求為7.0,即為setup分析設(shè) #定輸出延遲
set_output_delay7.0–max–clockClock[get_portsB]30例:設(shè)置輸出延遲31DRC約束DRC即DesignRuleConstraints,一般由半導(dǎo)體廠商提供,在使用工藝庫中的邏輯單元時對其連接所強加的限制,主要有:max_capacitance,max_transition,max_fanout
#為當前設(shè)計設(shè)定最大電容值為0.5pf
set_max_capacitance0.5[current_design] #為當前設(shè)計設(shè)定最大轉(zhuǎn)換時間為2.0ns,在整個設(shè)計上施加最 #大轉(zhuǎn)換時間延遲可以幫助防止在上連線上出現(xiàn)長的轉(zhuǎn)換時間, #也可以約束單元的輸出端的轉(zhuǎn)換時間以減少其功耗
set_max_transition2.0[current_design]
#在當前設(shè)計的所有單元的輸出引腳上設(shè)置max_fanout
set_max_fanout10[current_design]在DC優(yōu)化時,DRC約束具有最高的優(yōu)先級,DC會先讓電路滿足DRC,然后才是時序約束。31DRC約束DRC即DesignRuleConstra32面積約束我們用set_max_area來設(shè)定面積約束。例如
set_max_area1000 set_max_area0面積的單位由工藝庫定義,可以是:
1.2輸入與非門 2.晶體管數(shù)目 3.平方微米設(shè)定了面積約束,DC會盡量優(yōu)化到所設(shè)定的面積;當沒有設(shè)定面積約束時,DC會做最小限度的面積優(yōu)化;若設(shè)定為0,則DC會對面積做優(yōu)化直到再繼續(xù)優(yōu)化也沒有大的效果,這樣可以使得面積優(yōu)化最小,但運行時間較長。可用命令report_area報告面積。32面積約束我們用set_max_area來設(shè)定面積約束。例33時序例外時序例外有以下幾種:1.Falsepaths。用set_false_path來設(shè)定路徑使得DC不對其進行時序分析,移除該路徑上的時序約束。通常異步電路的時鐘之間、邏輯上不存在的路徑等上設(shè)定為falstpath2.Minimumandmaximumpathdelayvalue。我們使用命令set_max_delay和set_min_delay來覆蓋默認的用于setup和hold約束的最大/最小延遲。3.Multicyclepaths。由于DC默認的是單周期,有時某些路徑可能需要多個周期的時間才能到達,如在兩個寄存器之間進行乘法操作可能需要多個周期才能完成,這時用命令set_muticycle_path來設(shè)定多周期路徑,以滿足時序要求。同時要注意setupcheck和holdcheck的設(shè)定。33時序例外時序例外有以下幾種:34綜合策略的選擇綜合的策略有兩種:自頂向下和自底向上。 1.自頂向下(top-down):在top-down的綜合方案中,頂層模塊和它的所有子模塊放在一起優(yōu)化,所有的限制條件和電路工作環(huán)境一般也都是針對頂層模塊設(shè)置的,因此,這種綜合方案能夠自動將模塊之間的連接和依賴關(guān)系考慮到綜合中去,從而優(yōu)化綜合結(jié)果。但是,這種方法對于一個規(guī)模比較大的電路顯然不適合,因為在綜合的過程中,所有的模塊必須同時存在于存儲區(qū)中,而且運行時間也會比較長。
2.自底向上(bottom-up):即分而治之的解決方法。從最底層模塊開始綜合優(yōu)化,必須對所有底層子模塊施加限制條件并且需要單獨優(yōu)化,這個過程一直延續(xù)到頂層模塊。其中每一個子模塊綜合完成之后,直接將該模塊集成到它的上一級中和上一級的其他模塊一起優(yōu)化,而且一般使用set_dont_touch命令讓DC不再改變該子模塊的結(jié)構(gòu)。使用這種方法進行優(yōu)化的優(yōu)點是當工作站的處理能力不足時,可以分別進行子模塊的優(yōu)化,而不需要將所有的模塊都放到存儲區(qū)中,這種做法的缺點是只能在子模塊內(nèi)部進行優(yōu)化,無法考慮到模塊周圍的環(huán)境而將子模塊和其他的模塊一起優(yōu)化。34綜合策略的選擇綜合的策略有兩種:自頂向下和自底向上。35設(shè)計優(yōu)化采用命令compile或compile_ultra來啟動DC綜合和優(yōu)化的進程。DC提供許多選項來設(shè)定進行何種綜合。compile_ultra命令具有強大的功能,使用該命令可以得到更好的延遲質(zhì)量,特別適用于高性能的算術(shù)電路優(yōu)化。該命令包含了以時間為中心的優(yōu)化算法。compile_ultra命令主要的開關(guān)選項有:
-scan#做可測性設(shè)計編輯,加入掃描鏈 -no_autoungroup#關(guān)掉自動取消劃分特性 -no_boundary_oprimization#不作邊界優(yōu)化 -area_high_effort_script#面積優(yōu)化 -timing_high_effort_script#時序優(yōu)化35設(shè)計優(yōu)化采用命令compile或compile_ultr36
電路的優(yōu)化分為三個階段:結(jié)構(gòu)級的優(yōu)化,邏輯級優(yōu)化和門級優(yōu)化,如下圖所示。36 電路的優(yōu)化分為三個階段:結(jié)構(gòu)級的優(yōu)化,邏輯級優(yōu)化和門級37 1.結(jié)構(gòu)級的優(yōu)化,包括:
1.1設(shè)計結(jié)構(gòu)的選擇:在DesignWare中選擇最合適的結(jié)構(gòu)或算法實現(xiàn)電路的功能。
1.2數(shù)據(jù)通路的優(yōu)化:選擇CSA等算法優(yōu)化數(shù)據(jù)通路的設(shè)計
1.3共用子表達式:例如下面兩個等式:
SUM1<=A+B+C; Temp<=A+B; SUM2<=A+B+D; SUM1<=Temp+C; SUM3<=A+B+E; SUM2<=Temp+D
; SUM3<=Temp+E; 這種方法可以把比較器的數(shù)目減少,共享共同的子表達式。
37 1.結(jié)構(gòu)級的優(yōu)化,包括:38 1.4資源共享。如右圖所示,如果沒有資源 共享,DC將綜合出兩個加法器和一個多路 器,采用資源共享后,僅綜合出一個加法 器和兩個多路器,這樣即節(jié)省了面積又提高 了時序。38 1.4資源共享。如右圖所示,如果沒有資源39 1.5重新排序運算符號:由于VHDL/HDL編譯器從座到右解析表達式,括號的優(yōu)先級更高,可以通過改變表達式的次序或用括號強制電路用不同的拓撲結(jié)構(gòu)。如下面的表達式: Z=A+B+C+D;則初始的排序為:
加上括號改變運算次序從而改變電路結(jié)構(gòu):
Z=((B+C)+D)+A;
39 1.5重新排序運算符號:由于VHDL/HDL編譯器從座40 2.邏輯級優(yōu)化。做完結(jié)構(gòu)的優(yōu)化后,電路的功能以GETCH的器件來表示。在邏輯級優(yōu)化的過程中,可以作結(jié)構(gòu)(structuring)優(yōu)化和展平(flattening)優(yōu)化。
2.1.結(jié)構(gòu)優(yōu)化:用共用子表達式來減少邏輯,這種方式既可用作速度優(yōu)化又可用作面積優(yōu)化,結(jié)構(gòu)優(yōu)化是DC默認的優(yōu)化策略。結(jié)構(gòu)優(yōu)化在作邏輯優(yōu)化時,在電路中加入中間變量和邏輯結(jié)構(gòu)。
2.2.展平優(yōu)化:把組合邏輯路徑減少為兩級,變?yōu)槌朔e之和的電路,即先與后或的電路。如下圖所示:
40 2.邏輯級優(yōu)化。做完結(jié)構(gòu)的優(yōu)化后,電路的功能以GETC41 3.門級優(yōu)化:門級優(yōu)化時,DC開始映射,完成實現(xiàn)門級電路。映射的優(yōu)化過程包括四個階段:延遲優(yōu)化,設(shè)計規(guī)則修整,以時序為代價的設(shè)計規(guī)則修整,面積優(yōu)化。
41 3.門級優(yōu)化:門級優(yōu)化時,DC開始映射,完成實現(xiàn)門級電42靜態(tài)時序分析在進行綜合時,DC用內(nèi)建的靜態(tài)時序分析工具DesignTime來估計路徑的延遲以指導(dǎo)優(yōu)化的決定。綜合時,可用DesignTime來產(chǎn)生時間的報告。靜態(tài)時序分析(StaticTimingAnalysis),簡稱STA,可以不進行動態(tài)仿真就決定電路是否滿足時序要求。靜態(tài)時序分析包括三個主要的步驟:
1.把設(shè)計分解成時間路徑的集合 2.計算每一條路徑的延遲 3.所有路徑延遲都要檢查(與時間的約束做比較),看它們是否滿足時間的要求DC以下面的方法把設(shè)計分解成時序路徑的集合。每條路徑有一個起點(startpoint)和終點(endpoint)。 起點定義為:輸入端口、觸發(fā)器或寄存器的時鐘引腳,如下圖的A,F(xiàn)F1/CLK,FF2/CLK
終點定義為:輸出端口、時序器件除時鐘引腳外的所有輸入引腳,如下圖的Z,F(xiàn)F1/D,F(xiàn)F2/D為了便于時序分析,時序路徑被分組。路徑按照它們終點的時鐘進行分組,如果終點沒有被時鐘控制,則這些路徑歸于默認(default)的路徑組。42靜態(tài)時序分析在進行綜合時,DC用內(nèi)建的靜態(tài)時序分析工具D431234每一條時序路徑從起點開始,經(jīng)過一些組合邏輯,到終點結(jié)束。如下圖,時序路徑大致可分為以下四種:1.從輸入端口開始,到時序器件的數(shù)據(jù)輸入端口結(jié)束,即input-to-reg,如Path1。2.從時序器件的時鐘端口開始,到時序器件的數(shù)據(jù)輸入端口結(jié)束,即reg-to-reg,如Path2。3.從時序器件的時鐘端口開始,到輸出結(jié)束,即reg-to-output,如Path3。4.從輸入開始,到輸出結(jié)束,即input-to-output,如Path4431234每一條時序路徑從起點開始,經(jīng)過一些組合邏輯,到終44路徑的延遲。在計算路徑的延遲時,DC把每一條路徑分成時間?。╰imingarc),如下圖所示。時間弧描述單元和/或連線的時序特性。單元的時間弧由工藝庫定義,包括單元的延遲和時序檢查(如寄存器的setup/hold檢查等)。連線的時間弧由網(wǎng)表定義。單元延遲通常用非線性模型(NLDM)計算,連線延遲用先負載模型計算(版圖前)。路徑的延遲與起點的邊沿有關(guān),即單元的時間弧是邊沿敏感的。44路徑的延遲。在計算路徑的延遲時,DC把每一條路徑分成時間45單元延遲(celldelay):工藝庫中提供2維的NLDM的查找表來計算單元的延遲。輸出負載(outputload)和輸入轉(zhuǎn)換時間(inputtransition)決定了單元延遲和輸出轉(zhuǎn)換時間(outputtransition),如下圖所示:45單元延遲(celldelay):工藝庫中提供2維的NL46連線延遲(wiredelay):通過連線上的RC參數(shù)計算連線延遲,WLM決定線上的R和C?;ミB延遲的計算從驅(qū)動引腳的狀態(tài)轉(zhuǎn)換到接收單元輸入引腳狀態(tài)轉(zhuǎn)換。RC寄生參數(shù)的分布由operating_condition中的Tree-type決定,有以下三種:46連線延遲(wiredelay):47建立時間和保持時間檢查47建立時間和保持時間檢查48DC中,常用report_timing命令來報告設(shè)計的時序是否滿足目標,執(zhí)行report_timing命令時,DC做4個步驟:
1.把設(shè)計分解成單獨的時間組; 2.每條路徑計算兩條延遲,一次起點為上升沿,一次起點為下降沿; 3.在每個路徑組里找出關(guān)鍵路徑(criticalpath),即延遲最大的路徑; 4.顯示每個時間組的時間報告。report_timing命令的默認行為是報告每個時序路徑理的關(guān)鍵路徑??梢栽O(shè)置各種選項以查看不同的類型時序或不同路徑的時序。具體用法可在dc_shell使用man命令來查看report_timing命令的詳細介紹。時序報告和時序問題的診斷48DC中,常用report_timing命令來報告設(shè)計的時49在DC綜合完成后,要保存好相應(yīng)的數(shù)據(jù),輸出相應(yīng)的網(wǎng)表,SDC(standarddesignconstraints)文件,供給后續(xù)的布局布線工具使用,也可以供給PT讀入,檢查時序是否滿足。綜合結(jié)果要經(jīng)過PT分析滿足時序要求,經(jīng)過驗證工具(如Formaility)的驗證滿足后才能提供給布局布線工具使用。還可以保存ddc格式的文件,以便DC下次啟動的時候讀入,ddc文件保存了上次DC運行的各種數(shù)據(jù)。具體的命令有:write–fverilog–hierarchy–outputmy_design.vwrite–fddc–hierarchy–outputmy_design.ddcwrite_sdcmy_design.sdc
數(shù)據(jù)的保存49在DC綜合完成后,要保存好相應(yīng)的數(shù)據(jù),輸出相應(yīng)的網(wǎng)表,S50RTL綜合流程50RTL綜合流程51可測性設(shè)計隨著電路設(shè)計的規(guī)模越來越大,工藝尺寸越來越小,集成度越來越高,測試的成本也越來越高。為了降低測試的成本和難度,提高芯片質(zhì)量和成品率,需要在為芯片進行可測性設(shè)計(DesignForTestability),簡稱DFT??蓽y性設(shè)計包含了很豐富的內(nèi)容,它包含了DFT電路的設(shè)計和測試向量的生成(ATPG)。目前常用的DFT技術(shù)有:掃描鏈插入、存儲器BIST插入、邏輯BIST插入和邊界掃描插入。其中掃描鏈插入是最常用的DFT技術(shù)。Synopsys的DFTCompiler就是包含在DC內(nèi)的用于可測性設(shè)計的工具。具有強大的功能,如:為邏輯模塊進行“掃描就緒(scan-ready)”的編輯、檢查已綜合電路是否滿足掃描規(guī)則、用top-down或bottom-up方法插入掃描鏈、對掃描模塊預(yù)覽測試覆蓋率等。51可測性設(shè)計隨著電路設(shè)計的規(guī)模越來越大,工藝尺寸越來越小,52低功耗設(shè)計與分析隨著技術(shù)的發(fā)展,集成度的提高,芯片內(nèi)部的單元數(shù)越來越多,功耗也越來越大,同時基于低功耗低成本、方便攜帶以及可靠性好等方面,低功耗設(shè)計變得越來越重要,在大型的設(shè)計中是必不可少的。進行低功耗設(shè)計時需要三方面的內(nèi)容:
1.功耗模型:功耗管理的基本結(jié)構(gòu)、IC設(shè)計中所用工藝庫的功耗模型
2.功耗分析:分析設(shè)計中每個單元的功耗、分析所有級設(shè)計(RTL代碼、門級網(wǎng)表和版圖設(shè)計)的功耗
3.功耗優(yōu)化:在所有級的設(shè)計都能降低功耗、采用多種降低功耗的方法:門控時鐘電路、操作數(shù)分離、門級電路的功耗優(yōu)化、多供電電壓、多閾值電壓、門控功耗等52低功耗設(shè)計與分析隨著技術(shù)的發(fā)展,集成度的提高,芯片內(nèi)部的53靜態(tài)時序分析工具PrimeTime常用的靜態(tài)時序分析工具是PrimeTime,它是Synopsys公司的簽收級(sign-off)工具,具有強大的時序分析功能。PT啟動時,導(dǎo)入.synopsys_pt.setup的啟動文件,該文件主要定義了搜尋路徑(search_path)和鏈接庫(link_library)。PT只可以讀入門級網(wǎng)表,而不能讀入RTL級的代碼。PT內(nèi)含了PrimePower(功耗分析工具)、PrimeTimeSI(信號完整性分析工具)。PT和DC的命令基本相同,它們生成類似的報告,并支持共同的文件格式。PT也能生成DC用于綜合和優(yōu)化時序的斷言。53靜態(tài)時序分析工具PrimeTime常用的靜態(tài)時序分析工具54小芯片綜合實驗1.熟悉設(shè)計,獲得設(shè)計目標和要求,如芯片的時鐘頻率,外部接口的時序要求等。2.設(shè)置.synopsys_dc.setup文件3.啟動DC,讀入RTL代碼,并寫出RTL級代碼的ddc文件。
unix%dc_shelldc_shell>source–echo–verboseread_file.tcl4.設(shè)置約束。
dc_shell>source–echo–verboseconstraints.tcl5.綜合,優(yōu)化
dc_shell>compile_ultra-no_autogroup6.查看報告
dc_shell>report_constraint-all_violarors7.保存文件
dc_shell>write–formatddc–hierarchy–outputRecordchiptop.ddc54小芯片綜合實驗1.熟悉設(shè)計,獲得設(shè)計目標和要求,如芯片的55
1.熟悉設(shè)計,獲得設(shè)計目的和要求。 輸入信號:在小芯片中,輸入時鐘clk_128,時鐘頻率為128KHz。Read_ADPCM為輸入控制信號,采樣速率為8K,類似于一個頻率為8K的時鐘,且占空比為50%。另外就是8位的數(shù)據(jù)輸入信號,reset信號。在這里還有inout信號CMD,DATA0,但不用作輸入,只用作輸出。 輸出信號:輸出SD卡輸入時鐘信號CLK,這里輸出的CLK配置成clk_128的兩分頻,即64K,和輸出數(shù)據(jù)DATA0信號,輸出CMD信號。55 1.熟悉設(shè)計,獲得設(shè)計目的和要求。562.設(shè)置.synopsys_dc.setup文件選擇要使用的工藝文件,這里采用SMIC的0.18um工藝,SMIC提供了slow.db,fast.db和typical.db三種標準單元的綜合庫,我們選用slow和fast兩種庫,其中slow用于最壞情況分析,fast用于最佳情況分析。芯片中的sram是IP核,提供了包含時序信息的綜合庫用于邏輯綜合,它也有最壞情況和最佳情況之分,另外用到的綜合庫還有標準的IO單元的綜合庫。具體設(shè)置可參見示例文件。3.啟動DC,讀入RTL代碼,并寫出RTL級代碼的ddc文件。
在unix的終端中鍵入dc_shell,即可啟動DC,這時讀入代碼文件,可以一個一個的讀入,也可以寫成TCL語言的文本,用source命令在dc_shell中讀入。使用命令analyze和elaborate來讀入設(shè)計。讀入設(shè)計后用check_design命令來檢查設(shè)計存在的問題,是否是可綜合的。具體命令可見腳本文件。4.設(shè)置約束。這是一個及其重要的環(huán)節(jié)。要在熟悉設(shè)計的前提下才能設(shè)置好正確的約束,約束的設(shè)置要參考與芯片輸入輸出有關(guān)的芯片的輸出/輸入信號時序,還要了解0.18工藝下如何選擇線負載模型,如何設(shè)置DRC規(guī)則等??梢韵仍O(shè)置工作條件,最壞情況采用slow,最佳情況采用fast,并對應(yīng)相應(yīng)的庫,選擇wire_load_model,要根據(jù)設(shè)計的大小來選擇合適的線負載模型。562.設(shè)置.synopsys_dc.setup文件57
設(shè)置DRC規(guī)則,通常DRC約束由工藝廠商設(shè)定,我們可以選擇加緊約束以使得綜合出來的結(jié)果更加滿足各種約束條件。不同工藝下的DRC約束是不同的,可以根據(jù)經(jīng)驗對設(shè)計加緊約束,但約束不可過緊,這樣會延長綜合的時間,甚至導(dǎo)致綜合出的結(jié)果不可用。定義時鐘。定義兩個輸入時鐘和一個輸出時鐘。并設(shè)置時鐘的延遲,轉(zhuǎn)換時間和不確定時間,使得時鐘和真實的情況更加接近。綜合時通常對時鐘加緊約束,如加上10%的余量,這樣綜合出的結(jié)果更加可信。
I/O端口的設(shè)置。I/O約束的設(shè)置通常要參考各種手冊,與芯片相連的外圍芯片的輸入輸出端口的時序要求,驅(qū)動負載要求,然后參考設(shè)置本芯片的I/O約束。如果沒有用戶手冊,可根據(jù)經(jīng)驗加以約束,在綜合之后查看報告,再進行適當?shù)男薷?,然后再進行綜合。綜合是個不斷修改不斷完善的過程。I/O約束要全面。時序例外的設(shè)置,如多周期,false_path等,這些要通過和前端人員進行交流獲得。面積及功耗約束。面積和功耗約束要考慮芯片的要求,要求低功耗則在前端設(shè)計時進行相應(yīng)的設(shè)計。如果對時序要求不高可以對面積加緊約束,但一切都要保證時序的正確性。57設(shè)置DRC規(guī)則,通常DRC約束由工藝廠商設(shè)定,我們585.綜合,優(yōu)化當約束完成后,用check_timing來檢查約束的正確性,還可以通過報告來檢查,如report_clock命令可以報告設(shè)置的時鐘,報告時鐘的名字,周期,波形,在何處創(chuàng)建等。如果一切檢查通過,這是可以對設(shè)計進行綜合。綜合的策略有多種,選擇不同的策略得到的結(jié)果也不一樣,由于本設(shè)計較小,可采用top-down的策略,這樣得到的綜合效果會更好。
DC的綜合命令有compile和compile_ultra,其中compile_ulrta的優(yōu)化力度更大,優(yōu)化手段更多。在DC中鍵入compile_ultra和相應(yīng)的開關(guān)選項后,DC就對設(shè)計進行優(yōu)化,這時電路映射到相應(yīng)的單元,在約束驅(qū)動的情況下同時對時序進行優(yōu)化,這時可以查看log文件,觀察設(shè)計在綜合時出現(xiàn)的問題。6.查看報告綜合完成后,通過各種報告查看綜合結(jié)果。常用的有report_constraint和report_timing,通過report_constraint命令報告綜合過程中的各種違規(guī)情況,在通過report_timing查看相應(yīng)的時序路徑的報告,靈活運用命令來獲取報告,查看綜合結(jié)果是否滿足要求,如果不滿足,再采用各種綜合手段或進行相應(yīng)的修改來改善綜合結(jié)果,或向前端人員詢問一下與設(shè)計有關(guān)的違規(guī)。585.綜合,優(yōu)化597.保存文件。 經(jīng)過反復(fù)的綜合后,設(shè)計已達到要求,這時需要輸出相應(yīng)的文件,如門級網(wǎng)表,sdc文件等,通過DC輸出這些文件,以便后續(xù)的時序分析和驗證。8.后續(xù)處理綜合完成后要驗證綜合的正確與否,可以通過靜態(tài)時序分析和形式驗證,其中靜態(tài)時序分析可以更加準確地分析時序,從而檢查綜合的時序是否正確;而形式驗證則用數(shù)學(xué)的方法驗證綜合出的電路與原電路的功能是否一致。在驗證通過后才可以進行下一步的布局布線,否則還要重新綜合。注:綜合的腳本已經(jīng)提供,各條命令的設(shè)定都有相應(yīng)的注釋便于理解,可以按照main_flow.tcl的流程進行綜合。597.保存文件。
邏輯綜合邏輯綜合61概述綜合是將RTL源代碼轉(zhuǎn)換成門級網(wǎng)表的過程。電路的邏輯綜合一般由三個步驟組成,即綜合=轉(zhuǎn)化+邏輯優(yōu)化+映射(見下頁圖)(Synthesis=Translation+LogicOptimization+Mapping)在綜合過程中,優(yōu)化進程嘗試完成庫單元的組合,使組合成的電路能最好地滿足設(shè)計的功能、時序和面積的要求綜合是約束驅(qū)動(constraintdriven)的,給定的約束是綜合的目標。約束一般是在對整個系統(tǒng)進行時序分析得到的,綜合工具會對電路進行優(yōu)化以滿足約束的要求。綜合以時序路徑為基礎(chǔ)進行優(yōu)化。常用的綜合工具有Synopsys公司的DesignCompiler和Candance公司的EnconterRTLCompiler2概述綜合是將RTL源代碼轉(zhuǎn)換成門級網(wǎng)表的過程。62363綜合過程中時序與面積的關(guān)系從下圖中可以看出面積與延遲的折衷關(guān)系,綜合工具以約束為指導(dǎo),在滿足時序的情況下獲得最小面積。如果不施加約束,綜合工具會產(chǎn)生非優(yōu)化的網(wǎng)表,而這是不能滿足要求的網(wǎng)表。所以約束對于綜合來說是必不可少的。
4綜合過程中時序與面積的關(guān)系64綜合的基本流程
1.準備RTL代碼:RTL代碼經(jīng)過前端仿真后才能用于綜合。 2.定義庫:設(shè)定好所需要用到的綜合庫等多種庫。 3.讀入設(shè)計:綜合工具讀入RTL代碼并進行分析。
4.定義設(shè)計環(huán)境:設(shè)定設(shè)計的工作環(huán)境、端口的驅(qū)動和負載,線負載模型等。
5.設(shè)置設(shè)計約束:這是綜合的一個極其重要的環(huán)節(jié),設(shè)定好正確的約束才能得到正確的綜合結(jié)果。約束要適當,不能過緊或過松。主要是定義時鐘和I/O的約束。 6.設(shè)置綜合策略:有top-down和bottom-up兩種策略,各有所長,對于不同的設(shè)計要具體分析。 7.優(yōu)化設(shè)計:綜合工具可以根據(jù)約束對電路進行優(yōu)化,也可以人為地加入命令,改變優(yōu)化方法。 8.分析和解決設(shè)計的問題:在設(shè)計綜合(compile)后,根據(jù)報告來分析設(shè)計中出現(xiàn)的問題,進而修訂所出現(xiàn)的問題。
9.保存設(shè)計數(shù)據(jù):綜合完成后,保存各種數(shù)據(jù),以供后續(xù)的布局布線使用(需先通過驗證)。5綜合的基本流程65
BasicFlowDevelopHDLfilesSpecifylibrariesReaddesignDefinedesignenvironmentSetdesignconstraintsSelectcompilestrategyOptimizethedesignAnalyzeandresolvedesignproblemSavethedesigndatabase6BasicFlowDevelopHDLfilesS66DesignCompiler簡介DesignCompiler有兩種界面供用戶使用,一種是命令界面,一種是圖形界面。在UNIX命令行下分別執(zhí)行以下命令可以分別進入上述兩種界面:
unix%dc_shell-t
(命令界面)
unix%design_vision
(圖形界面) DesignCompiler支持TCL(ToolCommandLanguage)語言,它是公開的業(yè)界標準界面語言。DC-Tcl在TCL的基礎(chǔ)上擴展豐富了TCL,使用戶可以更加靈活方便地運用TCL命令來對電路進行分析和優(yōu)化。DC中包含了多種工具,如DFTCompiler,PowerCompiler,HDLCompiler,LibraryCompiler等,使得DC具有強大的功能,成為業(yè)界最流行的綜合工具。7DesignCompiler簡介DesignCompi67目標庫和初始環(huán)境的設(shè)置DC啟動時會先啟動.synopsys_dc.setup文件,它里面設(shè)定了綜合所需要的工藝庫的信息以及一些對于工具的設(shè)定命令。在綜合之前,要設(shè)定好所需要的庫,如綜合庫、I/O單元庫,IP核等。半導(dǎo)體廠商提供與DC兼容的工藝庫-綜合庫,它包含許多信息,如單元的功能、面積、時間、功耗、測試等,線負載模型,工作條件和設(shè)計規(guī)則約束等。在0.18um的工藝下,可采用非線性延遲模型(NLDM)來計算單元的延遲。單元的延遲與輸入的邏輯轉(zhuǎn)換時間和輸出負載有關(guān)。根據(jù)每個單元的輸入邏輯轉(zhuǎn)換時間和輸出負載,在工藝庫提供的查找表(Look-UpTable)中查出單元的延遲。8目標庫和初始環(huán)境的設(shè)置DC啟動時會先啟動.synopsys68.synopsys_dc.setup文件主要包括各種庫的設(shè)定,變量的設(shè)定等。下面具體介紹各種庫的意義及如何設(shè)定。(實例)
目標庫(target_library): 是DC在做編譯(compile)的時候來構(gòu)成電路圖的,將電路映射到具體的單元上。例如
settarget_librarymy_tech.db
鏈接庫(link_library): 是將設(shè)計連接到對應(yīng)的庫上,一般包含目標庫、宏單元、IP核等。例如:
set
link_library“*my_tech.db”。其中“*”指明當鏈接設(shè)計時,DC先搜尋內(nèi)存中已有的庫,然后再搜尋變量link_library中制定的其它庫。
符號庫(symbol_library): 定義了單元顯示的圖形庫,當用design_vision來查看圖形的時候使用。
綜合庫(synthetic_library): 是由Synopsys公司提供的DesignWare庫,包含了許多IP核及運算單元,用于實現(xiàn)verilog描述的運算符,為電路的優(yōu)化起著重要的作用。 搜尋路徑(search_path): 指定各種庫的路徑,可以將所用的庫的路徑放入search_path中,在設(shè)定target_library和link_library時就不必加上庫的絕對路徑,DC會自動在search_path中尋找所用到的庫的路徑從而讀入該庫。.synopsys_dc.setup文件9.synopsys_dc.setup文件主要包括各種庫的設(shè)69
變量的設(shè)定:設(shè)置的變量在DC啟動時讀入,便于綜合的處理,同時有些DC的變量必須在設(shè)置文件中輸入。如可以設(shè)定命令的簡寫,保存多少條命令等:aliascudcurrent_designaliasrptreport_timinghistorykeep30010 變量的設(shè)定:設(shè)置的變量在DC啟動時讀入,便于綜合的處理70綜合腳本實例(.synopsys_dc.setup)11綜合腳本實例(.synopsys_dc.setup)71系統(tǒng)層次的劃分與基本概念在DC中,每個設(shè)計由6個設(shè)計物體組成,它們分別是design,cell,port,pin,net和clock。其中clock是特別的端口,它存在DC內(nèi)存中,是用戶自己定義的物體。如下圖所示:12系統(tǒng)層次的劃分與基本概念在DC中,每個設(shè)計由6個設(shè)計物體72當前設(shè)計為TOP。Port和Pin是與當前設(shè)計有關(guān)的一對概念,如果當前設(shè)計改變,相應(yīng)的port和pin也會不同13當前設(shè)計為TOP。Port和Pin是與當前設(shè)計有關(guān)的一對73設(shè)計讀入讀入設(shè)計有多種方法,DC支持讀入Verilog,VHDL,可以是RTL級代碼,也可以是門級網(wǎng)表,也可是ddc格式的文件。綜合前的設(shè)計不需用RTL格式(雖然也有其它格式)輸入到DC中??梢杂靡韵旅钭x入設(shè)計:
1.analyze和elaborate命令:這是兩個不同的命令,它使得設(shè)計人員可以在建立設(shè)計通用邏輯之前先對設(shè)計進行語法錯誤和RTL轉(zhuǎn)換分析。2.read_file命令:如:
read_file–formatverilogsd_clk.v3.read_verilog或read_vhdl命令,這些是從read_file中分離出來的命令,如:
read_verilogsd_clk.v讀入代碼后用命令current_design和link將讀入的設(shè)計和綜合庫連接起來。14設(shè)計讀入讀入設(shè)計有多種方法,DC支持讀入Verilog,74電路的設(shè)計目標與約束RTL模塊綜合的流程如下圖所示。電路的約束分為設(shè)計環(huán)境和設(shè)計約束,DC以約束為目標進行電路優(yōu)化。15電路的設(shè)計目標與約束RTL模塊綜合的流程如下圖所示。電路75設(shè)計環(huán)境 通過環(huán)境約束的設(shè)計,將設(shè)計所處的真實環(huán)境因素包含進去,使得設(shè)計可以正常工作在真實環(huán)境下。環(huán)境約束如下圖所示:
16設(shè)計環(huán)境76set_operating_conditions描述了設(shè)計的工藝、電壓及溫度條件。Synopsys庫包含這些條件的描述,通常為WORST,TYPICAL,BEST情況。工作條件的名稱可庫的名稱是相關(guān)的,如SMIC0.18um工藝提供slow.db,typical.db,fast.db三種工藝庫,它們的工作條件分別是slow(WORST),typical(TYPICAL)和fast(BEST)。WORST情況通常用于綜合階段,而BEST情況通常用于修正保持時間違規(guī)。有時可能同時用WORST和BEST情況同時優(yōu)化設(shè)計,這時使用命令:
set_operating_conditions-maxslow-max_libraryslow\ -minfast-min_libraryfast可以用set_min_library指定best和worst兩種庫,在設(shè)計中所用到的庫都可以指定。如: #為綜合用的sram庫指定最佳情況可最壞情況
set_min_librarysram_slow.db–min_visionsram_fast.db17set_operating_conditions描述了設(shè)77set_wire_load_model命令為DC提供估計的線負載信息,反過來DC使用線載信息把連線延遲建模為負載的函數(shù),Synopsys工藝庫里提供了多種線載模型,每個模型代表一個特定大小的模塊。設(shè)計人員需要準確地選擇線載模型。設(shè)置線載模型命令如下:
set_wire_load_model–namesmic18_wl10–libraryslowset_wire_load_mode定義了三種同建模線負載模型相關(guān)的模式,分別是top,segmented和enclosed,如下圖所示:18set_wire_load_model命令為DC提供估計78
1.top模式定義層次中所有連線將繼承和頂層模型同樣的線載模型。如上圖中,所有的連線都繼承頂層的線載模型50x50。
2.segmented模式用于跨越層次邊界的連線。如上圖中,子模塊A和子模塊B中的連線繼承各自的線載模型,而A與B之間的連線繼承模塊MID的線載模型。
3.enclosed模式指定所有的連線(屬于子模塊的)將繼承完全包含該子模塊的模塊線載模型。如上圖中,整條連線處于模塊MID的完全包圍中,所以采用40x40線載模型。其命令如下
set_wire_load_modeenclosedset_driving_cell和set_drive用于設(shè)置模塊輸入端口的驅(qū)動能力。set_drive命令用于指定輸入端口的驅(qū)動強度,它主要用于模塊或芯片端口外驅(qū)動電阻。set_driving_cell用于對輸入端口的驅(qū)動電阻進行建模,這一命令將驅(qū)動單元的名稱作為其參數(shù)并將驅(qū)動單元的所有設(shè)計規(guī)則約束應(yīng)用于模塊的輸入端口。 set_driving_cell –lib_celland2a0[get_portsIN1]\ –libraryslow19 1.top模式定義層次中所有連線將繼承和頂層模型同樣的79
set_drive10[get_portsData_in_0]set_load將工藝庫中定義的單位(通常為pf)上的容性負載設(shè)置到設(shè)計的指定連線或端口,設(shè)置輸出端口的負載。
set_load5[get_portsOUT1] set_load[load_ofmy_lib/and2a0/A][get_portsOUT1]20 set_drive10[get_portsDat80設(shè)計約束描述了設(shè)計目標,包括時序和面積等。DC會依據(jù)約束來優(yōu)化電路。因為不實際的規(guī)范會導(dǎo)致面積增大、功耗增加和/或時序惡化,所以設(shè)計人員必須根據(jù)情況指定實際的約束,約束設(shè)計的基本命令如下圖所示。設(shè)計約束21設(shè)計約束描述了設(shè)計目標,包括時序和面積等。DC會依據(jù)約束81單周期同步設(shè)計的時序要求DC默認的時序電路是單周期的,如下圖所示。假設(shè)FF3的建立時間為Tsetup,保持時間為Thold,觸發(fā)器FF2的時鐘端到Q端的延遲為Tclk-q,對于setup來說:clockperiod>Tclk-q+Tx-max+Tsetup對于hold來說:Thold<Tclk-q+Tx-min時鐘22單周期同步設(shè)計的時序要求時鐘82定義時鐘
create_colck–period10[get_portclk]
對于時鐘(除了虛擬時鐘)的定義來說,時鐘周期和時鐘源(port或pin)是必不可少的,還可以定義時鐘的占空比,時鐘名等。定義虛擬時鐘時,不必定義時鐘源。設(shè)定時鐘的uncertainty、latency和transition,其中uncertainty是用來模擬時鐘的skew和jetter,latency設(shè)定時鐘的延遲,transition設(shè)定時鐘的轉(zhuǎn)換時間。通過這些設(shè)定讓時鐘更加接近實際情況,更有利于綜合的準確性,但過分約束會使得綜合起來比較困難。由于時鐘一般是高扇出(highfanout)的,DC不會對高扇出的連線做設(shè)計規(guī)則(DRC)的檢查和優(yōu)化。DC默認的時鐘網(wǎng)絡(luò)是理想的。在綜合時不對時鐘的高扇出做處理,而是留在后續(xù)的布局布線中做時鐘樹綜合(CTS)。23定義時鐘83sourcelatency是指實際的時鐘源到時鐘定義點的傳播延遲,而networklatency是指設(shè)計內(nèi)部從時鐘定義點到觸發(fā)器時鐘端的延遲。如下圖所示,設(shè)置如下:
create_clock–period10[get_portsCLK]
#設(shè)置sourcelatency為3ns
set_clock_latency–source3[get_clocksCLK]
#設(shè)置networklatency為1ns set_clock_latency1[get_clocksCLK]24sourcelatency是指實際的時鐘源到時鐘定義點84set_clock_uncertainty命令讓用戶定義時鐘扭斜信息。基本上此命令用于給時鐘的建立時間和保持時間增加一定的余量。由時鐘的抖動(jitter)可扭斜(skew)組成,如下圖:
set_clock_uncertainty0.6[get_clocksCLK]set_clock_transition命令讓用戶定義時鐘的轉(zhuǎn)換時間。如下圖
set_clock_transition0.45[get_clocksCLK]25set_clock_uncertainty命令讓用戶定義85除了create_clock命令,還有create_generated_clock命令用來創(chuàng)建產(chǎn)生的時鐘,如時鐘經(jīng)過分頻后的時鐘,在創(chuàng)建生成時鐘時,要指定源時鐘的名字和端口,分頻數(shù)(倍頻數(shù)),生成時鐘的端口。
create_generated_clock–sourceclk2x–divied_by2\ [get_pinsclk]有時需要創(chuàng)建虛擬時鐘(virtualclock)用來說明相對于時鐘的I/O端口的延遲,虛擬時鐘在設(shè)計里并不驅(qū)動觸發(fā)任何寄存器。
#建立虛擬時鐘,周期為10ns,命名為vclk,不需要定義時鐘源
create_clock–period10–namevclk通常給時鐘加上dont_touch的約束,使得DC在綜合的時候不會給時鐘網(wǎng)絡(luò)加入BUFFER以滿足skew的要求,時鐘網(wǎng)絡(luò)通常留在布局布線階段進行時鐘樹綜合(CTS)。
set_dont_touch_network[get_clocksclk]
26除了create_clock命令,還有create_ge86I/O的約束set_input_delay指定相對于時鐘的信號輸入的到達時間。它用在輸入端口,指定在時鐘沿后數(shù)據(jù)穩(wěn)定所需的時間。如下圖所示,設(shè)置的輸入延遲的值為Tclk-q
+TM。27I/O的約束set_input_delay指定相對于時鐘87例:根據(jù)外部邏輯的延遲設(shè)定輸入延遲
#創(chuàng)建時鐘
create_clock–period20–nameClk[get_portsClk]
#將時鐘設(shè)置為dont_touch_network
set_dont_touch_network[get_clocksClk]
#設(shè)置輸入延遲,外部邏輯延遲最大值為7.4,加入-max選項 #用于setup分析(setup分析采用最慢的路徑延遲)
set_input_delay7.4–max–clockClk[get_portsA]
28例:根據(jù)外部邏輯的延遲設(shè)定輸入延遲88set_output_delay命令用于在輸出端口定義在時鐘邊沿來到之前數(shù)據(jù)有效所需時間。如下圖所示,設(shè)置輸出時間的值為TT
+Tsetup29set_output_delay命令用于在輸出端口定義在89例:設(shè)置輸出延遲
#創(chuàng)建時鐘
create_clock–period20–nameClock[get_portsClock]
#將時鐘設(shè)置為dont_touch_network
set_dont_touch_network[get_clocksClock]
#設(shè)置輸入延遲,外部邏輯setup要求為7.0,即為setup分析設(shè) #定輸出延遲
set_output_delay7.0–max–clockClock[get_portsB]30例:設(shè)置輸出延遲90DRC約束DRC即DesignRuleConstraints,一般由半導(dǎo)體廠商提供,在使用工藝庫中的邏輯單元時對其連接所強加的限制,主要有:max_capacitance,max_transition,max_fanout
#為當前設(shè)計設(shè)定最大電容值為0.5pf
set_max_capacitance0.5[current_design] #為當前設(shè)計設(shè)定最大轉(zhuǎn)換時間為2.0ns,在整個設(shè)計上施加最 #大轉(zhuǎn)換時間延遲可以幫助防止在上連線上出現(xiàn)長的轉(zhuǎn)換時間, #也可以約束單元的輸出端的轉(zhuǎn)換時間以減少其功耗
set_max_transition2.0[current_design]
#在當前設(shè)計的所有單元的輸出引腳上設(shè)置max_fanout
set_max_fanout10[current_design]在DC優(yōu)化時,DRC約束具有最高的優(yōu)先級,DC會先讓電路滿足DRC,然后才是時序約束。31DRC約束DRC即DesignRuleConstra91面積約束我們用set_max_area來設(shè)定面積約束。例如
set_max_area1000 set_max_area0面積的單位由工藝庫定義,可以是:
1.2輸入與非門 2.晶體管數(shù)目 3.平方微米設(shè)定了面積約束,DC會盡量優(yōu)化到所設(shè)定的面積;當沒有設(shè)定面積約束時,DC會做最小限度的面積優(yōu)化;若設(shè)定為0,則DC會對面積做優(yōu)化直到再繼續(xù)優(yōu)化也沒有大的效果,這樣可以使得面積優(yōu)化最小,但運行時間較長。可用命令report_area報告面積。32面積約束我們用set_max_area來設(shè)定面積約束。例92時序例外時序例外有以下幾種:1.Falsepaths。用set_false_path來設(shè)定路徑使得DC不對其進行時序分析,移除該路徑上的時序約束。通常異步電路的時鐘之間、邏輯上不存在的路徑等上設(shè)定為falstpath2.Minimumandmaximumpathdelayvalue。我們使用命令set_max_delay和set_min_delay來覆蓋默認的用于setup和hold約束的最大/最小延遲。3.Multicyclepat
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 育嬰大賽模擬題(附答案)
- 工業(yè)分析與檢驗?zāi)M練習(xí)題+答案
- 衛(wèi)生學(xué)模擬考試題(附參考答案)
- 手機拍攝培訓(xùn)課程
- 校本培訓(xùn)活動記錄表
- 【初中語文】《賣油翁》課件-2024-2025學(xué)年統(tǒng)編版語文七年級下冊
- epc工程廉政合同范例
- 2025年多功能地熱井口裝置項目合作計劃書
- 中糧配額合同范例
- 企業(yè)公司聘用合同范例
- 2025中國遠洋海運集團校園招聘1484人筆試參考題庫附帶答案詳解
- 2025年安徽商貿(mào)職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫一套
- 2025年皖西衛(wèi)生職業(yè)學(xué)院單招職業(yè)技能測試題庫審定版
- 2025年河南經(jīng)貿(mào)職業(yè)學(xué)院單招職業(yè)適應(yīng)性測試題庫帶答案
- unctad -全球投資趨勢監(jiān)測 第 48 期 Global Investment Trends Monitor,No. 48
- 2025年浙江機電職業(yè)技術(shù)學(xué)院高職單招職業(yè)技能測試近5年??及鎱⒖碱}庫含答案解析
- GA/T 2145-2024法庭科學(xué)涉火案件物證檢驗實驗室建設(shè)技術(shù)規(guī)范
- 2025年聚焦全國兩會知識競賽題庫及答案(共100題)
- 2024智能網(wǎng)聯(lián)汽車零部件行業(yè)研究報告-2025-01-智能網(wǎng)聯(lián)
- 2025年中國融通資產(chǎn)管理集團限公司春季招聘(511人)高頻重點提升(共500題)附帶答案詳解
- 急性心肌梗死的急救與護理
評論
0/150
提交評論