專用集成電路設(shè)計(jì)方法講義4_邏輯綜合.ppt_第1頁(yè)
專用集成電路設(shè)計(jì)方法講義4_邏輯綜合.ppt_第2頁(yè)
專用集成電路設(shè)計(jì)方法講義4_邏輯綜合.ppt_第3頁(yè)
專用集成電路設(shè)計(jì)方法講義4_邏輯綜合.ppt_第4頁(yè)
專用集成電路設(shè)計(jì)方法講義4_邏輯綜合.ppt_第5頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余86頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、1,專用集成電路設(shè)計(jì)方法第4部分 邏輯綜合,2008-11-18,2,內(nèi)容,邏輯綜合概述 綜合環(huán)境的設(shè)置 DC綜合流程簡(jiǎn)介 時(shí)序分析基礎(chǔ) 邏輯綜合中的時(shí)序約束設(shè)計(jì) DC的使用方式,3,什么是邏輯綜合?,定義:根據(jù)一個(gè)系統(tǒng)功能和性能的要求,在一個(gè)包含眾多結(jié)構(gòu)、功能、性能均為已知的邏輯元件的單元庫(kù)的支持下,尋找一個(gè)邏輯網(wǎng)絡(luò)結(jié)構(gòu)的最佳實(shí)現(xiàn)方案的設(shè)計(jì)方法。,4,邏輯綜合的基本步驟 (1),三個(gè)步驟: 翻譯 (Translation) 優(yōu)化 (Optimization) 映射 (Mapping),5,邏輯綜合的基本步驟 (2),翻譯 (Translation) 把電路的HDL描述轉(zhuǎn)化為與工藝無(wú)關(guān)的功能塊

2、組成的邏輯電路的過(guò)程 讀入電路的RTL級(jí)描述,將語(yǔ)言翻譯成每條語(yǔ)句所對(duì)應(yīng)的功能塊以及功能塊之間的拓?fù)浣Y(jié)構(gòu) 這一過(guò)程的結(jié)果是在綜合器內(nèi)部生成電路的布爾函數(shù)的表達(dá)式,不做任何的邏輯重組和優(yōu)化,6,邏輯綜合的基本步驟 (3),優(yōu)化 (Optimization) 基于所施加的一定時(shí)序和面積的約束條件,綜合器按照一定的算法對(duì)轉(zhuǎn)譯結(jié)果作邏輯重組和優(yōu)化。 映射 (Mapping) 根據(jù)所施加的一定的時(shí)序和面積的約束條件,綜合器從目標(biāo)工藝庫(kù)中搜索符合條件的單元來(lái)構(gòu)成實(shí)際電路 這時(shí)得到的電路包含了具體的制造工藝參數(shù)。,7,綜合工具,FPGA綜合 Synplicity: Synplify, Amplify, Ce

3、rtify Mentor Graphics: LeonardoSpectrum Synopsys: FPGA Express, FPGA Compiler Xilinx: XST ASIC綜合 Synopsys: Design Compiler,8,Design Compiler的綜合過(guò)程,RTL design entry Environment constraints Design and clock constraints Compile design into mapped gates Optimize design Analyze the synthesis results and d

4、ebug potential problems Report constraints Save design netlist,9,綜合技術(shù)帶來(lái)的好處,設(shè)計(jì)師可以采用更高層次的設(shè)計(jì)方法 由于邏輯綜合工具的使用,高層次的設(shè)計(jì)可以很快地轉(zhuǎn)換為門級(jí)電路設(shè)計(jì) 邏輯綜合技術(shù)使與工藝無(wú)關(guān)的設(shè)計(jì)成為可能 綜合工具可以按照約束設(shè)置對(duì)設(shè)計(jì)進(jìn)行自動(dòng)優(yōu)化,要得到有不同性能指標(biāo)的結(jié)果,有時(shí)候僅僅需要修改綜合時(shí)的約束設(shè)置,10,對(duì)工程師的要求,盡管邏輯綜合為數(shù)字設(shè)計(jì)帶來(lái)了顯而易見(jiàn)的好處,使設(shè)計(jì)者再也不用去手工“搭建”自己的產(chǎn)品,但并不等于設(shè)計(jì)者可以對(duì)電路的具體實(shí)現(xiàn)毫不關(guān)心。 為了綜合出滿足規(guī)格定義的產(chǎn)品,工程師在進(jìn)行代碼

5、編寫時(shí)必須考慮代碼的可綜合性,良好的代碼風(fēng)格可以得到性能更好的設(shè)計(jì)。 邏輯綜合本身就是一個(gè)復(fù)雜的過(guò)程,環(huán)境和約束的設(shè)定、測(cè)試和時(shí)序問(wèn)題的分析和解決都需要設(shè)計(jì)工程師具有專門的知識(shí)和技能。,11,內(nèi)容,邏輯綜合概述 綜合環(huán)境的設(shè)置 DC綜合流程簡(jiǎn)介 時(shí)序分析基礎(chǔ) 邏輯綜合中的時(shí)序約束設(shè)計(jì) DC的使用方式,12,啟動(dòng)文件,Synopsys DC需要一個(gè)啟動(dòng)文件來(lái)定義工藝庫(kù)的路徑和其他用于邏輯綜合的參數(shù) 文件名必須為“.synopsys_dc.setup”,通過(guò)向相關(guān)環(huán)境變量賦值,定義技術(shù)庫(kù)的位置及參數(shù) DC在啟動(dòng)時(shí),按下列順序讀入啟動(dòng)文件 Synopsys installation director

