什么是邏輯綜合
邏輯綜合是將較高抽象級(jí)別的設(shè)計(jì)(RTL)轉(zhuǎn)化為可實(shí)現(xiàn)的較低的抽象層級(jí)的設(shè)計(jì)的過程。就是將RTL轉(zhuǎn)化成門極網(wǎng)表的過程。
邏輯綜合過程可以針對(duì)時(shí)序、面積、可測(cè)性(DFT)、功耗(power)、運(yùn)行時(shí)間(run time)進(jìn)行優(yōu)化。
邏輯綜合的輸入文件:RTL(file list)、物理庫、時(shí)序庫、邏輯綜合flow、時(shí)序約束(clock、IO、異步設(shè)置等)、環(huán)境參數(shù)設(shè)置、upf(low power flow)。
邏輯綜合的輸出文件:netlist、sdc、ppa report等。
邏輯綜合的EDA工具:Synopsys的DC(design compiler)和Cadence的genus是廣泛使用的邏輯綜合工具。
DC邏輯綜合分為三個(gè)主要過程:翻譯(Translation)+邏輯優(yōu)化(logic optimization)+門級(jí)映射(mapping)。
邏輯綜合的目標(biāo)
獲得門級(jí)網(wǎng)表;插入時(shí)鐘門控;邏輯優(yōu)化、插入DFT邏輯;保持RTL和Netlist之間的邏輯等效性。
邏輯綜合的輸入和輸出文件
輸入:RTL、library、Constraints、UPF(power intent);
輸出:Netlist、Report(Qor、Area、Timing等),UPF等
HDL文件生成和庫
HDL文件(以VHDL或Verilog或SystemVerilog編寫);HDL分區(qū)和coding style會(huì)影響邏輯綜合和邏輯優(yōu)化過程;library基于所使用的的工藝制程。
庫有不同的分類:目標(biāo)庫、單元庫、符號(hào)庫、合成庫(DesignWare)等。
讀取文件
有兩種方法可以將文件讀入DC,一種是使用Analyze和Elaborate命令;另一種是使用read_file命令。
Analyze命令做如下動(dòng)作
讀取HDL源文件并做語法檢查和Synopsys規(guī)則檢查;
在轉(zhuǎn)化成通用邏輯門之前,檢查文件本身的錯(cuò)誤;
以中間文件的形式創(chuàng)建HDL庫對(duì)象;
把中間文件存儲(chǔ)在define_design_lib命令指定的路徑。
Elaborate做如下動(dòng)作
將design轉(zhuǎn)化成GTECH形式;
允許更改source file中定義的parameter;
將design中的算術(shù)運(yùn)算符替換為Design ware組件;
Link design;
Read file命令執(zhí)行如下操作
執(zhí)行與Analyze和Elaborate相同的檢查動(dòng)作;
不為verilog創(chuàng)建中間文件;
為VHDL創(chuàng)建中間文件;
不能自動(dòng)完成link動(dòng)作,需要在read_file命令完成后,手動(dòng)去做link動(dòng)作;
可以讀取不同的文件格式,如VHDL、Verilog、System Verilog、ddc。
設(shè)計(jì)環(huán)境約束
讀入設(shè)計(jì)后,就需要定義設(shè)計(jì)環(huán)境約束設(shè)計(jì)約束。Design environment包括Operating Condition 、 Wire Load Model、System interface requirements。
Operating condition:包括工藝、電壓、溫度要求(PVT);可以使用set_operating _condition在dc_setup.tcl中做相關(guān)設(shè)置。
Wire Load Model:允許DC估算net長(zhǎng)度和扇出對(duì)電阻、電容、net area的影響;并使用相關(guān)估算值來計(jì)算net dealy;一般,DC會(huì)使用零線負(fù)載模型。
System interface:和design交互的外部邏輯的約束,包括輸入強(qiáng)度設(shè)置(set_driving_cell)、輸出電容負(fù)載(set_load)、輸出扇出負(fù)載等。
可以使用report_lib、report_design等命令查看已經(jīng)加載的Design environment設(shè)置。
Design rule constrain和Design optimization constrain
DC進(jìn)行design優(yōu)化時(shí),主要使用兩種類型的約束。
設(shè)計(jì)規(guī)則約束(Design rule constrain):邏輯庫定義了這種隱式約束,這些約束是design必須滿足的。默認(rèn)情況下,設(shè)計(jì)規(guī)則約束優(yōu)先級(jí)高于設(shè)計(jì)優(yōu)化約束。
設(shè)計(jì)優(yōu)化約束(Design optimization constrain):這是顯式約束,DC會(huì)嘗試滿足這些約束,但不會(huì)以違反設(shè)計(jì)規(guī)則約束為代價(jià)。
DC會(huì)試圖同時(shí)滿足兩種約束,但設(shè)計(jì)規(guī)則約束優(yōu)先。
默認(rèn)情況下,DC根據(jù)重要性,按以下順序考慮各種約束:
設(shè)計(jì)規(guī)則約束:
Connection class、multiple port nets、maximum transition time、maximum fanout、maximum capacitance。
設(shè)計(jì)優(yōu)化約束:
Maximum delay、minimum delay、maximum power、maximum area。
時(shí)序約束
時(shí)序約束需包括:時(shí)鐘、IO時(shí)序要求、組合邏輯delay要求、false path設(shè)置等。
相關(guān)鏈接:
design中的timing path之R2R
design中的timing path之I2O
design中的timing path之 R2O
Design中的timing path之 I2R