ASIC完整設計實例_第1頁
ASIC完整設計實例_第2頁
ASIC完整設計實例_第3頁
ASIC完整設計實例_第4頁
ASIC完整設計實例_第5頁
已閱讀5頁,還剩114頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

摘要:本文介紹了基于標準單元庫的深亞微米數(shù)字集成電路的自動化設計流程。此流程從公司的SiliconEnsemble進行自動布局布線。關鍵詞:庫,仿真,約束,綜合,floorplan,布局布線。1傳統(tǒng)的芯片設計方法是手工全定制。隨著半導體工藝的幾何縮小,集成電路設計已經(jīng)到了深亞微米的時代。在同一面積上,晶體管數(shù)目的迅猛增加,傳統(tǒng)的芯片設計方已幾乎內(nèi)用最低的費用生產(chǎn)高性能產(chǎn)品。為了解決這些問題,新的方法學和工具得到了發(fā)展。近步的提高了設計重用。FormalVerification代替動態(tài)仿真,不僅提高了驗證速度,更重從行為級開始綜合大大提高了設計者的設計靈活性,使設計者更進一步脫離了工藝與物理帶來的不確定性。版圖提取和分析加強了邏輯設計與物理設計之間的聯(lián)系與信息交換,更設計預算技術,模塊編譯技術,布局布線自動化,版圖提取和分析等技術的應用大大提高布線,最后是版圖后仿真。所有這些步驟都是通過工具自動完成,快速而有效。模型編譯。第4章解釋了綜合的概念,介紹了邏輯綜合的實現(xiàn)及討論了幾個為級仿真和綜合后仿真的區(qū)別。第6章介紹了FormalVerification和其他輔助工具的應仿真與綜合后仿真在操作上沒什幺區(qū)別,這里就略去不講。EDA設計的概述百萬門。根據(jù)摩爾定律,每十八個月增加一倍。而設計人員的設計能力只是一個線性增長計輸入,提高了設計抽象程度,更有利于設計人員發(fā)揮聰明才智,因而可以大大提高設計編碼也變得越來越難以忍受。行為級綜合技術的發(fā)展為設計者帶來了曙光。它使設計者開為了提高設計的速度和設計成功率,利用已驗證正確的設計作為新設計的一部分是現(xiàn)在大規(guī)模設計的常用方法。隨著時代的發(fā)展,人們對產(chǎn)品的要求越來越高。他們要求的不僅僅是新產(chǎn)品的出現(xiàn),更多的是要求改善舊產(chǎn)品的性能,增加更多的功能。為此對舊的設計的修改是必須的。為了充分利用以前的成果,減少修改的工作量,加快設計修改速度,隨著半導體工藝的不斷進步,器件的特征尺寸越來越小,線寬變得越來越快。但同時隨著設計的越來越復雜,電路規(guī)模的越來越大,金屬線的長度和層數(shù)不斷增加,線寬也隨之變小。這都導致了金屬連線的延時變大。于是器件的延時不再是一個系統(tǒng)的主要延時,連線的延時變得越來越重要,甚至超過了器件的延時。因此以前設計系統(tǒng)時只考慮器件延時的觀念已經(jīng)行不通,設計時考慮連線的延時是必須的。設計者在設計時必須同時考慮到綜合和版圖,且使綜合和版圖盡量結合在一起。把綜合后的時序信息前注釋到布局布線,同時布局布線后提取寄生參數(shù)和時序延時信息后注釋回綜合,從而使邏輯設計和物理設計緊密的結合起來。考慮到連線延時,必須進行版圖后仿真。版圖后仿真必須后注釋大量的版圖時序延時信息。電路規(guī)模的增大導致了時鐘同步的問題。時鐘到達不同子模塊的延時不同,這成了一了極大的發(fā)展。它較好的解決了這時鐘延時的問題。隨著系統(tǒng)規(guī)模的不斷增大,功耗的問題變得為此,設計者在進行設計系統(tǒng)的時候必須考慮功耗的問題。在邏輯綜合后必須進行功耗分基于標準單元庫的數(shù)字集成電路設計方法主要流程為及工具使用如下:1.功能與規(guī)格要求;12.用SiliconEnsemble進行floorplan,布局,ClockTree的插入以及全局布線;EDA設計的概述22由于篇幅的限制,本文將只詳細講述幾個重要的工具,其EDA設計的概述33行為級編碼功耗分析行為級的功能驗證floorplan,布局,CT插入和全局布線功能正確?重新綜合插入CT后行為級綜合插入CT前后的邏輯網(wǎng)表比較RTL級功能驗證全局布線后STA功能正確?行為級編碼功耗分析行為級的功能驗證floorplan,布局,CT插入和全局布線功能正確?重新綜合插入CT后行為級綜合插入CT前后的邏輯網(wǎng)表比較RTL級功能驗證全局布線后STA功能正確?初級綜合細節(jié)布線RCs,SDF約束分配版圖后STA邏輯綜合與測試掃描的插入綜合后仿真版圖后仿真功能正確?功能正確?版圖前STA流片功能與規(guī)格要求行為級仿真12.1行為級仿真簡介當設計完成后,為了驗證功能是否正確,設計者必須對其設計源文件進行仿真。因為2.1.1工具介紹:1.Scirocco于周期(cycle-based)的仿真有著事件驅動(event-driven)仿真的靈活性。這個技術為綜合基于周期仿真器:只在每個時鐘的有效沿計算設計源代碼的值,而對每個周期內(nèi)的其他時序信息不與考慮,即對時鐘周期間的事件不進行仿真。信號在時鐘沿是被假設為穩(wěn)定的,因此建立時間,保持時間,脈沖寬度的違約現(xiàn)象都被忽略。雖然兩個時鐘沿間的信號和時序信息被忽略了,但是它大大加快了仿真的速度和儉省了內(nèi)存空間。對復雜的大型設計,這種仿真機制有著很大的優(yōu)勢。事件驅動仿真器:在單個周期內(nèi),信號值在最后穩(wěn)定之前,于邏輯路徑的任何一點都可能改變數(shù)次。每當某個事件發(fā)生,仿真器就對信號值更新一次。仿真器在整個時鐘周期基于周期仿真和事件驅動仿真的區(qū)別如圖2.1所示:行為級仿真2siinLogic/siinLogic/Data××× thisVSS都可以使用,但是它更適合于概念確認階段和執(zhí)行驗證階段(門級仿真)。Interpreted:具有充分的內(nèi)嵌交互調(diào)試特性Gate-level:快速門級仿真和ASICsignoff驗證而不是在仿真前先把RTL級代碼綜合成門級電路。它使用簡單的邏輯和強度值。它把在功能驗證階段,設計模型較穩(wěn)定,仿真次數(shù)較少(同概念確認階段相比)。Cyclone就是為這種較穩(wěn)定模型的的冗長測試優(yōu)化的。而且它具有良好的直覺性和交互性的調(diào)試性能,1.Verilog仿真工具Verilog仿真工具的具體應用和VHDL仿真以上各種軟件的使用大同小異,特別是仿真命令幾乎沒什幺區(qū)別。其中有點需要注意的是:Scirocco與其他仿真工具在周期的仿真又支持事件驅動的仿真,所以在它用混合模式分析源文件后,進行混合模式仿真前,需要產(chǎn)生分塊文件給它進行分塊處理。如果不對需要進行基于周期仿真的頂層設計用分塊命令語句指定,它將以事件驅動模式運行。分塊命令語句為:cycle[option]design_root2.1.2系統(tǒng)行為級仿真流程(如圖2.2所示)行為級仿真3驗證仿真覆蓋2.建立設計庫設計庫用于存放源程序分析后的中間文件和設計所的reference庫。為中間格式的文件存放于設計庫中。5.設計仿真6.顯示和分析結果可以驗證設計瓶頸和未被激勵的面積。行為級仿真42.2.1Setup文件的編輯LIB1:user/design/lib1●設計庫的映射:有關設計庫映射的詳細說明請見建立設計庫那一節(jié)?!褡兞慷xvariable_name=value●其他常用命令如果你的命令需要續(xù)行請用續(xù)行符號“\”如果你要注釋一個語句,請用注釋符“--“如:--thisistimebase2.3建立設計庫設計庫用于存放設計分析后的中間文件,仿真器從設計庫里取出中間文件仿真。它們的關系如圖2.3所示:行為級仿真5設計庫有兩種,一種為存放仿真分析后的中間文件的工作庫(worklibrary),一種為存放你的設計調(diào)用的庫的資源庫(resourcelibrary)。2.3.1創(chuàng)建worklibrary2.3.2創(chuàng)建resourcelibrary2.3.3特別注意:分析器在分析源文件的時候將報錯,且停下來。2.4設計分析vhdlan命令格式:vhdlan[options]filename_listgvan命令格式:gvan[options]vhdlan支持基于周期的仿真(-cycle)和事件驅動的仿真(-event),但是-cycle的分行為級仿真6當你的設計源代碼或工作環(huán)境有所改變時,必須先重新分析這有改變的源文件,同時也要重新分析包含了這設計單元的其他源文件,對于一個龐大而復雜的設計來說,要找出注意:這里的design_unit必須是你的頂層設計單元,可以是configuration,c)仿真你的設計:d)修改你的設計:設計單元中使用,則在這個designunit上調(diào)用simcompiled,它將為你提供這方面的2.5設計的仿真與結果分析2.5.1仿真機制Interpreted:碼級的,例如它可以監(jiān)測變量和設計模塊(block)中的源代碼。在設計的早期,設計者需經(jīng)常修改設計,建議使用Interpreted機制。當設計穩(wěn)定下動調(diào)用Compiled機制,但是你也可以利用屏蔽調(diào)試功能對已編譯設計強制使用Interpreted機制來進行進一步的調(diào)試。要使用屏蔽調(diào)試功能在啟動VSS時加上-fi或者-fi_all選項即可。行為級仿真7常用options:-ifilename啟動時調(diào)用命令文件filename-efilename啟動時調(diào)用命令文件,同時顯示執(zhí)行的命令-sdffilename.sdf讀入SDF文件。2.5.3常用的命令行命令:run[n]trace[options]object_name_listquitrestartincludefilename運行n個時間單位調(diào)用命令文件filenamehelptopic特定主題和命令的幫助}給對象賦值evaluatevhdl_expression_list計算并顯示表達式的值statue[-t]{process_name|dignal_name}列出準備運行或等#includefilename或%vhdlsim–ifilenamedesign_unit或%vhdlsim–efilenamedesign_unit/*執(zhí)行時顯示命令*/#!..exit#得到變量的值variable#產(chǎn)生監(jiān)測(monitors):monitor[options]conditi行為級仿真重導monitor的輸出:redirectdevice_tagmonitor_list#coverage[options][vhdl_source_file_list]/*產(chǎn)生*/%coverage[options]{filename}/*調(diào)用*/產(chǎn)生常規(guī)的VCDfile:也可同時產(chǎn)生這兩個文件,用vcdon,vcdoff,vcdlimit等%vhdlsim–saiffilealarm_clock_saifcfg_tb_top_behavioral2.6設計實例忘了加configuration。)1.仿真前準備把設計源文件存放在vhdl/目錄下3.創(chuàng)建設計庫4.設計分析產(chǎn)生設計分析的命令文件analyze1.sh,內(nèi)容為:#!/bin/sh-f執(zhí)行命令文件,對源文件進行分析:5.設計調(diào)用仿真器進行設計仿真產(chǎn)生仿真命令文件simfile,其最基本的內(nèi)容為:行為級仿真9注:在這命令文件里,如果你想觀察波形文件的話,切記不要寫上quit,因為退出仿真結果如圖2.4所示:3.1.1BehavioralCompiler的設計流程圖(如圖3.1所示)3.1.2BehavioralCompiler設計流程及相關命令analyze[-librarylibrary_name][-worklibrary_name][-formatvhdl|verilog][-create_update][-update][-definedefine_netlist]file_list2.Elaborating設計:architecturearch_name][-parametersparameter_list][-file_parametersfile_list][-update][-schedule]3.給設計時序約束:初始約束:create_clockset_driveset_driving_cellset_input_delayset_loadset_operating_conditionsset_wire_load_min_block_size時序和面積預算:bc_time_design[-force][-fastest]產(chǎn)生時序面積的預算報告:report_resource_estimates輸出時序的.db文件:write4.約束安排:約束:set_cyclesset_min_cyclespipeline_loopbc_dont_register_input_portset_exclusive_useset_behavioral_reset用report_scheduling_constraints顯示當前設計上安排的約束。cycle_fixed|superstate_fixed][-extend_latency][-hostname][-archremote_host_architecture][-allocation_[r][w][l][L][o][p]][-startstart_cycle][-finishend_cycle][-delimiter"character"]][-variables[-minmin_width][-maxmax_width][-startstart_cycle][-finishend_cycle][-delimiter"character"]][-summary][-abstract_fsm[-mask[r][w][o][s]]][-verbose_fsm[-mask[r][w][o][d][s]]]write-formatvhdl-hie7.可綜合的RTL輸出:write-rtl_scriptscript_file_name3.2.3腳本范例analyze-fvhdlcmplx.vhd/*analyzethevhdlfile*/create_clockclk-period10/*set_cycles...*//*saveschedulingreportstofile*/write-hier-fvhdl-rtl_scriptrtl.scr-outsyn_rtl.vhdvhdlout_levelize=true/*writeflattened,simulation-onlyRvhdlout_use_packages={ieee.std_logic_1164}write-hier-fvhdl-outcmplx_rtl.vhd/*savessimulatablertleveldesign*/邏輯綜合1Translate\\Translate\\\ \4.1邏輯綜合概述4.1.1邏輯綜合的概念綜合(synthesis):就是把思想轉換為實現(xiàn)欲想功能的可制造的設計。綜合是約束驅動用圖形表示就是:(見圖4.1)residue=16'h0000;if(high_bits==2'b10)residue=state_table[index];elsestate_table[index]=16'h0000;GenericBoolean\\\\\\TargetTechnology4.1.2邏輯綜合的工具介紹●工具操作界面dc_shell—命令行界面。邏輯綜合2dc_shell命令行界面的啟動;%dc_shelldc_shell界面的提示符為:dc_shell>dc_shell命令行界面支持兩種腳本語言:dcsh模式和dctcl模式。tcl是一種開放型的工業(yè)標準語言。它比dc_shell更加強大。啟動dcsh模式用dc_shell命令,啟動dctcl模式用dc_shell-tDctcl廣泛的文件和字符串操作能力如果你已經(jīng)有了dcsh的setup文件或腳本文件(.scr),你想轉換為Tcl的setup文件和約束文件,則我們只需執(zhí)行下面命令即可.%dc-transcript.synopsys_dc.setup.old.synopsys_dc.setup腳本文件的轉換:設dcsh的約束文件為old_scriptfile.scr,dctcl的約束文件為tcl_script.tcl,則%dc-transcriptold_scriptfile.scrtcl_script.tcl4.1.3邏輯綜合的流程流程圖如圖4.2:邏輯綜合34.2setup文件,庫以及一些基本概念4.2.1setup文件把行為級描述轉換為門級電路,在映射過程種,必須有技術庫的支持,否則它將找不參照的元器件。為此我們在綜合前必須在setup文件中設變量設置。一個為你根目錄下的setup文件,它提供你searchpath,targetlibrary,linklibrary,symbollibrary.邏輯綜合4link_library={MTC45000.db};target_library={MTC45000.db};Tcl模式:setsearch_path[concat[list]$search_path]setlink_library[listMTC45000.DB]settarget_library[listMTC45000.db]指定庫的目錄。方法是:search_path={directory}+search_pathdctcl模式:setsearch_path[concat[listdirectory]$search_path]link_library:指明了你的設計所參照的子設計的位置。DC根據(jù)link_library尋找它所參照的設計。如果參考設計的完整名字在link_library里沒有定義,則需在search_path中包括這參考設計的路徑。link_library定義了被單獨使用的元器件的庫的名字。即,link_library里的元器件是不被DC所inferred的。4.2.2庫target_library:symbollibrary:指明了含技術庫元件的圖形描述的庫。4.2.3對象在進行綜合時,我們經(jīng)常會遇到一些對象的概念。搞清楚這些概念具體是指代什幺是Cell:是design中的子設計的一個instance。在Synopsys的術語中,cReference:cell或instance參考的源設計的定義。Pin:對應于設計中的cell的input,output,或IO管腳。Net:這是信號的名字,即通過連接ports與pins或pins與pins而把一個設計連在一Clock:作為時鐘源的port或pin..library:對應于設計的綜合目標或參考連接的工藝指定單元的集合。具體示例如圖4.3:邏輯綜合5PortCellPortCell▲entityTOPisport(A,B,C,D,CLK:inSTD_LOGIC;signalPin▲Pin▲4.3設計分塊分塊(partitioning):把復雜的設計分成各個小部分的過程。概念如圖4.4QQQQQQQQQQQQQQQQQQQQ分塊是成功的進行綜合和布局布線的關鍵。傳統(tǒng)上的分塊是根據(jù)邏輯功能,而不考慮綜合的。固定的邊界降低了綜合結果的質量,使優(yōu)化難以進行。正確的給設計分塊能大大的增1.把相關的組合邏輯保留在同一模塊中;2.考慮設計的重用;3.根據(jù)它們的功能劃分模塊;4.把結構邏輯和隨機邏輯分開;5.合理的塊大小(每個塊最大大約為10K個門);邏輯綜合67.頂層避免存在glue-logic;8.把狀態(tài)機和其他邏輯獨立開來;9.避免在一個塊中存在多時鐘;10.把用來同步多個時鐘的塊獨立出來;了一個新層。算術電路(+,-,*,。。)的inference也能產(chǎn)生新層。process和always邏輯優(yōu)化并不能穿過塊的界線。最好的分塊是把相關的組合邏輯和它的目的寄存器聚集在同一個塊中。這樣組合優(yōu)化技術能被完全的利用,時序優(yōu)化也可以吸收一些組合邏輯到復雜的觸發(fā)器中(JK,T,Clock-enabled)。好的分塊如圖4.5所示: Q Q Q Q什幺是glue-logic:就是用一個組合邏輯把幾個塊結合起來,這個組合邏輯就是gluelogic.由于這gluelogic不能被吸收,優(yōu)化是被限制的,要刪除這gluelogic,我們把這能是一個結構的網(wǎng)表,不需要被編譯。換句話說,就是頂層不層最好也是不要存在gluelogic。以不用設置。塊的名字必須和文件名相同,否則在分析是將會出錯。4.4讀進設計elaborate一次只能對一個文件進行操作。這點需要注邏輯綜合74.5設計約束約束其設計。約束包含時序和面積信息。它們通常是從規(guī)格說明中提取出來的。DC用這些約束去綜合和優(yōu)化設計以符合其目標任務。本文只講些最常用的約束命令,且不會講的很詳細。約束命令的具體用法請4.5.1設計環(huán)境幾個環(huán)境變量含義如圖4.6所示:clkset_driveset_loadset_driving_cellclkset_driveset_loadset_driving_cellset_loadDividerDivider▲set_wire_loadfortopleveltmDQQ▲▲tmDQQ▲▲n Q sTtTtset_operating_conditions:描述了設計的工藝,電壓和溫度等條件。通常以邏輯綜合商提供的運行環(huán)境,我們可以用report_liblibname命令。最壞(即最慢)的運行條件是最低的電壓和最高的溫度。最好(即最快)的運行條件是最高的電壓和最低的溫度。如果你想檢查你的設置,你可以用report_port-verbose,write_script和set_load:定義了輸出單元總的驅動能力。利用load_of(lib/cell/pin)命令把技術庫的門作為負載數(shù)的衡量:load_of(lib/cell/pin)可以乘以系數(shù):set_driving_cell:模擬了驅動輸入管腳的的驅動單元的驅動電阻。定義了信號到達輸入管腳的傳輸時間,可以直接指明驅動輸入管腳的外部實際單元。dc_shell>set_driving_cell-cellBUFF1-pinZall_inputs()set_drive:指明了輸入管腳的驅動強度。模擬了輸入管腳的外部驅動電阻。它一般只dc_shell>set_drive0{CLKRST}set_wire_load:用來提供估計的統(tǒng)計線載(wireload)信息,反過來也用線載信息模擬net延時。線載模型是基于net扇出的net參數(shù)估計。例子:wireload模型是芯片制造商產(chǎn)生的,但是也可下:設庫名為Extra.lib:Library(“extraa”){process:1.75;voltage:4.66;tree_type:“worst_case_tree”;}}dc_shelll>read_libextra.libdc_shelll>write_libextra–outputextra.libdc_shell>link_library={“*”,tech_libraryextra.lib}dc_sehll>set_operating_conditions“SLOW”–library“extra”邏輯綜合9這樣就完成了運行條件的產(chǎn)生。4.5.2設計規(guī)則set_max_fanout,set_nax_transition,set_max_fanoutdc_shell>set_max_transition0.3current_designdc_shell>set_max_capacitance1.5find(port,”oudc_shell>set_max_fanout3.0all_outputs()4.5.3時序和面積約束:各種變量的含義如圖4.8所示:clkset_clockset_input_delaysignalsset_max_transitionDividerDivider_delaycreate_clock:定義時鐘周期.例子:dc_shell>create_clock–period10find(port,Clk)dc_shell>create_clock-period20find(port,Clk)dc_shell>set_dont_touch_networkfind(clock,Clk)set_input_delay:限制輸入路徑的延時。set_input_delaydelay_value[-clockclock_name][-clock_fall][level_sensitive][-rise][-fall][-max][-min][-add_delay]port_pin_listset_input_delay-max4-clockClkfind(port,“A”)邏輯綜合限制輸入ports的延時是時鐘周期的80%則參數(shù)應為10-8=2.不想包括的管腳可用-除如:set_input_delay2.0–max–clockClkall_inputs()–Clkset_output_delay:約束輸set_output_delaydelay_value[-clockclock_name][-clock_fall][-level_sensitive][-rise][-fall][-min][-max][-add_delay][-group_pathset_output_delay-max5.0-clockClkfind(port,”s”)你想看你的約束設置,你可以用report_clock,report_port-verbose,write_script,4.5.4時鐘對于同步的多時鐘設計,我們采用虛擬時鐘的方法。即在你的設計中選擇所有時鐘的最小公倍數(shù)作為你的虛擬時鐘的頻率,然后把它分頻為你設計中的多時鐘服務。產(chǎn)生虛擬為此,我們使用set_false_path命令。set_false_path-fromfind(clockCLKA)-tofind(clockCLKB)4.5.5時序分析件按一條一條信號路徑顯示。每一個時序路徑都計算兩次,一次為上升沿輸入,一次為下降沿輸入。時序報告文件具體如何看,請參考有關資料。ports,也可以是觸發(fā)器的的clockpin。終點(endpoints)可以是outputports,也可以是時序器件的數(shù)據(jù)輸入腳。路徑的劃分由clock4.6設計綜合和優(yōu)化當設置好所有的約束條件后,就可以開始進行設計綜合和優(yōu)化了。綜合優(yōu)化的命令為析設計?,F(xiàn)在由于時序方便的問題更重要,已經(jīng)把時序約束放在了比面積更重要的地位。優(yōu)化分為三個階段:結構優(yōu)化階段,邏輯優(yōu)化階段,門級優(yōu)化階段。要求的高效面積結果。需要注意的是,高級綜合只能在優(yōu)化未映射設計時發(fā)生。現(xiàn)。在邏輯優(yōu)化期間兩個優(yōu)化處理可以選擇:structuring,flattening。structuring:產(chǎn)生中間結構來改善設計,是基于約束的,可以同時改善設計的面積和速度。選擇structuring綜合:set_structuretrueflattening:刪除中間結構,以減少積和電路設計。獨立于約束,在速度的優(yōu)化上很有效,但是需要較大的面積。Flattening由于庫的限制和電路。選擇flattening綜合:set_flattentrue4.6.1約束和時序檢查:report_constraint–all_violators:報告設計約束的所有違約(violators)。4.6.2違約的解決如果你的是約束沒有滿足,則需要重新綜合。執(zhí)行連續(xù)的編譯是沒用的,你需要改變一些東西,如調(diào)整你的約束,改變set_structure或set_flatten選項,或改變編譯的映synthetic_library={dw_foundation.sldb}link_library=link_library+dw_foundation.sldb/*這里的dw.fondation.sldb是否用{}括起來沒關系缺省選擇為medium.重新編譯時一般選擇hi級優(yōu)化是進行的,在運行速度上比常規(guī)的編譯要快。當你有設計規(guī)則的違約時,用compile–only_design_rule命令.set_clock_uncertainty-hold使用characterizecharacterize計算周圍環(huán)境強加在設計上面的屬性和約束,然后放這些約束在設計上,write_script輸出當前設計的所有約束到一個腳本文件上。characterize的使用方法實例:characterize-constraintsfind(cell,”U1”)write_script>A_w.scrcharacterize工作在cell,而不是design,而write_script則顯示current_design的所有constraints,故要write_script是需先執(zhí)行current-design命令,使它轉換到泥characterize只能在所有的塊都已映射為了門級電路的設計上使用,不能用來作為第一次編譯的設計預算(budgets).characterize一次只能對一個塊進行處理。report_constraintall_violatorsincludescripts/ALU_w.scrsynthetic_library={dw_foundation.sldb}link_library=link_library+{dw_foundation.sldb}report_constraint–all_violators/*可檢查有無violators*/如果你嘗試了以上的方法后還不行,對不起,請回去修改你自己的源代碼。4.6.3大型設計和層次設計主要綜合方法學后再優(yōu)化邏輯以符合時序面積的約束,并通過周圍的塊確定違約。當你的設計中存在多instance問題(一個實例在不同uniquif:為每一個多次引用的instance做備份,一個instance一個備份,這樣每進行映射。使用方法為:先uniquify,在compile.了這個設計對象在編譯時的調(diào)整。(注意:如果這個設計對linkincludeAconstraints.scrincludeDconstraints.scr如果你不考慮編譯運行時間,內(nèi)存的限制,以及一次性就要放好這個uniquify.2.解決多實例問題邏輯綜合3.應用頂層約束4.編譯5.查看結果6.保存設計1.單獨約束和編譯每一個子模塊,2.確定所有的子模塊都符合了它們的初始約束,3.讀進完整的設計,并應用頂層約束,4.檢查約束報告,如果都通過了,那你就完成了。有效內(nèi)存的限制。缺點是需要人們反復的干預直到塊與塊之間的接口穩(wěn)定下來。需要仔細4.7設計輸出設計綜合好,且所有的約束(可以除了holdtime)都滿足以后,我們就可以輸出綜合write_constraints-formatsdf-v2.1-max_nets0.05-net_priorities-4.8腳本的編寫與執(zhí)行約束腳本的編寫(constraints.scr)(這里假設所有的輸出都已鎖存,故不需要設置6.Definethecelldrivingallinputportsexcepttheclockport總的綜合腳本的編寫(runit.scr)(假設設計明和文件名相同):1.Readalistofdesignsintodc_shell2.Foreachdesign,setthecurrentdesignvariable3.Foreachdesign,link4.Foreachdesign,applytheconstraints.scrscriptfile8.Quitdc_shellcontext_check必需在完整的script文件上才使用,所以對約束文件constraints.scr產(chǎn)生和檢查約束文件constraints.scr:dc_shell–fscripts/constraints.scr–syntax_check產(chǎn)生和檢查總的腳本文件runit.scr:dc_shell–fscripts/runit.scr–syntax_checkdc_shell–fscripts/runit.scr–context_check|teecontext.log運行腳本綜合你的設計:dc_shell–fscripts/runit.scr|teerunit.logconstraints.scr和runit.scr的樣本見附錄●一些注意點及常用命令的用法:尋找criticalpath需在Schematic會被覆蓋掉.library這個參數(shù)是指你要查的信息,如要查error,則改為errorlist–libraries不想包括的管腳可用-除掉,注意前后都有空格,如:set_input_delay2.0–max–clockClkall_inputs()–Clkfind命令:dc_shell>findport或find(port,”*”)/*find與(之間的空格可有可無。()里的逗號可用空格代替*/dc_shelll>find(cell,”*DW*”)/*listallthecellsthatcontainlettersdc_shell>find(pin,cba_core/and2a0/*)/*listallthepinsoftheAN2gateinthecba_corelibrary*/這里“””可不要*/dc_shell>find(pin/Q)/*listallofthe“Q”pinsinthedesig*/setsearch_path[list~jzhu/csmchdlib/lib]setlink_path[list{*}csmc06core,csmc06pad]于link_path。#*********************************************************************************setactive_designtap_controllerread_db-netlist_only$active_design.dbset_wire_loadlargeset_load50.0[all_outputs]set_driving_cell-cellBUFF1X-pinZ[all_inputs]set_clock_latency2.0[get_clockstck]set_clock_transition0.2[get_clockstck]set_clock_uncertainty3.0-setup[get_clockstck]set_input_delay20.0-clocktck[all_inputs]set_output_delay10.0-clocktck[all_outputs]report_constraint-all_violatorsreport_timing-to[all_registers-data_pins]report_timing-to[all_outputs]4.10設計實例4.10.1DesignAnalyzer操作步驟:◆設置路徑及環(huán)境變量:在自己的工作路徑下創(chuàng)建.synopsys_dc.setup文件,并在里面設置自己的*****************************************************************search_path={~jzhu/csmchdlib/lib}+search_pathtarget_library={csmc06core.db}synthetic_library={standard.sldbdw_foundation.sldb}link_library=link_library+synthetic_library“IEEE.std_logic_1164”,\}/*.synopsys-dc.setup1*/*****************************************************************◆讀進designFile-Analyze打開AnalyzeFile窗口,在存放設計源文件的目錄vhdl/下用鼠標中鍵選擇所File-Elaborate邏輯綜合2邏輯綜合3◆設置Attributes與Constraints設置屬性attributes:設置約束constraints:3.設置delayconstraints邏輯綜合4我們可以看到這時clk管腳上出現(xiàn)了一個波形圖標。邏輯綜合5uniquify例如在執(zhí)行完uniquify命令uniquify。◆查錯邏輯綜合6從中我們可以看到模塊的標志已經(jīng)用門級表示,而且多了一個模塊邏輯綜合7其中TimingReport可檢查criticalpath在setoptions中選中AllViolations。選擇輸出到文件中,在File一欄中打◆輸出網(wǎng)表文件和SDF文件的網(wǎng)表(同樣要選中SaveAllDesignsinHierarchy)。同時我們還需輸出約束文件.sdf文件。此SDF文件與前者不同。它的保存方法為:File-SaveInfo-4.10.2dc_shell命令行批處理執(zhí)行批處理前我們需準備好腳本文件:約束文件constraint.scr,執(zhí)行文件runit1.scr。具體文件內(nèi)容見附錄。檢查約束文件constraint.scr:dc_shell–fscripts/constraint.scr–syntax_check檢查執(zhí)行文件runit.scr:dc_shell–fscripts/runit1.scr–syntax_checkdc_shell–fscripts/runit1.scr–context_check|teecontext.log運行腳本綜合你的設計:dc_shell–fscripts/runit1.scr|teerunit.log執(zhí)行完批處理文件以后,檢查報告文件。如果報告文件中沒有violations,時綜合后仿真15.1工具介紹真與系統(tǒng)行為級仿真的區(qū)別在于網(wǎng)表的不同以及所加的工藝庫的不同。5.2工藝庫的產(chǎn)生5.2.1工藝庫介紹綜合后仿真與系統(tǒng)行為級仿真的主要區(qū)別是它需要加入庫的延時信息。即在綜合后的源文件上加上時序工藝庫的說明。綜合后仿真所需的時序工藝庫可以是FTGS(full-timinggate-levelsimulation)庫,也可以是VITAL(VHDLinitiativetowardASIClibrary)。元實例有1ns的rise/falldelay.時序單元實例有2ns的rise/falldelay。即它用FTSM(full-timingstructuralmodel):用于功能驗證和普通的時序驗它用精確的傳播延時模擬每一個單元。延時模型包括0延時,功能網(wǎng)FTGS(full-timinggate-levelsimulationmodel):給門級設計適應仿真模型.它的延時模型包括傳輸先驗時和管腳間延時.除了警告,可選輸出X被如果芯片制造商沒有給你提供仿真所需的工藝庫,你可以從工藝庫的.lib或.db格式綜合后仿真25.2.2綜合庫轉換為仿真庫庫分析器的輸入文件為綜合的庫文件(.db),輸出文件為各種仿真所需的VHDL工藝調(diào)用庫分析器liban:%liban[options]lib_name.db冒險處理算法:-hazardspike|glitch|inertial|transportlibraryasiclib;綜合后仿真3useponents.all;編譯FTGSlibrary:5.2.3工藝庫.lib格式轉換為仿真庫如果你沒有綜合庫(.db),則你也可以用庫編譯器從最初的工藝庫.lib格式產(chǎn)生你仿真所需的仿真庫。這庫編譯器(LibraryCompiler)能產(chǎn)生四種類型的仿真庫:UDSM,1.通過使用外部的時序計算器(如DC),直接后注釋或前注釋到設計的每一個單FTGS庫的創(chuàng)建(圖5.2)綜合后仿真4在編寫FTGS模型代碼時,你必須確定.lib文件中的描述的時序特性和.sdf文件中的1)調(diào)整工藝庫的源文件(可選)編寫依賴狀態(tài)的時序特性綜合后仿真5vhdllib_architecturevariablevhdllib_timing_mesgvhdllib_timing_xgenvhdllib_glitch_handle-……3)調(diào)整gs_libcore包(可選)read_libvendor_library_source_name.libwrite_lib-formatvhdlven5)確定唯一的包名稱(可選)1)調(diào)整setupfile,使vhdllib_logical_name變量設置的logicalname付值為分析了的仿真文件存放的子目錄。分析工藝庫:綜合后仿真64。加密文件(可選)使用庫分析器(liban)呵encrytp_lib命令產(chǎn)生VHDL庫文件。(見圖5.5)目錄文件:run.inc/*運行simulator的批處理文件;至少包含run,quit兩個命令*/.synopsys_vss.setup:含:vhdllib_logical_n2.%lc_shell3.lc_shell>read_libstd_cell.lib4.lc_shell>vhdllib_architecture=vital5.lc_shell>vhdllib_tb_x_eq_dontcare=false綜合后仿真7照在線幫助*/7.lc_shell>write_lib-fvhdlstd_celllibrary.csh5.3綜合后的門級仿真綜合后的門級仿真在工具或命令的操作上與系統(tǒng)行為級的仿真沒什幺區(qū)別,故這里對命令的執(zhí)行不再詳訴,只給出簡單的流程。假設設計文件為design.vhd,entity的名字為design1,architecture名字為libraryasiclib;useponents.all;library目錄致libraryasiclib;useponents.all;2.目錄中不能有同字母,不同大小的目錄,否則他會無法刪除和創(chuàng)建5.4設計實例為每一個entity加上configuration說明:configurationconfiguration_nameofentity_nameis綜合后仿真forarchitecture_namecsmc06core:../csmchdlib/lib分析各種源文件的命令,我們寫在了一個腳本文件analyze2.sh里,內(nèi)容如下:*********************************************************************#!/bin/csh-fecho“------”endif../csmchdlib/vital/csmc06core_Vtables.vhd\../csmchdlib/vital/csmc06core_VITAL.vhd*********************************************************************仿真的命令文件同系統(tǒng)行為級仿真一樣,放在simfile文件里,其內(nèi)容最基本的為:其仿真結果為:(見圖5.6)綜合后仿真

溫馨提示

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

評論

0/150

提交評論