6、y (用于存放Synopsys技術(shù)獨(dú)立庫(kù)及保存一些公共變量,不包含設(shè)計(jì)相關(guān)的數(shù)據(jù)) Users home director (保存一些對(duì)單個(gè)用戶有效的變量) Project working directory (保存與當(dāng)前設(shè)計(jì)直接相關(guān)的變量) 按以上順序依次讀取setup文件,最后一個(gè)讀取的setup文件將覆蓋前面讀取的setup文件,13,工藝庫(kù),工藝庫(kù):生產(chǎn)線所提供的全部標(biāo)準(zhǔn)器件模型 由于不同生產(chǎn)線的加工環(huán)境不同,各種標(biāo)準(zhǔn)器件(如與非門、或非門等)的工業(yè)參數(shù)會(huì)有差異,因此,每個(gè)生產(chǎn)線都必須向市場(chǎng)提供自己的庫(kù)。換句話說(shuō),設(shè)計(jì)單位準(zhǔn)備在哪條生產(chǎn)線上投片就必須使用該生產(chǎn)線的庫(kù)進(jìn)行綜合。不同工藝線

7、的工藝技術(shù)是不同的,如0.25微米技術(shù)和0.13微米技術(shù),因此即使同一個(gè)工廠的不同工藝線使用的工藝庫(kù)也是完全不同的。 啟動(dòng)文件必須定義與工藝庫(kù)相關(guān)的變量 search_path: 搜索路徑,指明庫(kù)文件的位置 target_library: 目標(biāo)庫(kù) link_ library: 鏈接庫(kù) symbol_library: 符號(hào)庫(kù)(顯示電路圖,用于標(biāo)識(shí)器件、單元),14,目標(biāo)庫(kù) (Target library),目標(biāo)庫(kù):將RTL級(jí)的HDL映射到門級(jí)時(shí)所需要的標(biāo)準(zhǔn)單元綜合庫(kù),它是由芯片制造商 (Foundry)提供的,包含了物理信息的單元模型。 通常芯片制造商提供的基本電路有:與非、或非、非門等基本的邏

8、輯單元單元;還有選擇器、與或非、或非與等較復(fù)雜的組合邏 輯,以及鎖存器和觸發(fā)器等時(shí)序單元。 Target library的文件名應(yīng)包含在link library的文件清單中,用于DC讀取門級(jí)網(wǎng)表。 通常target_library定義為標(biāo)準(zhǔn)單元的db格式的庫(kù)文件。,15,連接庫(kù) (Link library),連接庫(kù):可以是同target libaray一樣的單元庫(kù),也可以是已經(jīng)綜合到門級(jí)的底層模塊的設(shè)計(jì)。 作用如下:自底向上 (bottom-up)的綜合過(guò)程中,上一層的設(shè)計(jì)調(diào)用底層已經(jīng)綜合的模塊時(shí),將從link_library中尋找并連接起來(lái)。 link_library定義為:標(biāo)準(zhǔn)單元的db格

9、式的庫(kù)文件,pad的db格式的庫(kù)文件,再加上RAM、ROM等宏模塊的庫(kù)文件等。 綜合工具在綜合時(shí)不再綜合生成pad、RAM和ROM,而是直接實(shí)例化到門級(jí)網(wǎng)表中。 target_library是link_library的子集。,16,target_library vs. link_library,目標(biāo)庫(kù) (target_library):是DC在mapping時(shí)將設(shè)計(jì)映射到特定工藝所使用的庫(kù),就是使用目標(biāo)庫(kù)中的元件綜合成設(shè)計(jì)的門級(jí)網(wǎng)表。 連接庫(kù) (link_library):是提供門級(jí)網(wǎng)表實(shí)例化的基本單元,也就是門級(jí)網(wǎng)表實(shí)例化的元件或單元都來(lái)自該庫(kù)。連接庫(kù)定義為標(biāo)準(zhǔn)單元的db格式的庫(kù)文件加上pa

10、d db格式的庫(kù)文件,加上ROM,RAM等宏單元庫(kù)文件”。 簡(jiǎn)單地講,所有用到的庫(kù)都要放到link_library,因?yàn)镈C自動(dòng)到那里去找;只有作綜合用的庫(kù)放在target_library中,象ROM, PAD等不用綜合的就不要放進(jìn)去了。,17,設(shè)計(jì)工具庫(kù) (DesignWare Library),設(shè)計(jì)工具庫(kù):Synopsys公司提供的知識(shí)產(chǎn)權(quán)(IP, Intellectual Property)庫(kù)。 舉例 算術(shù)邏輯單元 (ALU) AMBA總線構(gòu)造 (Bus Fabric)、外圍設(shè)備 (Peripherals) 內(nèi)存包(Memory portfolio) 通用總線和標(biāo)準(zhǔn)I/O接口(USB,

11、PCI, PCI Express) 微控制器 (例如8051和6811) 微處理器和DSP核心,18,GTECH庫(kù),當(dāng)DC將源代碼讀入時(shí),設(shè)計(jì)轉(zhuǎn)化為一種中間格式,由GTECH庫(kù)中的組件和設(shè)計(jì)工具庫(kù)構(gòu)成。 GTECH工藝庫(kù)和設(shè)計(jì)工具庫(kù)一樣,是工藝無(wú)關(guān)的,幫助我們開(kāi)發(fā)與工藝無(wú)關(guān)的組件。 GTECH工藝庫(kù)包含在文件gtech.db中,19,setup文件舉例,.synopsys_dc.setup,set company ASIC Design Co. set designer Designer set technology TSMC 0.25um set target_library tcb773s

