




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
時,每個公司都有自己的一套術(shù)…時,每個公司都有自己的一套術(shù)…利用DC進行綜合設(shè)計(2012-03-2517:45:10)轉(zhuǎn)載▼標簽:dc綜合雜談DC的綜合術(shù)語用于設(shè)計的ASIC的EDA工具往往是一套很復雜的軟件,包括大量的工具和文檔。同?Logie rtimrng,worseareaC2L)RopIication2bettertiming,wcf£aTirea?Replieationzbetl^r power^■)Cel3count:r?ducearea.be-tte-rpew?r(J^Cnlltypc:bc-ttQrtiming,wo-rsopower@Cutr?dund白n亡y:□色⑦Cui^undartcy:bettertiming,l>ett電rpower?CeHsize:betterarea^be-tterpower設(shè)置約束設(shè)定工藝庫liiil_Library設(shè)定工藝庫liiil_Library牛譏ol_libr:xryejtlthe11■:_!iTir:elty設(shè)計憂化策晤ereate_clccks@t_clock_l!±t2口匚卩PUt :ig:=Lt已d_cl■??;kset_cl*ck_transiticnset_irLput_de1ay畧色t_m_itpu+_ii^l:=LVset汕且英:±re:i設(shè)計規(guī)則約朿Eet_m!±!{_tr!iiLsitione&t_eax_±:=LiLi:mt弓屯t_ITi:=d!_e:=Lf:=lC1t:=lTlq色讀沢設(shè)計希定設(shè)計環(huán)諸選擇編譯策曙自頂向下.呂底向上checl;_ilesignreportcdtls七匕方:血t讀沢設(shè)計希定設(shè)計環(huán)諸選擇編譯策曙自頂向下.呂底向上checl;_ilesignreportcdtls七匕方:血treport_arearepoit_timirug壽祐設(shè)計數(shù)據(jù)屋■ I一、預備知識1.1、DC的綜合術(shù)語用于設(shè)計的ASIC的EDA工具往往是一套很復雜的軟件,包括大量的工具和文檔。同時,每個公司都有自己的一套術(shù)語。只有理解了這些術(shù)語的含義才能很好的掌握這些工藝。1設(shè)計和設(shè)計對象設(shè)計是實現(xiàn)一定邏輯功能的電路的描述。設(shè)計對象就是在設(shè)計中被DC命令、屬性和約束操作或控制的對象。常用的設(shè)計中包括元件、網(wǎng)絡(luò)、端口、引腳和時鐘。另外,一個設(shè)計可能包括某個相同子設(shè)計或庫元件的多個例化這時候被例化的設(shè)計或庫元件稱作參考。在一個設(shè)計中查找某個對象的命令:find,這是在DC命令中很常用的命令。如:列出當前設(shè)計的所有端口(ports):Dc_shell>findportORfind(port,"*”)列出所有包含”DW”字母的元件:dc_shell>find(cell,”*DW*”)列出cba_core庫中的AN2門的所有接腳:dc_shell>find(pin,cba_core/AN2Read-formatvhdl./src/rtl/timer_tugw.vhdRead-formatvhdl./src/rtl/test_top.vhdCheck_error-vIf(dc_shell_status==1){exit1}Current_designtest_topLinkCheck_error-vIf(dc_shell_status==1){exit1}Includepass0/constraint/test_top.conCheck_error-vIf(dc_shell_status==1){exit1}Set_max_area0.0000Set_flattenfalseEcho”***doingfullcompileforthepartition‘test_top'***”Shdate;Compile-map_effortmediumCheck_error-vIf(dc_shell_status==1){exit1}Shdate;Check_designCompile_top_acs_partion=tureCompile_top_all_paths=trueEcho”***doingboundarycompileforthepartition‘test_top'***”Shdate;Compile-topUniquifyCheck_error-vIf(dc_shell_status==1){exit1}Shdate;Current_designtest_topWrite-formatdb-hierarchy-outputpassO/db/test_top.dbWrite-formatverilog-hierarchy-outputpassO/db/test_top.vWrite-formatvhdl-hierarchy-outputpass0/db/test_top.vhdReport_timing>pass0/report/test_top.timReport_area>pass0/report/test_top.areaReport_constraints>pass0/report/test_top.cstrReport_qor>pass0/report/test_top.qorReport_constraints-all_violators-verbose>pass0/report/test_top.vioquit腳本文件可以使用任何一個文本編輯工具產(chǎn)生或修改,也可以在dc_shell中執(zhí)行write_scirpt命令產(chǎn)生。如,下面的命令就是將設(shè)計的屬性和約束等信息保存到名為test.scr的腳本文件。Dc_shell>write_>test.scr腳本文件的語法應(yīng)該符合djshell命令的語法。DC提供了一個語法檢查工具和一個上下文檢查工具,他們可以檢查腳本文件的語法和腳本文件的錯誤,并提供相應(yīng)的錯誤信息。語法檢查工具檢查腳本文件的語法,但是不執(zhí)行其中的命令。語法檢查實現(xiàn)的功能包括:檢查預先定義的命令參數(shù)是否正確,檢查必須的參數(shù)是否存在、文件重定向問題、檢查引用文件中的命令的語法、按照dc_shell正常的使用方式執(zhí)行賦值。要使用語法檢查,我們必須對該功能進行使能,此后每次引用或執(zhí)行腳本前就會首先進行語法檢查。在dc_shel1中使能語法檢查功能的方法如下:Dc_shell>syntax_checktrueSyntaxcheckon.上下文檢查工具檢查上下文的錯誤。在執(zhí)行一個腳本文件前,我們應(yīng)該對其進行上下文檢查。上下文檢查在檢查每個命令的語法的同時,還會讀入設(shè)計、檢查設(shè)計和庫文件是否有效、文件設(shè)法齊全等。其執(zhí)行具體的功能包括:檢查設(shè)計對象和屬性的合法性,檢查用戶定義的屬性,檢查變量是否存在,檢查條件語句的條件,檢查循環(huán)語句,讀入需要讀入的文件,根據(jù)命令重定向文件,檢查庫和庫對象。要使用上下文檢查,我們必須對該功能進行使能,此后每次引用或執(zhí)行腳本文件前就會進行上下文檢查。使能命令如下。Dc_shell>context_checktrueContextcheckon.最后,腳本文件的執(zhí)行是比較簡單的,可以通過兩種方法:在dc_shell中,應(yīng)該使用include命令執(zhí)行腳本文,include<filename>在啟動dc_shell時,可以使用-f選項執(zhí)行腳本文件,dc_shell-fvfilename〉在執(zhí)行腳本前,如果我們激活了腳本語法檢查和上下文檢查,那么就會先進行相應(yīng)的檢查。二、準備HDL文件輸入DC的文件通常是HDL文件,HDL的代碼質(zhì)量將直接影響綜合的效果,因此在編碼中必須考慮設(shè)計數(shù)據(jù)管理、設(shè)計劃分和HDL代碼的風格2.1、數(shù)據(jù)文件管理首先,由于綜合過程中需要大量的數(shù)據(jù)和多種文件,因此數(shù)據(jù)的管理就顯得非常重要。這種管理通常設(shè)計兩個部分,設(shè)計數(shù)據(jù)控制和數(shù)據(jù)組織??刂圃O(shè)計數(shù)據(jù)主要是控制數(shù)據(jù)的創(chuàng)建維護、覆蓋和刪除等。這和軟件工程中的版本控制是基本一致的。在DC中對于不同類型的的文件,一般有約定的擴展名。在控制數(shù)據(jù)的同時還必須注意對數(shù)據(jù)合理有效的組織,一般,在使用DC綜合的時候,我們都會使用層次化的目錄結(jié)構(gòu)來存放數(shù)據(jù)文件。相對于不同的綜合策略,我們也有兩種不同的目錄結(jié)構(gòu)??梢钥闯觯趹?yīng)用自頂向下的綜合策略時,由于綜合是從頂層模塊開始一次到各個模塊,所以只需要一個綜合目錄。而自底向上的綜合則現(xiàn)對各個模塊進行綜合,因此可能有多個綜合目錄。2.2、設(shè)計劃分對設(shè)計的合理劃分可以改善綜合的結(jié)果,減少操作的時間,簡化約束文件和腳本文件。劃分直接影響設(shè)計中模塊的大小,如果模塊太小,相當于人為的制造了一個界限,將限制DC有效的進行優(yōu)化。另一方面,如果劃分的模塊太大,則會增加綜合消耗的時間。在劃分的時候還要考慮設(shè)計的重用性,主要應(yīng)該注意以下幾點:詳細定義并記錄設(shè)計的接口,盡可能使接口標準化,編寫參數(shù)化的代碼。通常,我們設(shè)計的劃分一般使用以下策略:(1) 將相關(guān)的組合邏輯劃分在一起(2) 消除膠連邏輯(3) 模塊的輸出都應(yīng)該使用寄存器(4) 按照設(shè)計目標進行劃分按照編譯技術(shù)劃分,將設(shè)計中使用不同編譯技術(shù)的部分劃分到不同的模塊。特別使當設(shè)計中既有高度結(jié)構(gòu)化的邏輯(ALU),又有隨機邏輯時,應(yīng)當將他們分開。因為對于結(jié)構(gòu)化的邏輯應(yīng)該使用結(jié)構(gòu)化編譯,而對隨機邏輯,應(yīng)該使用扁平化的編譯??梢詫⒐蚕淼馁Y源劃分到一起將用戶定義的資源和他們驅(qū)動的邏輯劃分到一起,用戶定義的資源包括用戶定義的函數(shù)、過程、宏單元和designware元件。DC對于這些資源無法自動實現(xiàn)共享和復制。因此,將他們和它們所驅(qū)動的邏輯放在一起,我們就可以手工的插入多個元件來增大驅(qū)動能力。把頂層邏輯分成至少3級,將一些特殊的功能獨立出來,如管腳、時鐘、邊界掃描和異步邏輯等。如下圖所示,一般情況下,設(shè)計的最頂層是I/O管腳。下一層包括邊界掃描、時鐘處理、異步邏輯和核心邏輯。增加這一層是為了I/O管腳例化的靈活性?將時鐘處理獨立出來是為了對這部分進行詳細的分析仿真。將異步邏輯獨立出來是為了可測性和靜態(tài)時序分析的問題限制設(shè)計劃分的方法分為HDL劃分和DC中的劃分。HDL的劃分就是根據(jù)上面一些原則通過HDL代碼對設(shè)計進行劃分。而DC中的劃分是在DC中通過使用專門的命令,改變HDL中的劃分和層次的結(jié)構(gòu)。DC中提供了兩個與此相關(guān)的命令:group,ungroup。三、確定設(shè)計庫綜合之前必須設(shè)定鏈接庫、目標庫、符號庫和綜合庫。連接和目標庫屬于工藝庫,它們定義了半導體生產(chǎn)廠的工藝元件和其它信息。符號庫定義用于designvision或designanalyzer中的元件的符號表示確定這些庫是使用DC進行綜合的前提條件,因此我們必須掌握DC中庫的命令的使用,以便DC可以正確的使用庫中的數(shù)據(jù)。3.1、 工藝庫工藝庫包括描述每個單元的功能和特性的信息。工藝庫由半導體廠商提供和維護。元件庫包括元件名稱、元件接腳名稱、面積、時延信息、接腳負載。同時工藝庫還定義了實現(xiàn)設(shè)計功能必須滿足的條件。這些條件也可以稱作設(shè)計規(guī)則約束。除此之外,工藝庫還確定了工藝的工作條件和線載模型。工藝庫在DC中有下面一些用途:實現(xiàn)設(shè)計的功能,在de綜合過程中要將設(shè)計映射到某個工藝庫,他們稱作目標庫。目標庫包括了所有用于生產(chǎn)網(wǎng)表的元件以及設(shè)計工作條件的定義。解析元件參考,在de中用于解析元件參考的工藝庫稱為鏈接庫。鏈接庫中除了工藝庫外還可能包括設(shè)計文件。計算時延和路徑延時,鏈接庫還定義了用于計算時延值和路徑延時的時延模型計算消耗的功率3.2、 設(shè)置庫變量在使用de綜合之前我們必須對庫進行設(shè)置。具體的方法是使用de_shell中的變量來確定各種庫。變量和庫文件的定義見下表變量a默認值玄 "文件擴展名屮目標庫戶誰接庫門{“秤「取威J迫斑沁禹心'Dbp符導庫門 JDesignware庫門⑴:-在確定庫的位置的時候,我們可以使用完整的路徑也可以只用文件名。如果只確定了文件名,DC會在search_path變量確定的搜索路徑中查找這個文件。在設(shè)置工藝庫和鏈接庫的時候要注意:鏈接庫包括了工藝庫和設(shè)計文件。因此,link_library變量的值是工藝庫加上一個星號“*”,表示鏈接時,DC既搜索工藝庫,也搜索調(diào)入內(nèi)存中的設(shè)計文件。除了設(shè)置庫變量,DC還支持各種對庫的操作,如:讀入和保存庫,列出使用的庫,顯示庫的內(nèi)容,確定庫的對象甚至直接對庫對象進行操作。如下為一個工藝庫的例子:Cell(AND23)//元件名稱(area:8.000;〃元件面積Pin(Y)(direction:output;Timing()(Related_pin:”A”;Timing_sence:positive_unate;Rise_propagation(drive_3table_l)(values(“0.2626,0.2607 ”))//接腳延時Fall_progpagation(drive_3_table_3)(values(“0.1316,0.1331"))))Timing()(related_pin:”B”;):”A&B”;〃接腳的功能描述Max_capatiance:0.00220Min_capatiance:0.00220//輸出引腳的設(shè)計規(guī)則)Pin(A)(direction:input;Capacitance:0.012000;)Pin(B)(direction:input;〃輸入引腳的電器特性Capacitance:0.010000;))四、DC對設(shè)計的一些操作4.1、讀入文件下表列出了DC支持的所有文件類型描述心關(guān)鍵字Q擴展名豐數(shù)據(jù)庫骼式屮D畑電子設(shè)計交換格式屮Equation屮Syncipsys等式格式屮Equation屮3LSIlogiccorporaEon圈袁格式心.netQMentorsMentorrisfte:'!do恪式t只作背輸出)卩Mentor*3?爾+■*Mentorint-ermediateformat(只作黃]輸?哪Starttables驗鱷甌狀態(tài)表客式屮TDUTerrasdesignlanguage廁表移式心Id!/1潮加Vr?tiloghdl搐式口.何Vhcll洛式心WrYYYrVyw湎卩XiliiLK剛表榕式護?恥PL■加Berkeley魄格式Q對于設(shè)計文件,可以使用兩種方法讀入。使用read_file命令或使用analyze和elaborate命令。這兩種方法有一些區(qū)別。簡單的說,前一種適用于各種類型的文件,而后一種主要用于綜合VHDL和verilog文件。但是使用后者有一些特殊的功能。具體說來,analyze的功能包括讀入HDL源文件,檢查錯誤,產(chǎn)生獨立于HDL的中間類型的HDL庫對象,存儲中間文件。如果一個設(shè)計執(zhí)行的analyze命令,只需要在這個設(shè)計改變之后再執(zhí)行該操作。Elaborate命令根據(jù)analyze產(chǎn)生的中間文件產(chǎn)生一個與工藝無關(guān)的設(shè)計。這個操作還將HDL中的算術(shù)操作用于DESIGNWARE庫中的元件替代,同時確定總線的寬度。當設(shè)計讀入內(nèi)存之后,它將轉(zhuǎn)換為synopsys內(nèi)部數(shù)據(jù)庫的格式。DC之后的綜合優(yōu)化過程都是對內(nèi)存中的設(shè)計執(zhí)行的。(1)鏈接對于一個完整的設(shè)計,必須把所有的庫元件和他們對應(yīng)的設(shè)計參考鏈接起來。對于每一個設(shè)計,還必須有一個參考來銜接子設(shè)計和鏈接庫。這一過程稱為鏈接設(shè)計或參考解析。換句話說,鏈接就是要在鏈接庫中找到設(shè)計中使用的所有元件和子設(shè)計,保證設(shè)計的完整。如果不能正確的鏈接,則無法進行以后的綜合等操作。DC通過一下步驟完成參考解析:首先,它確定哪個庫元件和子設(shè)計在當前的設(shè)計中被使用。然后,它在鏈接庫中定位這些參考。最后,把定位好的參考和設(shè)計鏈接起來。如圖。鏈接的操作可以自動進行,也可以手工完成。當使用一些DC命令,如compile時會自動進行鏈接。如果需要,也可以使用link命令進行手工鏈接。
2)對設(shè)計和設(shè)計對象的操作這些操作時DC中的一些基本操作,和其它EDA軟件中的操作類似,如生成新設(shè)計、拷貝設(shè)計、重新命名等。其中比較重要的有以下幾種:設(shè)置當前設(shè)計。在DC中,我們應(yīng)當注意當前設(shè)計的概念,因為大多數(shù)的命令都是針對當前設(shè)計進行的。一般說來,如果成功的讀入了一個設(shè)計之后,這個設(shè)計就會作為當前設(shè)計。另外,如果指定了一個當前設(shè)計,可以使用current_design命令。列出設(shè)計和設(shè)計對象。使用list_designs命令來列出內(nèi)存中的設(shè)計,其中帶“*”為當前設(shè)計。下表也列出了顯示設(shè)計對象信息的一些命令。對象口?命篡p功能"烈說inEtan洱口酣規(guī)頃它們的蔘苦嗨盂養(yǎng)葦freferetKi.e^*5辰示夢考的信息y端口(卩血)肩顯示端口和總線端口的信息,返區(qū)所有的輸撾輸出謊口屮網(wǎng)絡(luò)(net)中顯示網(wǎng)貉和總績網(wǎng)絡(luò)的信息心時鐘clock^1為話顯示時鐘信息和返回所有時鐘心寄存器register^,返回所有寄存器屮改變設(shè)計的層次,在DC中我們可以改變HDL所描述的設(shè)計層次關(guān)系。首先,使用report_hierarchy命令可以顯示設(shè)計當前的層次關(guān)系。然后,使用group可以將一些元件或子設(shè)計組合起來,增加一個邏輯層次?;蚴褂胾ngroup名去掉一個邏輯層次。編輯設(shè)計,使用下表列出的命令可以對設(shè)計對象進行編輯,如生成,刪除等。Creat_cell生成一個元件Remove_cell刪除一個元件Create_net生成一個網(wǎng)絡(luò)Connect_net連接一個網(wǎng)絡(luò)Disconnect_net斷開一個網(wǎng)絡(luò)Remove_net刪除一個網(wǎng)絡(luò)Create_port生成一個端口Remove_port刪除一個端口Create_bus生成一個總線Remove_bus刪除一個總線4.2、屬性的處理屬性描述了設(shè)計數(shù)據(jù)庫中對象邏輯的電氣、物理和其它特性。一個屬性通常都是附加給一個設(shè)計對象并存儲于設(shè)計數(shù)據(jù)庫中。DC中,我們可以設(shè)置和使用以下一些對象的屬性整個設(shè)計設(shè)計對象,如時鐘,網(wǎng)絡(luò)和端口設(shè)計中的子設(shè)計或元件的例化工藝庫,庫元件屬性有自己的名稱、類型和值。屬性一般有以下幾種類型:串、數(shù)或是邏輯。屬性可以是DC預設(shè)的,這些屬性可以被DC識別;也可以是用戶定義的。一些屬性是只讀的,其值由DC設(shè)置,用戶無法修改,另一些是用戶可以自己修改的。例如,我們經(jīng)常使用“dout_touch”屬性,它可以付給網(wǎng)絡(luò),單元,端口或設(shè)計。而當我們需要設(shè)置這個屬性的時候,需要專門的命令:set_dont_touch而對于一般的屬性,可以使用命令set_attribute來設(shè)置。DesignCompiler綜合腳本常用命令和模板(2012-03-2517:47:12)轉(zhuǎn)載▼標簽:分類:微電子dc綜合script雜談參照自己的設(shè)計,以及自己的工藝信息,適當修改下面的Constraints和RunScript等的腳本,添加一些相關(guān)的約束語句,就可以運行了詳細…參照自己的設(shè)計,以及自己的工藝信息,適當修改下面的Constraints和RunScript等的腳本,添加一些相關(guān)的約束語句,就可以運行了詳細的命令請參照DC的官方UserGuide等相關(guān)資料。InvokingDesignCompilerUnix%design_vision#InteractiveGUI,WLMmodeUnix%design_vision-topographical #InteractiveGUI,TopographicalmodeUnix%dc_shell-t#Interactiveshell,WLMmodeUnix%dc_shell-t-topographical #Interactiveshell,TopographicalmodeUnix%dc_shell-t-fRUN.tcl|tee-imy.log#Batchmode.synopsys_dc.setupsetsearch_path“$search_pathlibsconsunmappedrtl”setsynthetic_librarydw_foundation.sldbsettarget_library65nm.dbsetlink_library“*$target_library$synthetic_libraryIP.db”setsymbol_library65nm.sdbdefine_design_libWORK-path./workset_svf<my_filename.svf>set_vsdc<my_filename.vsdc>historykeep200setsh_enable_page_modefalsesetcache_write.setcache_read$cache_writesuppress_message{LINT-28LINT-32LINT-33UID-401}setalib_library_analysis_path[get_unix_variableHOME]aliashhistoryaliasrc“report_constraint-all_violators”TCLCommandsandConstructssetPER2.0#Defineavariableanditsvalueecho$PER#Variablesubstitutiona2.0setMARG0.95expr$PER*$MARG#expr:*,/,+,-,>,<,=,<=,>=setpci_ports[get_portsA]#Imbeddedcommandsetpci_ports[get_ports“Y??MZ*”]#Wildcardsecho“EffctvP=\#Softquotesa1.9[expr$PERIOD*$MARGIN]”echo{EffctvP=\#Hardquotes[expr$PERIOD*$MARGIN]}#aEffctvP=[expr$PER*$MARG]#CommentlinesetCOMMENTin_line;#In-linecommentsetMY_DESIGNS{B1.v...B26.v} #foreachloopforeachDESIGN$MY_DESIGNS{read_verilog$DESIGN}for{seti1}{$i<27}{incri}{#forloopread_verilogBLOCK_$i.v}HelpfulUNIX-likeDC-shellcommandspwdcdlshistory!!!7!reportsh<UNIX_command>printenvget_unix_variableARCHConstraintsreset_designset_max_area0create_clock-period2-nameMain_Clk[get_portsClkl]create_clock-period2.5-waveform{23.5}[get_portsClk2]create_clock-period3.5-nameV_Clk;#VIRTUALclockset_clock_uncertainty-setup0.l4[get_clocks*]set_clock_uncertainty-setup0.2l-from[get_clocksMain_Clk]-to[get_clocksClk2]set_clock_latency-max0.6[get_clocksMain_Clk]set_clock_latency-source-max0.3[get_clocksMain_Clk]set_clock_transition0.08[get_clocksMain_Clk]set_input_delay-max0.6-clockMain_Clk[all_inputs]set_input_delay-max0.3-clockClk2-clock_fall-add_delay[get_ports“BE”]set_input_delay-max0.5-clock-network_latency_includedV_Clk[get_ports“ACF”]set_output_delay-max0.8-clock-source_latency_includedMain_Clk[all_outputs]set_output_delay-maxl.l-clockV_Clk[get_ports“OUT2OUT7]set_max_capacitancel.2[all_inputs]set_load0.080[all_outputs]set_load[expr[load_ofslow_proc/NAND2_3/A]*4][get_portsOUT3]set_load0.l2[all_inputs]set_input_transition0.l2[remove_from_collection[all_inputs][get_portsB]]set_driving_cell-lib_cellFDl-pinQ[get_portsB]set_operating_conditions-maxWCCOMsetauto_wire_load_selectionfalseset_wire_load_model-namel.6MGatesset_wire_load_modeenclosedset_wire_load_model-name200KGates[get_designs“SUB1SUB2”]set_wire_load_model-name3.2MGates[get_portsIN_A]set_port_fanout_number8[get_portsIN_A]set_false_path-from[get_clocksAsynch_CLKA]-to[get_clocksAsynch_CLKB]set_multicycle_path-setup4-from-fromA_reg-throughU_Mult/Out-toB_regset_multicycle_path-hold3-from-fromA_reg-throughU_Mult/Out-toB_regset_isolate_ports-typeinverter[all_outputs]set_ideal_network[get_portsreset*select*]set_ideal_network[get_pinsFF_SET_reg/Q]set_ideal_network-no_propagate[get_netsCTRL]set_ideal_latencyl.4[get_portsreset*select*]set_ideal_transition0.5[get_pinsFF_SET_reg/Q]set_scan_configuration-style<multiplexed_flip_flop|clocked_scan|lssd|aux_clock_lssd>CheckingandRemovingConstraintsandDirectivesreport_clock;report_clock-skewreport_designreport_port-verbosereport_wire_loadreport_path_groupsreport_timing_requirements(-ignored)report_auto_ungroupreport_isolate_portswrite_script-output<constraints.tcl>check_timingreset_path-fromFF1_regremove_clockremove_clock_transitionremove_clock_uncertaintyremove_input_delayremove_output_delayremove_driving_cellremove_wire_load_modelSyntaxCheckingUnix%dcprocheckconstr_file.conPhysicalConstraints-TopographicalModeset_aspect_ratioset_utilizationset_placement_areaset_rectilinear_outlineset_port_sideset_port_locationset_cell_locationcreate_placement_keepoutMisc.Reports#GenerateAlibraryreportfileread_dblibrary_file.dblist_libsredirect-filereports/lib.rpt{report_lib<libname>}report_hierarchy[-noleaf]#Arithmeticimplementationand#resource-sharinginforeport_resources#Listareaforallcellsinthedesignreport_cell[get_cells—hier*]RunScriptread_verilog{A.vB.vTOP.v}orread_vhdl{A.vhdB.vhdTOP.vhd}orread_ddcMY_TOP.ddcoracs_read_hdlMY_TOPoranalyze-formatverilog{A.vB.vTOP.v}elaborateMY_TOP-parameters“A_WIDTH=8,B_WIDTH=16”current_designMY_TOPlinkif{[check_design]==0}{echo“CheckDesignError”exit#ExitsDCifacheck-designerrorisencountered}#ContinueifNOproblemsencounteredwrite-fddc-hier-outunmappedd/TOP.ddcredirect-tee-filereports/precompile.rpt{source-echo-verboseTOP.con}redirect-append-tee-filereports/precompile.rpt{check_timing}source<Physical_Constraints_TCL_file>or#Sourcetclconstraints,ifavailable,orextract_physical_constraints<DEF_file>#Extractandapplyfromanexisting#DEFfloorplanfilegroup_path-nameCLK1-critical_range<10%ofCLK1Period>-weight5group_path-nameCLK2-critical_range<10%ofCLK2Period>-weight2group_path-nameINPUTS-from[all_inputs]group_path-nameOUTPUTS-to[all_outputs]group_path-nameCOMBO-from[all_inputs]-to[all_outputs]set_fix_multiple_port_nets-all-buffer_constantsk1*k1****InsertExpert,UltraorACScompileflowhere***k1*k1*k1*k1*k1*k1*check_designreport_constraint-all_violatorsreport_timing-delay-to-from-through-input_pins-max_paths\-nworst-nets-cap-sig-groupreport_area
report_qorsetverilogout_no_tritruechange_names-ruleverilog—hierwrite—fverilog—hier—outmapped/TOP.vwrite-fddc-hier-outmapped/TOP.ddcwrite_sdcTOP.sdcwrite_scan_def—outTOP_scan.defwrite_physical_constraints—outputTOP_PhysConstr.tclexitObjectRetrievalandManipulation(CollectionCommands)get_ports,get_pins,get_designsget_cells,get_nets,get_clocksget_nets—of_objects[get_pinsFF1_reg/Q]get_libs<lib_name>get_lib_cells<lib_name/cell_names>get_lib_pins<lib_name/cell_name/pin_names>all_inputs,all_outputs,all_clocks,all_registersall_connectedall_fanin,all_fanoutall_ideal_netsa{pci_lpci_2...}apci_1pci_2...a{pci_lpci_2...}apci_1pci_2...#a37query_objects$pci_portsget_object_name$pci_portssizeof_collection$pci_portssetpci_ports[add_to_collection$pci_ports\[get_portsCTRL*]]setall_inputs_except_clk[remove_from_collection\[all_inputs][get_portsCLK]]compare_collectionsindex_collectionsort_collectionforeach_in_collectionmy_cells[get_cells-hier*\-filter“is_hierarchical==true”]{echo“Instance[get_object_name$cell]ishierarchical”}#Filteringoperators:==,!=,>,<,>=,<=,=~,!~filter_collection[get_cells*]“ref_name=~AN*”get_cells*-filter“dont_touch==true”get_clocks*-filter“period<10”#Listallcellattributesandredirectoutputtoafileredirect-filecell_attr\{list_attributes-application-classcell}#Grepthefileforcellattributesstartingwithdont_UNIX%grepdont_cell_attr|moreListthevalueoftheattributedont_touchget_attribute<cell_name>dont_touchUltraCompileFlow-TopographicalorWLMModeUltra+DesignWareandDFTClicensesavailableIn“topo”mode(dc_shell-t-topo)specifyMilkywayreferenceanddesignlibrariescreate_mw_lib-tech<technology_file>-mw_reference_library<mw_reference_libraries>\<mw_design_library_name>open_mw_lib<mw_design_library_name>set_tlu_plus_files-max_tluplus<max_tluplus_file>-tech2itf_map<mapping_file>setcompile_auto_ungroup_delay_num_cells99999999setcompile_auto_ungroup_count_leaf_cellstruesetcompile_auto_ungroup_override_wlmtrueset_ungroup<top_level_and/or_pipelined_blocks>falseOPTIONAL:Disableunconditionalauto-ungroupingofDesignWarehierarchy(notusuallyrecommended)setcompile_ultra_ungroup_dwfalseIfdesigncontainspipelinedsub-designsandthepipelineregistersaregroupedtogetherattheinputoroutput,relaxtimingset_multicycle_path-setup<#_stages>-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*In“topo”mode,ifthefloorplanisavailable,applyorextractthephysicalconstraintssource<physical_constraints_file> ORextract_physical_constraints<DEF_file>OPTIONAL:Excludespecificcells/designfromadaptiveretiming(-retime)set_dont_retime<cells_or_designs>trueFirstcompilecompile_ultra-scan-retime-timing|-areaThedesignhierarchymayhavechangedduetoauto-ungrouping/-uniquifyingreset_path-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*OPTIONAL:Maintainregisteredpipelineoutputsifrequiredset_dont_touch[get_cellsU_Pipeline/R12_reg*]trueOptimizeregistersifpipelineviolatestiming;Skipifnopipelineissues:set_optimize_registerstrue-designMy_Pipeline_Subdesignoptimize_registers—only_attributed_designsContinueifdesignisNOTmeetingallconstraints:Applymorefocusonviolatingcriticalpaths,asnecessarygroup_path-name<group_name>-from<path_start>-to<path_end>\-criticalrange<10%ofmaxdelaygoal>-weight5SelectappropriatesecondcompileIn“topo”modeinDCv2006.06,oranymodeinDCv2007.03orlatercompile_ultra-scan-incremental#In“WLM”modeinDCv2006.06set_ultra_optimizationtruecompile-boundary-scan-map_efforthigh-incremental(-area_effortmedium|low|none)#In“topo”modepriortoDCv2007.03:Writeoutupdatedphysicalconstraintswrite_physical_constraints-outputPhysConstr.tclDFTFlow-ExpertorUltraDFTClicenseavailablePriortothefirstcompilesetthescancellstyleset_scan_configuration-style..Performthefirsttest-readycompilecompile-boundary-maphigh-scan#ORcompile_ultra-timing-scanContinuebeforethenextcompile:Readinthescanspecificationfilesourcescan_spec.tclCheckforDFTruleviolationsdft_drcPreviewthescanchainspreview_dftInsertandoptimizescaninsert_dft**ExecuteadditionalUltra/Expertoptimization*techniques,asneeded ***#AfterthefinalcompilechecktheDFTQoR#andwriteoutthescanDEFfiledft_drc—coverage_estimatewrite_scan_def-out<my_design.def>SomeScanSpecificationCommandsset_scan_statetest_readyset_dft_configuration...set_dft_signal...set_scan_path...set_scan_configuration...create_test_protocolExpertCompileFlowNoUltralicenseavailable;DFTClicenseavailablecompile-boundary-scan—map_efforthighContinueifNOTmeetingconstraintsNote:-scanrequiresDFTClicensecompile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)ContinueifNOTmeetingconstraints:Increasemax-delaypriorityifOKtopostponeDRCfixingset_cost_priority-delayNote:Thedesignhierarchymayhavechangedduetoauto-uniquifyingApplymorefocusonviolatingcriticalpaths,asnecessarygroup_path-name<group_name>-from<path_start>\-to<path_end>-criticalrange<10%ofmaxdelaygoal>-weight5Repartitionifdesignispoorlypartitionedgroup-design<NEW_DESIGN>-cell_name<U_NEW_CELL>\{U2U7...}ungroup-start_level2U_NEW_CELLcompile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)Or,canungroupallhierarchyinlieuofgroup/ungroupcommandswith-ungroup_allcompile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)-ungroup_all“PseudoUltra”CompileFlowUltralicenseavailable;NoDesignWarelicenseavailablesetcompile_auto_ungroup_delay_num_cells99999999setcompile_auto_ungroup_area_num_cells99999999setcompile_auto_ungroup_count_leaf_cellstruesetcompile_auto_ungroup_override_wlmtrueset_ungroup<top_level_and/or_pipelined_blocks>false#OPTIONAL:Disableunconditionalauto-ungrouping#ofDesignWarehierarchy(notusuallyrecommended)setcompile_ultra_ungroup_dwfalse#Ifdesigncontainspipelinedsub-designsandthepipelineregisters#aregroupedtogetherattheinputoroutput,relaxtimingset_multicycle_path-setupv#_stages>\-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*EnableUltraoptimizationsavailableforcompileset_ultra_optimization-no_auto_dwlibtruesethlo_disable_datapath_optimizationtruesetcompile_slack_driven_bufferingtruecompile-boundary-scan-map_efforthigh-auto_ungroupdelay|area\(-area_effortmedium|low|none)Note:Thedesignhierarchymayhavechangedduetoauto-ungroupingandauto-uniquifyingreset_path-fromU_Pipeline/R3_reg*-toU_Pipeline/R7_reg*OPTIONAL:Maintainregisteredpipelineoutputsifrequiredset_dont_touch[get_cellsU_Pipeline/R12_reg*]trueOptimizeregistersifpipelineviolatestiming;Skipifnopipelineissues:set_optimize_registerstrue-designMy_Pipeline_Subdesignoptimize_registers-only_attributed_designsContinueifdesignisNOTmeetingallconstraints:compile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)ContinueifNOTmeetingallconstraints:set_cost_priority-delayUngroupDesignWarecomponentsamidcombinationallogicungroup<DesignWare_components>Applymorefocusonviolatingcriticalpaths,asnecessarygroup_path-name<group_name>-from<path_start>-to<path_end>\-criticalrange<10%ofmaxdelaygoal>-weight5compile-boundary-scan-map_efforthigh-incremental\(-area_effortmedium|low|none)DC腳本示例及解釋(2012-03-2517:48:31)轉(zhuǎn)載▼標簽:分類:微電子dc綜合script雜談#scriptforDesignCompiler#Language:TCL#Usage:#1)makesurethelibinthecurrentdirectory#2)ifyouhavethefile.synopsys_dc.setup,# setsynopsys_dc_setup_file1,# ifnot,setsynopsys_dc_setup_file0#3)changeStep3:Variablestowhatyouwant#Especially:topmodulename,clockname,#resetname,allfilesname,andperiod#4)typingdc_shell-t-frun_72.tcl|tee-irun.log##=====================================================setsynopsys_dc_setup_file0# #Step1:#SettingUppathandlibrary:#Ifyouhaveeditedthefile.synopsys_dc.setup,thenyoucanskipoverthisstep# if{$synopsys_dc_setup_file==0}{setsearch_path[list/home/chanshi/dc/library/smic/home/chanshi/dc/rfid/source/home/chanshi/dc/script]settarget_library{typical.db}#settarget_library{CSM35OS142_typ.db};#ifyouwantusetypicallibrary,changetotypical.db#setlink_library[list{*}ram_interp_typical_syn.dbram_458_typical_syn.dbtypical.db]setlink_library[list{*}$target_library]}#setsymbol_library{csm18ic.sdbcsm18io.sdb}#setsynthetic_library{dw_foundation.sldb};#DesignWaresetcommand_log_file"command.log"# #Step2:#CompileSwithes# #setverilogout_no_tritrue;#ifinoutused,trinetwillbeused#通過將三態(tài)(tri)邏輯聲明成線網(wǎng)(wire)來確保網(wǎng)表中不會出現(xiàn)三態(tài)邏輯,因為一些布線工具很難讀取包含tri、tran源語、assign語句的網(wǎng)表,對于“inout"類型的port,DC產(chǎn)生triwire語句和tran源語,對于tri,還會產(chǎn)生assign語句settest_default_scan_stylemultiplexed_flip_flop#設(shè)置掃描鏈的類型,還可以通過set_scan_configuration-style來設(shè)置setlink_force_case case_insensitive#設(shè)置link命令是否區(qū)分大小寫,默認是check_referenee,就是根據(jù)產(chǎn)生referenee的模塊格式來判斷是否大小寫敏感,如果是vhdl格式就是不敏感,如果是verilog就敏感define_name_rulesVLSI_NET-allowed"a-zA-Z0-9_"-first_restricted"0-9_"-typenet-max_length256define_name_rulesVLSI_CELL-allowed"a-zA-Z0-9_"-first_restricted"0-9_"-typecell-max_length256define_name_rulesVLSI_PORT-allowed"a-zA-Z0-9_"-first_restricted"0-9_"-typeport-max_length256define_name_rulesTAN_RULE-allowed"a-zA-Z0-9_"-first_restricted"0-9_\[]"-max_length256-map{{{"*cell*","mycell"},{"*-return","myreturn"}}};sethdlin_check_no_latch"true"#設(shè)置如果推斷出鎖存器,是否報warning,默認是false,即不報。sethdlin_merge_nested_conditional_statements"true"#顧名思義,是否把嵌套的if融合,默認值是false,就是對于嵌套的條件語句(if或case語句)中的每一個if和case都推斷出一個選擇器,這種做法有利于把某些遲到的條件判斷信號(latearrivingsignals)安排到離輸出最近的選擇器上(進而有利于減小延遲),如果設(shè)成true,就會把這些選擇器融合成一個大的選擇器,這樣所有的選擇信號到輸出的距離都是相同的# Step3:DefineVariables setactive_design"whole_modules";Topmodulenamesourcefiles.tcl;AllRTLsource_files(verilog)setclock_name"clk";Nameofclocksetreset_name"reset";Nameofresetsetclk_period70.0#設(shè)置時鐘周期,注意帶小數(shù)點,這樣計算出的值都帶小數(shù)點,不然小于1的數(shù)都顯示為0DesiredClockPeriod=1000/Frequencesetclk_uncertainty_setup[expr$clk_period/200];#設(shè)置時鐘不確定性,這里只設(shè)置了相對于建立時間的不確定性,就是時鐘上升沿有可能提前clk_uncertainty_setup(時鐘偏差和時鐘抖動之和)到來,dc要提前clk_uncertainty_setup檢查建立時間是否滿足Uncertaintyofclocksetclk_latency[expr$clk_period/10];#設(shè)置時鐘延遲,是時鐘信號從其實際時鐘原點到設(shè)計中時鐘定義點的傳輸時間NetworkLatencyofclock考慮reg1+combo1 combo2_input+reg2+combo2_output combo3+reg3的模型來解釋input_delay和output_delay,中間的combo2_input+reg2+combo2_output是要綜合的模塊setinput_delay[expr$clk_period/4];#設(shè)置輸入延遲,設(shè)置一個外部輸入(組合邏輯combol)用了多少時間(即從時鐘上升沿到輸入數(shù)據(jù)到來經(jīng)歷的延遲),dc計算還有多少時間留給內(nèi)部組合邏輯combo2_input,例如時鐘周期為10ns,input_delay是4ns,則還有(6-tsu)留給內(nèi)部組合邏輯combo2_inputInputDelayofallinputportsexceptclocksetoutput_delay[expr$clk_period/4];#設(shè)置輸出延遲,設(shè)置一個外部輸出(組合邏輯combo3)用了多少時間(即外部組合邏輯的延遲),dc計算有多少時間留給內(nèi)部組合邏輯combo2_output,例如時鐘周期為10ns,output_delay為4ns,則還有(6-Tclk2Q)留給內(nèi)部組合邏輯combo2_outputOutputDelayofalloutputportssetarea_desired0;#設(shè)置面積的期望值,用于set_max_area
setwire_load_model"smic18_wl20";#為了精確地計算設(shè)置線載模型(DC支持三種模式:以此來決定如何選擇用于跨層次邊界的網(wǎng)線的線載模型),用于計算時序路徑的延遲,用于set_wire_load_model#Modeloftheintranetsetoutput_load"typical/NAND2BX1/AN";#為了精確地計算輸出電路的時間,需要設(shè)置端口負載(輸出或輸入的外部電容負載),就是為所有輸出端口指定一個負載,綜合時de就會認為這里有一個這樣的負載(并不是說綜合時在這里強制添加一個電容),dc綜合時就會選擇滿足這個負載的器件,例如假設(shè)已經(jīng)知道某輸出端口要驅(qū)動的是一個反相器,那么把輸出負載設(shè)置成這個反相器的輸入負載即可當然可以設(shè)置成很大,這樣de就會用驅(qū)動能力很大的器件,來滿足所有單元被驅(qū)動。這個指令的作用是在布圖前綜合過程中設(shè)置模塊輸出端口的容性負載和往連線上反標注布圖后提取的電容信息,這里選取某一器件的某一引腳的負載作為outputload,也就是de認為所有輸出端口要達到能驅(qū)動這個引腳#modeloftheoutput_loadsetsynthesis_reports{/home/ehanshi/de/report};#指定綜合報告的輸出目錄#nameofreportdireetoryshmkdir$synthesis_reports;settiming_report "$synthesis_reports/$aetive_design\_timing.rpt"settiming_max20_report"$synthesis_reports/$aetive_design\_timing_max20.rpt"setarea_report "$synthesis_reports/$aetive_design\_area.rpt"setreferenees_report"$synthesis_reports/$aetive_design\_referenees.rpt"seteell_report"$synthesis_reports/$aetive_design\_eell.rpt"seteonstraint_report"$synthesis_reports/$aetive_design\_eonstraint.rpt"setpower_report"$synthesis_reports/$aetive_design\_power.rpt"seteheek_syntax_report"$synthesis_reports/$aetive_design\_eheek_design.rpt"setsynthesis_netlist{/home/ehanshi/de/result};#指定網(wǎng)表和sdf/sde/db文件輸出目錄,本de不支持生成db文件#nameofoutfiledireetoryshmkdir$synthesis_netlist;#創(chuàng)建目錄setout_netlistsetout_dbsetout_sdfsetout_sde$synthesis_netlist/$aetive_design.v";$synthesis_netlist/$aetive_design.db";$synthesis_netlist/$aetive_design.sdf";"$synthesis_netlist/$aetive_design.sde";setout_netlistsetout_dbsetout_sdfsetout_sde$synthesis
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 【正版授權(quán)】 IEC 61846:2025 EN-FR Ultrasonics – Therapeutic focused short pressure pulse sources – Characteristics of fields
- 辦公家具購買合同書
- 消防器材維修合同
- 養(yǎng)殖場轉(zhuǎn)讓協(xié)議
- 汽車后市場汽車配件供應(yīng)鏈管理方案
- 有機肥購買合同書
- 婚慶策劃服務(wù)合同及免責條款
- 西北農(nóng)業(yè)大學合作協(xié)議
- 工會興趣小組活動方案
- 調(diào)研報告委托協(xié)議
- 了解綠化廢棄物的分類和處理方法
- 節(jié)后復工安全教育培訓內(nèi)容【5篇】
- EPC項目投標人承包人工程經(jīng)濟的合理性分析、評價
- 項目投標BIM方案(投標專用)
- 2024年中考數(shù)學專題訓練 專題10 截長補短模型綜合應(yīng)用(知識解讀)
- 專利分析評議報告
- 財務(wù)合規(guī)管理培訓課件
- 建設(shè)用地報批服務(wù)投標方案(技術(shù)方案)
- 史賽克關(guān)節(jié)鏡系統(tǒng)
- 大豆玉米帶狀復合種植技術(shù)
- 2024屆高考語文一輪復習:現(xiàn)代詩歌 專練(含答案)
評論
0/150
提交評論