12、tc.db set link_library * tcb773stc.db set symbol_library tcb773s.sdb set synthetic_library standard.sldb dw_foundation.sldb set link_library $link_library $synthetic_library # Define DC search path set search_path ././TSMC/lib ./scripts ./unmapped ./mapped $search_path alias h history alias rc repor

13、t_constraint -all_violators alias rt report_timing # specify directory for intermediate files from analyze define_design_lib DEFAULT -path ./analyzed,其它環(huán)境變量的設(shè)置參看DC的操作手冊(cè)。,20,內(nèi)容,邏輯綜合概述 綜合環(huán)境的設(shè)置 DC綜合流程簡(jiǎn)介 時(shí)序分析基礎(chǔ) 邏輯綜合中的時(shí)序約束設(shè)計(jì) DC的使用方式,21,設(shè)計(jì)輸入,DC提供了下面兩種方式讀入設(shè)計(jì): analyze & elaborate命令 analyze命令可以分析、翻譯RTL代碼,并將中

14、間結(jié)果存入指定的庫(kù)中 elaborate命令用于為設(shè)計(jì)建立一個(gè)結(jié)構(gòu)級(jí)的,與工藝無(wú)關(guān)的描述,為下一步的工藝映射做好準(zhǔn)備 read命令 read一步完成analyze & elaborate的工作,read命令和analyze & elaborate命令的不同之處,22,連接 (Link),功能:將設(shè)計(jì)中調(diào)用的子模塊與連接庫(kù)中定義的模塊建立對(duì)應(yīng)關(guān)系 命令:link 鏈接可以由link命令顯式完成,也可在后面步驟的compile命令隱式完成 建議每次設(shè)計(jì)輸入以后用link命令執(zhí)行一次鏈接,23,設(shè)定約束條件 (Constraints),約束條件分兩類: 環(huán)境約束條件 設(shè)計(jì)約束條件 綜合環(huán)境包括工藝、

15、電壓和溫度范圍,必需的驅(qū)動(dòng)強(qiáng)度,驅(qū)動(dòng)類型等,見(jiàn)右圖,24,設(shè)置工作條件 (1),命令:set_operating_conditions 綜合庫(kù)包括最差、典型和最好三種條件。 在綜合階段使用最差條件,以最大建立時(shí)間 (setup time)來(lái)優(yōu)化設(shè)計(jì)。使用最好條件來(lái)清除保持時(shí)間 (hold time)的違規(guī)。 一般的工藝庫(kù)包括: max (slow)、typical、min (fast)庫(kù)。,25,設(shè)置工作條件 (2),工藝 (Process)偏差 在流片階段,wafer在流水線上要經(jīng)過(guò)幾十道工序,這些工序在控制上會(huì)有一些偏差,這些偏差都會(huì)導(dǎo)致器件的性能的變化。一般在邏輯電路上表現(xiàn)為驅(qū)動(dòng)能力,或

16、者信號(hào)延時(shí)的變化。,26,設(shè)置工作條件 (3),溫度 (Temperature) 當(dāng)溫度變化時(shí),會(huì)導(dǎo)致溝道電流強(qiáng)度的變化,從而影響邏輯電路的驅(qū)動(dòng)能力和信號(hào)延時(shí)。 電壓 (Voltage) 電壓比較高時(shí),邏輯電路單元的驅(qū)動(dòng)能力增 強(qiáng),信號(hào)延時(shí)變小從而可以運(yùn)行在比較高的工作頻率下。 命令舉例: dc_shell-t set_operating_conditions WORST,27,設(shè)定線負(fù)載模型 (Wire Load Model),命令:set_wire_load_model (連)線負(fù)載模型估計(jì)了線長(zhǎng)和扇出對(duì)于電阻、電容和線的面積的影響程度。 半導(dǎo)體廠家根據(jù)特定生產(chǎn)線的統(tǒng)計(jì)信息開(kāi)發(fā)線負(fù)載模型。

17、線負(fù)載模型包括面積、電容和電阻每單位長(zhǎng)度的系數(shù)和一個(gè)扇出到長(zhǎng)度的表格,用來(lái)估算線長(zhǎng) (扇出的數(shù)目決定了名義上的長(zhǎng)度)。 如果沒(méi)有反標(biāo)的線延遲,DC用線負(fù)載模型來(lái)預(yù)測(cè)線長(zhǎng)和延遲。 DC根據(jù)下列因素來(lái)決定設(shè)計(jì)應(yīng)用哪種線形負(fù)載模型 (按先后順序排列):用戶自定義、根據(jù)設(shè)計(jì)面積自動(dòng)選擇、工藝庫(kù)里的默認(rèn)值。 例子:dc_shell-t set_wire_load_model name MEDIUM,28,設(shè)定線負(fù)載模式 (Wire Load Mode),命令:set_wire_load_mode DC在決定穿越層次界限的連線所采用的線負(fù)載模型時(shí)支持三種模式: 包圍 (Enclosed) 分段 (Segm

18、ented) 頂部 (Top),命令舉例: dc_shell set_wire_load_mode enclosed,29,設(shè)定輸入端口的驅(qū)動(dòng),命令:set_driving_cell 為了準(zhǔn)確計(jì)算輸入電路的時(shí)序,DC需要知道到達(dá)輸入端口的信號(hào)的轉(zhuǎn)換時(shí)間 (transition time). 默認(rèn)情況下,DC假設(shè)外部信號(hào)的轉(zhuǎn)換時(shí)間為0;也可以通過(guò)set_driving_cell在輸入端口設(shè)置一個(gè)驅(qū)動(dòng)單元。,例子: dc_shell-t set_drive 1.5 I1 I2 dc_shell-t set_driving_cell -cell IV I3,30,設(shè)定輸入和輸出端口負(fù)載,利用端口負(fù)載

19、,DC可以為輸出端口選擇適當(dāng)大小的驅(qū)動(dòng)能力,也可以用來(lái)計(jì)算輸入端口的延時(shí)。 如果負(fù)載取得過(guò)小,下級(jí)電路無(wú)法正常工作,負(fù)載取得過(guò)大,會(huì)增大上一電路的難度。 在缺省情況下,DC假定輸入輸出端口的容性負(fù)載為0??梢杂胹et_load命令設(shè)定輸入、輸出端口的容性負(fù)載值。,31,設(shè)定輸出端口的扇出負(fù)載,在DC中可以用set_fanout_load命令來(lái)設(shè)定輸出端口外部的扇出負(fù)載總和。 扇出負(fù)載不同于負(fù)載,它是一個(gè)無(wú)量綱的數(shù)值。 注:負(fù)載則是指電容值的大小。,32,設(shè)計(jì)約束條件,兩種設(shè)計(jì)約束 設(shè)計(jì)規(guī)則約束 設(shè)計(jì)優(yōu)化約束 設(shè)計(jì)規(guī)則約束 反映了工藝方面的限制條件 由工藝庫(kù)提供 設(shè)計(jì)優(yōu)化約束 定義了時(shí)序上和面積

20、上的優(yōu)化目標(biāo),33,設(shè)計(jì)規(guī)則約束 (1),設(shè)計(jì)規(guī)則的約束設(shè)置要限定在工藝庫(kù)中器件的 參數(shù)范圍之內(nèi)。 從優(yōu)化的優(yōu)先級(jí)來(lái)說(shuō),設(shè)計(jì)規(guī)則的約束比其它的相關(guān)約束要高。 在綜合手段的實(shí)現(xiàn)中,設(shè)計(jì)規(guī)則的設(shè)置是很有講究的。設(shè)計(jì)規(guī)則涉及到一些物理參數(shù)的設(shè)置,比如電容、0-1(1-0)跳變時(shí)間、扇出。 這些物理參數(shù)之間是相互聯(lián)系、相互影響的。 例如,如果電容過(guò)大,導(dǎo)致充放電時(shí)間過(guò)長(zhǎng),也就是0-1(1-0)跳變時(shí)間過(guò)長(zhǎng);如果扇出過(guò)大,又會(huì)導(dǎo)致電容過(guò)大。,34,設(shè)計(jì)規(guī)則約束 (2),有三種設(shè)計(jì)規(guī)則的約束: 最大電容 (max capacitance) 最大扇出 (max fanout) 最大跳變 (max trans

21、ition) 三者相互聯(lián)系,相互影響,用來(lái)控制設(shè)計(jì)中的緩沖 (buffering) 設(shè)定最大電容值命令:set_max_capacitance 最大電容(max capacitance)的約束提供了 一種直接的方式,來(lái)直接控制設(shè)計(jì)中線網(wǎng)(net)上的電容。 在編譯過(guò)程中,綜合器確保最大電容沒(méi)有違規(guī)(violation),DC把線負(fù)載的電容和與連線相關(guān)的pin的電容相加計(jì)算輸出端口的電容,并且把它與最大電容的值比較,確保小于最大電容的值。,35,設(shè)計(jì)規(guī)則約束 (3),設(shè)定最大扇出命令:set_max_fanout 最大扇出 (max fanout)是對(duì)端口可以驅(qū)動(dòng)的負(fù)載數(shù)目的估量。,輸出端口Z驅(qū)

22、動(dòng)2個(gè)反向器、一個(gè)輸出端口、一個(gè)或非門。每個(gè)器件的輸入端均具有fanout_load的屬性,該屬性由反向器所在的工藝庫(kù)的工藝來(lái)決定它的參數(shù)范圍。,36,設(shè)計(jì)規(guī)則約束 (4),設(shè)定最大跳變命令:set_max_transition 最大跳變 (max transition)指的是0-1 (1-0)所花費(fèi)的最長(zhǎng)時(shí)間。 產(chǎn)生機(jī)制很簡(jiǎn)單:電容 (C)和電阻 (R)的乘積。但是如何對(duì)電容和電阻進(jìn)行建模,快速獲得合理的數(shù)值,卻很困難。 最大跳變 (max transition)的定義:引腳的驅(qū)動(dòng)強(qiáng)度乘以它驅(qū)動(dòng)的連線上所有電容負(fù)載的總和的最大值,37,設(shè)定面積約束,綜合過(guò)程進(jìn)行優(yōu)化的依據(jù)之一 一旦確定了面積

23、約束條件,在綜合時(shí),就將該條件通知綜合工具,綜合工具利用各種可能的規(guī)則和算法,盡可能地減少該設(shè)計(jì)的面積 通過(guò)命令set_max_area來(lái)給設(shè)計(jì)設(shè)置約束 在實(shí)際綜合中,set_max_area 0,其意義在于在滿足時(shí)序的前期下,使面積達(dá)到最小,38,施加時(shí)序約束,根據(jù)網(wǎng)表中每個(gè)連接元件的延時(shí)模型,對(duì)節(jié)點(diǎn)進(jìn)行定時(shí)分析,給出最好和最壞的延時(shí)情況,然后檢查電路所有的延時(shí)約束條件是否滿足要求。如果符合時(shí)序約束要求,就可以進(jìn)行工藝映射,進(jìn)行器件實(shí)現(xiàn)了。 時(shí)序約束的設(shè)計(jì)是邏輯綜合的重點(diǎn)和難點(diǎn),將詳細(xì)講解。,39,編譯 (1),命令:compile 編譯策略: Top-down hierarchical c

24、ompile Bottom-up compile Top-down hierarchical compile 將整個(gè)設(shè)計(jì)作為一個(gè)模塊進(jìn)行編譯,僅需頂層約束。 對(duì)一些設(shè)計(jì)如:?jiǎn)螘r(shí)鐘的設(shè)計(jì),很適用。允許一次編譯大于100K gate的設(shè)計(jì)。 對(duì)于大型設(shè)計(jì),可將子模塊合并成一組,然后展開(kāi)進(jìn)行編譯,可以改善時(shí)序。 優(yōu)點(diǎn): 僅需top level的約束 將整個(gè)設(shè)計(jì)作為整體優(yōu)化,可獲得較好的結(jié)果 缺點(diǎn): 編譯時(shí)間長(zhǎng) 子模塊的改變需要整個(gè)設(shè)計(jì)再綜合 如果設(shè)計(jì)包含多個(gè)時(shí)鐘或生成時(shí)鐘邏輯,則不能很好執(zhí)行,40,編譯 (2),Bottom-up compile 各個(gè)模塊可獨(dú)立編譯,適合于劃分合理、各個(gè)模塊的時(shí)序約

25、束能夠被明確定義的設(shè)計(jì) 優(yōu)點(diǎn): 每一個(gè)子模塊都由自己的腳本 (scripts)文件,可以靈活修改 子模塊的改變不需要整個(gè)設(shè)計(jì)全部重新綜合 不需要關(guān)心設(shè)計(jì)類型,如:多時(shí)鐘或產(chǎn)生時(shí)鐘 一般來(lái)說(shuō),可獲得好的結(jié)果; 缺點(diǎn): 需要更新維護(hù)多個(gè)腳本(scripts)文件 頂層的關(guān)鍵路徑也許在子模塊并非關(guān)鍵路徑,41,時(shí)序分析,編譯 (compile) 結(jié)束后,通過(guò)產(chǎn)生的DC時(shí)序報(bào)告來(lái)具體分析診斷時(shí)序的違規(guī)(violations) 時(shí)序報(bào)告包括四個(gè)部分:路徑信息部分、路徑延時(shí)部分、路徑所要求時(shí)間部分、計(jì)算總結(jié)部分,42,內(nèi)容,邏輯綜合概述 綜合環(huán)境的設(shè)置 DC綜合流程簡(jiǎn)介 時(shí)序分析基礎(chǔ) 邏輯綜合中的時(shí)序約束

26、設(shè)計(jì) DC的使用方式,43,數(shù)字系統(tǒng)中的時(shí)序問(wèn)題,時(shí)序問(wèn)題 數(shù)字系統(tǒng)中的開(kāi)關(guān)事件(邏輯運(yùn)算、數(shù)據(jù)存儲(chǔ),等等)的發(fā)生在時(shí)間上具有先后順序 必須使系統(tǒng)中所有的事件按預(yù)先確定的次序正確執(zhí)行 同步系統(tǒng) 產(chǎn)生時(shí)鐘信號(hào)(clocking),用以協(xié)調(diào)把數(shù)據(jù)寫入存儲(chǔ)元件的時(shí)間 異步系統(tǒng) 完全取消本地時(shí)鐘 采用自定時(shí)的異步電路,通過(guò)握手協(xié)議實(shí)現(xiàn)模塊間正確的操作次序,44,時(shí)鐘的非理想情況,時(shí)鐘偏差(Clock Skew) 定義:空間上兩個(gè)不同點(diǎn)處、時(shí)序上等同的兩個(gè)時(shí)鐘沿在到達(dá)時(shí)間上的偏差 由時(shí)鐘路徑上的失配及時(shí)鐘負(fù)載上的差別引起,取決于數(shù)據(jù)與時(shí)鐘布線的方向,時(shí)鐘偏差可正可負(fù) 具有確定性 (從一個(gè)周期至下一個(gè)周期

27、是時(shí)不變的) 時(shí)鐘偏差不會(huì)引起周期的變化,只會(huì)引起相移 (相位偏移) 時(shí)鐘抖動(dòng) (Clock Jitter) 定義:空間上同一個(gè)點(diǎn)處時(shí)鐘周期隨時(shí)間的變化 抖動(dòng)是一個(gè)平均值為零的隨機(jī)變量 絕對(duì)抖動(dòng) (tjitter):某點(diǎn)處一個(gè)時(shí)鐘邊沿相對(duì)于理想?yún)⒄諘r(shí)鐘邊沿在最壞情況下偏差的絕對(duì)值,j點(diǎn),i點(diǎn),45,時(shí)鐘不確定性的來(lái)源,46,時(shí)序參數(shù),時(shí)鐘周期:T 建立(set-up)時(shí)間:tsu 保持(hold)時(shí)間:thold 時(shí)鐘至輸出(clk-q)時(shí)間:tclk-q (tclk-q,min , tclk-q,max) 數(shù)據(jù)至輸出(d-q)時(shí)間:td-q (td-q,min , td-q,max),47,

28、建立時(shí)間和保持時(shí)間,建立時(shí)間 (Setup Time):指時(shí)鐘信號(hào)的有效沿到來(lái)之前,數(shù)據(jù)輸入信號(hào)必須到達(dá)的最小時(shí)間長(zhǎng)度,保證該單元正確工作。 保持時(shí)間 (Hold Time):指時(shí)鐘信號(hào)的有效沿或其它特定信號(hào)到來(lái)之后,數(shù)據(jù)輸入信號(hào)必須保持穩(wěn)定的最小時(shí)間長(zhǎng)度,保證該單元正確工作。,48,存在時(shí)鐘偏差時(shí)的系統(tǒng)時(shí)序(1),約束條件1:R2的輸入數(shù)據(jù)必須在時(shí)鐘的有效沿之前保持穩(wěn)定,因此要求:,據(jù)此可得:,49,存在時(shí)鐘偏差時(shí)的系統(tǒng)時(shí)序(2),約束條件2:避免R2的前后兩次輸入信號(hào)出現(xiàn)競(jìng)爭(zhēng),因此要求:,即:,50,正時(shí)鐘偏差(Positive Skew),發(fā)送邊沿 (launch edge)在接收邊沿

29、(capture edge)之前到達(dá),正的時(shí)鐘偏差使得系統(tǒng)有可能提高時(shí)鐘頻率,但正的時(shí)鐘偏差可能引起信號(hào)競(jìng)爭(zhēng),51,負(fù)時(shí)鐘偏差(Negative Skew),接收邊沿 (launch edge)在發(fā)送邊沿 (capture edge)之前到達(dá),負(fù)的時(shí)鐘偏差會(huì)降低系統(tǒng)的時(shí)鐘性能,由于邊沿2領(lǐng)先于邊沿1,因此不會(huì)發(fā)生信號(hào)競(jìng)爭(zhēng),52,時(shí)鐘分布網(wǎng)絡(luò),時(shí)鐘分布已成為主要的設(shè)計(jì)問(wèn)題 日益增大的芯片尺寸,不斷提高的時(shí)鐘頻率 采用逐級(jí)增大的緩沖器來(lái)驅(qū)動(dòng)全局時(shí)鐘,供給所有模塊 采用分布式樹(shù)結(jié)構(gòu) 二叉樹(shù)或H樹(shù) 使每個(gè)模塊可以得到完好的時(shí)鐘,能與模塊的延時(shí)很好地匹配,或者使時(shí)鐘的分配可以安排得使任何RC延時(shí)發(fā)生在S

30、afe Slew的方向上(如與數(shù)據(jù)流的方向相反) H樹(shù) 由于所有的子功能塊與時(shí)鐘源是等距離的,因此對(duì)于每一個(gè)子功能塊,時(shí)鐘信號(hào)被延遲一個(gè)相同的數(shù)量,二叉樹(shù),逐級(jí)增大的緩沖器,H 樹(shù),53,內(nèi)容,邏輯綜合概述 綜合環(huán)境的設(shè)置 DC綜合流程簡(jiǎn)介 時(shí)序分析基礎(chǔ) 邏輯綜合中的時(shí)序約束設(shè)計(jì) DC的使用方式,54,定義時(shí)鐘(1),定義時(shí)鐘的周期與波形 (占空比) 命令格式:create_clock -name clock_name -add source_objects -period period_value -waveform edge_list -period選項(xiàng)指定時(shí)鐘周期,單位ns -wavef

31、orm選項(xiàng)指定時(shí)鐘邊沿的開(kāi)始位置,單位ns 例1:在端口clk上定義一個(gè)周期為20 ns、占空比為40%的時(shí)鐘信號(hào) dc_shell-t create_clock -period 20 -waveform 0 8 clk 例2:在端口clk上定義一個(gè)頻率為25 MHz、占空比為50%的時(shí)鐘信號(hào) dc_shell-t create_clock clk -period 40,55,定義時(shí)鐘(2),指定時(shí)鐘網(wǎng)絡(luò)的延時(shí) 采用set_clock_uncertainty和set_clock_latency命令對(duì)時(shí)鐘樹(shù)的延時(shí)量進(jìn)行建模 不確定性(uncertainty):兩個(gè)寄存器時(shí)鐘引腳之間的相對(duì)延時(shí),即

32、clock skew 延時(shí)(latency):寄存器時(shí)鐘引腳與時(shí)鐘源之間的絕對(duì)延時(shí) 例1:為時(shí)鐘信號(hào)clk設(shè)置1.2 ns的網(wǎng)絡(luò)延遲 dc_shell-t set_clock_latency 1.2 clk 例2:為時(shí)鐘信號(hào)clk設(shè)置0.8 ns的源延遲 dc_shell-t set_clock_latency 0.8 -source clk 例3:為時(shí)鐘信號(hào)clk設(shè)置0.2 ns的不確定性偏差 dc_shell-t set_clock_uncertainty 0.2 clk 例4:在跳變沿兩側(cè)為時(shí)鐘信號(hào)clk各設(shè)置0.2 ns的不確定性偏差 dc_shell-t set_clock_unce

33、rtainty -setup 0.2 clk dc_shell-t set_clock_uncertainty -hold 0.2 clk,時(shí)鐘樹(shù)(網(wǎng)絡(luò)),56,定義時(shí)鐘(3),如果設(shè)計(jì)中有內(nèi)部產(chǎn)生的時(shí)鐘,如時(shí)鐘分頻器或者倍頻器,定義時(shí)鐘時(shí)要用到命令create_generated_clock 命令格式:create_generated_clock name clock_name source clock_source divide_by factor | -multiply_by factor 定義了時(shí)鐘以后,要對(duì)時(shí)鐘設(shè)置set_dont_touch屬性,禁止往時(shí)鐘上加入緩沖 相應(yīng)的命令是:

34、set_dont_touch_network get_clocks Clk 原因:綜合時(shí),一個(gè)時(shí)鐘源驅(qū)動(dòng)了很多門,由于所帶的負(fù)載太多,時(shí)鐘信號(hào)的邊緣會(huì)很差。如果為時(shí)鐘插入緩沖 (Buffer)之后,時(shí)鐘的驅(qū)動(dòng)能力會(huì)增強(qiáng),而且保持時(shí)鐘信號(hào)的邊緣陡峭,但是這樣做會(huì)使得在不同路徑上出現(xiàn)時(shí)鐘偏移,從而帶來(lái)時(shí)序上的問(wèn)題。因此在綜合時(shí),將clock看作是理想的時(shí)鐘,禁止加緩沖。,57,指定I/O的時(shí)序要求,定義了時(shí)鐘之后,兩個(gè)相鄰寄存器之間的時(shí)間路徑已經(jīng)被約束默認(rèn)為一個(gè)時(shí)鐘周期 輸入端口的時(shí)序約束 如果已知輸入端口的外部電路的延遲,就能計(jì)算留給輸入端內(nèi)部邏輯的最大允許延遲 DC命令:set_input_d

35、elay 輸出端口的時(shí)序約束 指定了輸出端口外部電路的延遲,DC就能得到留給輸出端口的最大延遲 DC命令:set_output_delay,58,設(shè)定輸入延遲 (1),set_input_delay 設(shè)置輸入端口的輸入延遲,可規(guī)定時(shí)鐘沿之后數(shù)據(jù)據(jù)需要穩(wěn)定的時(shí)間,作為輸入信號(hào)的建立或保持時(shí)間需求 定義信號(hào)相對(duì)于時(shí)鐘的到達(dá)時(shí)間 (指一個(gè)信號(hào)在時(shí)鐘沿之后多少時(shí)間到達(dá)) 規(guī)定輸入信號(hào)在時(shí)鐘有效沿后多長(zhǎng)時(shí)間后才保持穩(wěn)定(或說(shuō)數(shù)據(jù)有效),對(duì)輸入路徑進(jìn)行時(shí)間約束,Td + TM,59,設(shè)定輸入延遲 (2),下圖說(shuō)明了輸入延遲的定義和時(shí)序關(guān)系,60,設(shè)定輸出延遲,set_output_delay 輸出信號(hào)在時(shí)

36、鐘有效沿前多長(zhǎng)時(shí)間開(kāi)始保持穩(wěn)定(或者說(shuō)數(shù)據(jù)有效),對(duì)輸出路徑進(jìn)行時(shí)間約束,61,設(shè)定I/O延遲,舉例: dc_shell-t set_input_delay 20 -clock CLK DATA_IN dc_shell-t set_output_delay 15 -clock CLK DATA_OUT,在工程設(shè)計(jì)中,input delay和output delay通常取時(shí)鐘周期的40 - 60%,62,指定組合邏輯通路的延時(shí)要求,采用set_max_delay和set_min_delay命令來(lái)定義某條組合邏輯路徑 (不含時(shí)序單元)的最大和最小延時(shí) 例1:RESET信號(hào)的延時(shí)不能超過(guò)5 ns d

37、c_shell-t set_max_delay 5 -from RESET 例2:從IN2至OUT2的路徑的最小延時(shí)是10 ns dc_shell-t set_min_delay 10 -from IN2 -to OUT2,63,說(shuō)明時(shí)序例外情況,應(yīng)用于異步路徑或不遵循單時(shí)鐘時(shí)序的路徑 用set_false_path命令指定設(shè)計(jì)中的假路徑,從而在時(shí)序優(yōu)化時(shí)不考慮它們,U1配置寄存器,可以從雙向總線(DATA)對(duì)其進(jìn)行讀寫,由于不允許同時(shí)進(jìn)行讀寫,U1/GU1/D是一條功能上的假路徑,dc_shell-t set_false_path -from U1/G -to U1/D,64,時(shí)序約束設(shè)計(jì)舉

38、例,create_clock -period 20 -waveform 5 15 clka create_clock -period 30 -waveform 10 25 clkb set_input_delay 10.4 -clock clka in1 set_input_delay 6.4 -clock clkb -add_delay in1 set_output_delay 1.6 -clock clka -min out1 set_output_delay 4.8 -clock clka -max out1,65,內(nèi)容,邏輯綜合概述 綜合環(huán)境的設(shè)置 DC綜合流程簡(jiǎn)介 時(shí)序分析基礎(chǔ) 邏輯

39、綜合中的時(shí)序約束設(shè)計(jì) DC的使用方式,66,兩種使用方式 (1),圖形界面方式 在Unix下執(zhí)行dc_shell, 啟動(dòng)DC的命令行界面 執(zhí)行design_analyzer& 即可啟動(dòng)相應(yīng)的圖形界面,67,兩種使用方式 (2),腳本 (Scripts)方式 在Unix環(huán)境下,輸入dc_shell啟動(dòng)DC工具 dc_shell include scripts/.sc reports /.rpt,68,圖形界面:設(shè)置庫(kù)文件,Stepup-Defaults,69,圖形界面:設(shè)計(jì)讀入 (1),設(shè)計(jì)的讀入:analyze + elaborate,70,圖形界面:設(shè)計(jì)讀入 (2),設(shè)計(jì)的讀入:read,7

40、1,圖形界面:鏈接,鏈接 將設(shè)計(jì)中調(diào)用的子模塊與鏈接庫(kù)中定義的模塊建立對(duì)應(yīng)關(guān)系,72,圖形界面:添加約束 (1),環(huán)境約束,73,圖形界面:添加約束 (2),連線負(fù)載模型,74,圖形界面:添加約束 (3),設(shè)置輸出負(fù)載設(shè)置,75,圖形界面:添加約束 (4),設(shè)置輸入驅(qū)動(dòng),76,圖形界面:添加約束 (5),創(chuàng)建時(shí)鐘,77,圖形界面:添加約束 (6),設(shè)置輸入延時(shí),78,圖形界面:添加約束 (7),設(shè)置輸出延時(shí),79,圖形界面:添加約束 (8),組合電路的時(shí)延約束,80,圖形界面:添加約束 (9),設(shè)計(jì)的面積約束,81,圖形界面:設(shè)計(jì)綜合,設(shè)計(jì)綜合,82,圖形界面:結(jié)果報(bào)告,設(shè)計(jì)結(jié)果報(bào)告報(bào)告面積和

41、時(shí)序信息,83,圖形界面:設(shè)計(jì)保存,設(shè)計(jì)的保存,84,圖形界面:時(shí)序描述文件導(dǎo)出,時(shí)序描述文件的導(dǎo)出 描述了設(shè)計(jì)的時(shí)序情況主要用于進(jìn)行綜合后的動(dòng)態(tài)仿真,85,圖形界面:時(shí)序約束文件導(dǎo)出,時(shí)序約束文件的導(dǎo)出 帶有關(guān)鍵路徑的時(shí)延約束信息,主要供后端工具進(jìn)行時(shí)延驅(qū)動(dòng)的布局布線,86,腳本方式 (1),設(shè)計(jì)讀入 生成未映射的db設(shè)計(jì)文件的腳本文件:db_gen.scr,/* this script reads the vhdl files and generates db files */ /* ddfs MODULE */ remove_design -designs analyze -format

42、 vhdl -lib DEFAULT source/froma.vhd, source/fromb.vhd, source/croma.vhd, source/cromb.vhd, source/ddfs.vhd reports/analyze_elaborate.rpt elaborate ddfs -arch ddfs -lib DEFAULT -update reports/analyze_elaborate.rpt current_design ddfs write -format db -hierarchy -output unmapped/ddfs.db reports/analy

43、ze_elaborate.rpt quit,87,腳本方式 (2),子模塊約束腳本文件:constraints.scr,MAX_INPUT_LOAD = load_of(REF_LOAD) * 2 CLOCK_PERIOD = 10 /* the goal is 10ns */ CLOCK_UNCERTAINTY = 0.4 INPUT_DELAY = 3.0 OUTPUT_DELAY = 3.0 reset_design create_clock -period CLOCK_PERIOD find(port, clk) set_dont_touch_network find(port,clk

44、) set_clock_uncertainty CLOCK_UNCERTAINTY find(port,clk) set_input_delay INPUT_DELAY -max -clock clk all_inputs() - find(port, clk) set_output_delay OUTPUT_DELAY -max -clock clk all_outputs() set_operating_conditions OPERATING_CONDITIONS set_wire_load WIRE_LOAD_MODEL set_driving_cell -lib_cell REF_D

45、RIVER_CELL -pin REF_DRIVER_PIN all_inputs() - find(port, clk ) set_max_capacitance MAX_INPUT_LOAD all_inputs() - find(port, clk) set_load MAX_INPUT_lOAD all_outputs(),88,腳本方式 (3),頂層模塊約束腳本文件:constraints_ddfs.scr,MAX_INPUT_LOAD = load_of(REF_LOAD) * 2 CLOCK_PERIOD = 10 /* the goal is 10ns */ CLOCK_UNC

46、ERTAINTY = 0.4 INPUT_DELAY = 3.0 OUTPUT_DELAY = 3.0 reset_design create_clock -period CLOCK_PERIOD -name clk_sys find(port, clk) set_dont_touch_network find(port, clk) set_clock_uncertainty CLOCK_UNCERTAINTY find(port,clk) set_input_delay INPUT_DELAY -max -clock clk_sys all_inputs() - find(port, clk

47、) set_output_delay OUTPUT_DELAY -max -clock clk_sys all_outputs() set_operating_conditions OPERATING_CONDITIONS set_wire_load WIRE_LOAD_MODEL /* set_driving_cell -lib_cell REF_DRIVER_CELL -pin REF_DRIVER_PIN all_inputs() - find(port, clk) */ /* set_max_capacitance MAX_INPUT_LOAD all_inputs() - find(

48、port, clk) */ set_load MAX_INPUT_lOAD all_outputs(),89,腳本方式 (4),邏輯綜合腳本文件:runit.scr,/* Following dirctories must be maked before excuting this file */ SOURCE_DIR = unmapped/ SCRIPT_DIR = scripts/ MAPPED_DIR = mapped/ REPORTS_DIR = reports/ SIMULATION_DIR = simulation/“ /* Following variables is set according the specified library you used */ OPERATING_CO

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論