版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
1、在綜合中,ungroup命令可以去除系統(tǒng)的層次,有利于減小面積。我對比了在使用ungroup -all -flatten 命令前后的Total cell area。在使用該命令之前Total cell area是,使用之后49663,減小了一半左右。時序部分也沒有變差。那是不是綜合腳本一般都要使用ungroup呢? 請指教,謝謝。 ungroup -all當(dāng)然是能達(dá)到最大的優(yōu)化力度啊, 整體timing最好,但是有時候會導(dǎo)致功能的變化, 仿真沒法過,比如某個hier boundary沒了,因此只是有限度的ungroup, 比如-level 3, 全部ungroup打散后,沒有boundary,
2、一般功能是不會影響的,LEC來保證。但是function層次就沒有了,比如對網(wǎng)表做一些verification,如STA時一些重要的點可能找不到了,如果還要debug的話幾乎做不下去。后端fix后某些點發(fā)現(xiàn)需要做function ECO,那么很可能也沒法做了。另外ungroup也分具體情況也不是所有情況下就一定明顯減小面積,我們一般是有選擇地對個別一些聯(lián)系緊密的module會ungroup,不過目的是為了打掉boundary得到更好的timing不是面積。純屬個人理解LEC是logical equivalent check, 主要比較RTL和NETLIST, NETLIST和NETLIST的邏
3、輯功能一致性。通常來說, synthesis以后,會把RTL和綜合得到的netlist比較,以保證綜合沒有造成邏輯的錯誤。PR以后, 也會做同樣的check。 如果你仿真都能通過,當(dāng)然flat的網(wǎng)表也行啊, 就是后面的debug 和升級沒法做,LEC和formality一樣的, 是cadence的形式驗證工具,最近在做Lowpower的flow,使用UPF文件描述多電壓域設(shè)計。在做綜合的時候,把隔離單元的LEVEL SHIFTER單元的庫還有0.9v和1.08v的標(biāo)準(zhǔn)單元庫都設(shè)置在target_library中,這個時候的operating_condition應(yīng)該怎么設(shè)置呢?不同電壓域是不是要
4、設(shè)置不同的operating_condition?但是默認(rèn)UPF模式的DC_SHELL又不支持set_poerating_condition 中 -object_list選項的設(shè)置,有哪位大俠跑通過用UPF的flow能不能幫忙指導(dǎo)一下?我覺得可能是環(huán)境沒有搭好,但是又不知道從哪下手非常感謝!請問DC綜合后做STA時,需不需要把DC 產(chǎn)生的SDF讀入到PT中,讀入和不讀入對于PT,有什么區(qū)別,哪一種比較準(zhǔn)確呢?謝謝 主要看你的SDF有沒有延時信息,延時信息來自于哪里的,嚴(yán)格的說反標(biāo)SDF是有用的,主要是看你的SDF的來源是否靠譜了。如果僅僅是dc出來的,那么是沒有延時的,反標(biāo)進去也就沒有意義了.
5、 你所說的延時應(yīng)該是PR之后的真正的版圖延遲嗎,DC后的延遲是有的,不過是基于線載模型預(yù)估的而已。是不是說沒有真正的版圖延遲就不用反標(biāo)SDF到PT中,讓PT基于線載模型進行計算分析,同樣是基于線載模型分析,PT要比DC中的Design Time分析時序更為精確? 工程上我們一般不會用DC出來的sdf,PT分析所采用的也都是PR工具所提供的延遲信息 ,當(dāng)然如果0.5u以上pr的結(jié)果和前端差異也就不會太大,所以設(shè)計迭代一般一遍也就OK。但0.18u不會這樣理想,物理設(shè)計上的信息顯得至關(guān)重要,所以PR的SOC ENC也會基于連續(xù)收斂的時序引擎。還會有一種硅虛擬原型的設(shè)計方法,sdf的反標(biāo),PT分析,
6、一般工程中也不會只signoff時才會做,在重要節(jié)點都會做。前提是你承認(rèn)PT的結(jié)果是signoff的而用PT進行工程signoff個人理解,不知道全面不全面 在做STA時,一般可是直接使用STARRC抽出的SPEF進行時序分析,使用PT report timing。有時候,為了得到更準(zhǔn)確點的timing信息,需要用SDF反標(biāo)到PT中,再report timing。當(dāng)然反標(biāo)是需要時間的解決了。DC后的PT不需要反標(biāo)DC產(chǎn)生的SDF,DC后沒有真實的布線,是基于線載模型。此時PT單獨分析的時序和DC中的Design Time分析的結(jié)果是一致的。 有哪位大俠能詳細(xì)講一下set_max_transit
7、ion的作用嗎? 在STA中有個很重要, 要FIX SLEW方面的VIOLATION。這個set_max_transition就是設(shè)定SLEW上的constrain。 設(shè)置波形從10%到90%所需要的時間對延遲和功耗都有影響 廠家提供的庫中,cell延遲的值一般是通過二維非線性查找表來得到,表的兩個index分為input transition ,load capacitance,如果index得值在表內(nèi),延遲值不需要計算,如果不在表內(nèi),則需要通過內(nèi)插或外插來計算,這相應(yīng)的帶來了誤差,內(nèi)插的誤差和外插相比小得多,如果外插計算時的index超出查找表的范圍過大,計算出的數(shù)值也就沒有意義,所以庫中
8、一般都有default max_transitin,保證再此范圍內(nèi)計算的精度。至于transition 的計算用10%_90%還是20%-80%,看庫中的定義好了, 設(shè)置最大的渡越時間,就是信號邏輯的轉(zhuǎn)換時間。max_transition屬性通常用于輸入引腳。max_transition屬性定義任何轉(zhuǎn)換時間大于負(fù)載引腳max_transition指定值的連線不能連到該引腳。 針對初學(xué)者的提問,在eetop論壇里整理發(fā)表了一個FAQ,在這里做一個備份 如果您已經(jīng)有2年以上的實戰(zhàn)經(jīng)驗,下面這些雕蟲小技就不太值得您去浪費時間了。先說說作為一個有經(jīng)驗的后端(暫不包括DFT工程師和layout工程師)工
9、程師,需要掌握哪些知識4個級別: 1)知道一些基本概念, 2)簡單地掌握這門技術(shù), 3)熟練 4)精通半導(dǎo)體工藝-2RTL coding - 2綜合 - 2時序約束 - 3APR - 3DFT - 2DRC/LVS - 3仿真 - 2形式驗證 - 2以下是FAQ分類:2樓:時序約束,STA3樓:綜合DC/RC4樓:APR (floorplan, place, CTS,route)5樓:驗證(LEC,DRC,LVS等)6樓:DFT7樓:低功耗8樓:面試9樓:名詞解釋 希望我有時間完成所有的總結(jié)。下面進入正題 時序約束,STA (1) clock Q1.1 什么是同步時鐘? 時鐘頻率是整倍數(shù),并且
10、相互之間的相位是固定而且相差可預(yù)知的,才可以稱得上是同步時鐘。其他的都算異步時鐘。 比如, 5M,10M是同步 2M,3M一般算異步 一個時鐘,輸出到另一個芯片中,轉(zhuǎn)一圈后,以同樣的頻率返回到自己的芯片,因為無法確定時鐘在另一個芯片里面的latency,所以輸出的時鐘與輸入的時鐘算異步 一個時鐘進到2個PLL,就算那2個PLL的輸出頻率相同,一般也算是異步時鐘,除非你de-skew Q1.2 如何處理同步時鐘? 設(shè)計要求嚴(yán)格的公司,就算是同步時鐘,數(shù)據(jù)在同步時鐘間傳送時,依然要用meta-stability FF,可以set_false_path 如果放松要求,不用meta-stability
11、 FF,則同步時鐘之間是real path,做CTS時,同步時鐘要clock tree balance。 注意不同頻率的同步時鐘的最小時間間隔被用來檢查setup 如果上升下降沿混用的話,setup的時間間隔就只有半個時鐘周期了 Q1.3 如何處理異步時鐘? 很簡單,set_false_path 注意要from A to B,同時要from B to A Q1.4 如何定義時鐘? create_clock 如果指定某個pin/port,就是實時鐘,如果沒有指定pin和port,就是虛擬時鐘 巧妙利用waveform選項可以做出不同波形的時鐘 被定義成時鐘的net,在綜合時,自動帶有ideal
12、network和dont_touch的屬性。但是當(dāng)它被用作data計算延遲時,ideal net的屬性會自動消失 時鐘會自動穿過邏輯單元,停在時序單元的時鐘端,所以用FF產(chǎn)生的分頻時鐘要再用create_generated_clock定義一次 Q1.5 如何處理多選一時鐘? 在實際應(yīng)用當(dāng)中,如果這幾個時鐘不會同時出現(xiàn)的話,則在定義時鐘時,只選擇最快頻率的就可以了 如果是多個時鐘同時出現(xiàn),可以用set_case_analysis選一個, 也可以放它們?nèi)歼^去,但是在MUX后面把它們之間set_false_path Q1.6 巧妙定義時鐘 直接在分頻FF的Q端定義generated clock時,
13、有時會把分頻FF的時序打掉,解決辦法是在分頻FF的Q端加一個時鐘buf,從那個buf的輸出端定義generated clock,從而保證分頻FF自身的時序完整 如果從source clock到generated clock之間有多條路徑,你希望PT用指定的一條路徑來計算時序的話,可以用set_case_analysis, set_disbale_timing 或者一級一級地定義generated clock來引導(dǎo)PT達(dá)到你的要求 分頻器時序約束問題 時序分析中同一時鐘的不同路徑問題 請教如下要求的clock在pt中應(yīng)該怎么create 怎樣設(shè)set_case或者別的,才能讓pt選擇同一條clo
14、ck path Q1.7 什么時候需要設(shè)置latency? latency分為source latency 和 network latency 兩種。 source latency是源時鐘自帶的,network latency就是CTS后的clock tree insertion delay。 在綜合時,一般不需要latency, 除非, 已知不同clock帶有不同的source latency,并且它們之間有時序要求 預(yù)知不同clock會有不同的clock tree insertion delay,不想平衡它們,但是要滿足他們之間的時序要求 做完CTS后,要把network latency去
15、掉 請問set_clock_latency 設(shè)太大會有什么不好 Q1.8 如何設(shè)置uncertainty clock uncertainty分為setup和hold,preCTS和postCTS幾種不同的情況 一般的處理原則是: preCTS,setup: uncertainty = PLL jitter + 預(yù)估的clock skew preCTS,hold: uncertainty = 預(yù)估的clock skew postCTS,set_propagate_clock all_clocks postCTS,setup: uncertainty = PLL jitter postCTS,ho
16、ld: uncertainty = 0 有時fundry要求hold uncertainty保留一定的量,這時就把那個保留量加到上面的公式中 sdc文件中對clk的uncertainty、transition、latency的設(shè)置(2) IO端口的約束 Q2.1 如何加IO端口的約束? 最普通的方法是 對輸入端,set_input_delay, set_driving_cell (也有用set_input_transition的,但是不多見) 對輸出端,set_output_delay,set_load 對時鐘端,set_clock_transition dc綜合時的clock transit
17、ion應(yīng)該參考什么設(shè)定? set_drive ,set_load Q2.2 哪些端口不需要約束? 靜態(tài)信號可以set_false_path,比如reset,test_mode,function_mode_select 不能真的什么約束都不加 Q2.3 什么樣的reset信號可以set_false_path? 如果在工作時,reset信號有效時,時鐘信號不翻轉(zhuǎn),就可以set_false_path 如果reset信號動作時,時鐘也有動作的話,就不能set_false_path Q2.4 像reset那樣的high fanout信號需要設(shè)定為ideal net嗎? 如果是false path的話,可
18、以設(shè)為ideal net 一般不需要設(shè)為ideal net,讓DC加入buffer tree后,有利于估算功耗和面積 Q2.5 如果有一組輸出信號,需要他們之間對齊,但是不太在乎有多大的延遲,這時應(yīng)該如何約束? 如果有輸出時鐘的話,在那個輸出時鐘端口定義一個generated_clock,其它信號的output_delay都相對于這個generated_clock而定。只要有max和min,就可以把所有信號卡在一個范圍之內(nèi) 如果沒有輸出時鐘的話,用set_output_delay -reference_pin Q2.6 如何計算input和output delay? 如果是block的inpu
19、t和output delay,可以預(yù)先分配,比如輸出端,輸入端各1/3,中間的連接1/3 block的端口最好都flop-in,flop-out 如果是chip IO,要度其他芯片的IO時序和電路板上面的延遲,比較麻煩 set_input_delay的時間設(shè)置(3) DRV DRV有時也加DRC,與物理檢測的DRC不是一個概念 DRV包括, set_max_transition 與工藝相關(guān),65nm的話,在0.6ns左右 set_max_fanout 與工藝相關(guān),一般在1220之間 set_max_capacitance set_max_power set_max_area (4) false
20、 path,multicycle path Q4.1 什么情況下需要set_false_path? 異步時鐘之間, 到meta-stability 的第一個FF路徑, 靜態(tài)信號 Q4.2 何時會用到multicycle_path? 太長的path, 不會每個周期都變的信號 注意:在RTL中,前端一定要多周期工作一次的功能 一般set_multicycle_path -setup 要同時寫set_multicycle_path -hold (5) wire load model wire load model是一種簡單地根據(jù)fanout來估算wire delay的方法,在綜合時,一般根據(jù)設(shè)計的大
21、小選擇對應(yīng)的WLM 有時也會用zero wire load model,這時的clock period要相應(yīng)減小1525%,或者clock uncertainty增加1525% set_wire_load_model 兩種模式top和enclosed到底有什么區(qū)別? 更加準(zhǔn)確的計算wire delay的方法是DC topo和RC physical, 他們在綜合時會粗略地做個place,然后根據(jù)距離來計算延遲(6) clock gating Q6.1 如何加clock gating? 局部的clock gating在綜合時,會自動加進去。加clock gating后,不但會減小功耗,還會改善時序
22、,因為本來到D端的邏輯,一部分被移到CK端了,簡化了D端的邏輯 整個block的clock gating,一般直接在RTL里面加,因為DC沒有那么聰明 Q6.2 需要對clock gating加什么特別的約束嗎? 如果使用標(biāo)準(zhǔn)庫里面的ICG單元,不需要附加任何特別的約束,前后端的工具都認(rèn)得它 如果用latch+and自己搭的clock gating,你要對那個and單元set_disable_clock_gating_check,還要告訴后端,一定把latch和and擺在一起 一般只在沒有動態(tài)切換時鐘時,才可以用一個and/or做clock gating,這時也要set_disable_clo
23、ck_gating_check clock gating cell約束 某個domain的clk通過gating關(guān)斷重啟后,對這個domain做復(fù)位有沒有必要?(7) case_analysis set_case_analysis可以強制某個node為0/1 這個0/1會沿著純邏輯組合單元向前傳送,如果沒有特別設(shè)定的話,會停在時序單元上 注意,只是是向前傳,不會向左右2邊和向后傳 舉例: 如果設(shè)在輸出端上,那么所有fanin端都會被強制為0/1 如果只設(shè)在某個輸入端上,與之相連的輸出端和其他輸入端都不受影響(8) ideal net/network ideal_net只作用于這條net ide
24、al_network會把這個屬性傳送下去 clock net自動帶有ideal net屬性 其他net,何時需要設(shè)定ideal net?見Q2.4 綜合腳本的樣本現(xiàn)在到處都是,最好找一個,照貓畫虎改改用建議把時序約束腳本與綜合腳本分開存放,這樣時序約束可以單獨使用。(1)綜合的注意事項 Q1.1 需要fix hold嗎? 不需要,hold交由后端去做就好了。 所以綜合時,不需要讀入min.lib,不用設(shè)wc_bc等復(fù)雜的選項 Q1.2 綜合出來的網(wǎng)表如何驗證? 如RTL做形式驗證 gate-sim (網(wǎng)表仿真)。不要用延遲。 不需要從DC輸出SDF,因為那個根本不準(zhǔn),而且它也無法保證沒有hol
25、d違反 Q1.3 如何讓DC自動插入clock gating 在腳本中加入 set power_cg_always_enable_registers true set_max_leakage_power 0.0 set_max_dynamic_power 0.0 set_clock_gating_style (指定ICG) insert_clock_gating replace_clock_gates Q1.4 綜合時要檢查哪些項目? 最最起碼要做, 綜合前,check_design,check_timing,保證所有的path都有約束(含timing exception) 綜合后,repor
26、t_timing, report_constraint,report_area,report_power,report_qor Q1.5 如何解決綜合后setup的違法? 多綜合幾遍 檢查約束是否合理 最后只好改RTL了 Q1.6 如何判斷約束是否合理? 什么是合理的約束還真不好說,但是下面是一些不合理的情況,遇到了一定得解決 2#樓里面所列約束項目不完整的 startpoint或endpoint的clock cycle特別大的,說明那是異步時鐘 某個cell或net延遲很大的,可能是clock net當(dāng)作signal用了,設(shè)了dont_touch Q1.7 如何得到更好的網(wǎng)表? 對于DC,一
27、般人們都喜歡把clock period調(diào)小一點(1025%),那樣DC會給你個timing比較好的網(wǎng)表,但是代價的面積的增大和功耗的增加。當(dāng)然,你調(diào)clock uncertainty也有同樣的效果 #*# File name: syn_script_templet.tcl# Author: xxx xxx xxx# Description: This file is just only a templet for synthesis, including basic synthesis flow.# Users can make it as reference design. #*remove
28、_design -all#*# read design to DC memory, Assuming there are four modules#*read -f verilog ./design/mod.vread -f verilog ./design/mod1.vread -f verilog ./design/mod2.vread -f verilog ./design/mod3.v# or read like thisset all_modules mod mod1 mod2 mod3 foreach (current_module, all_modules)set design_
29、path ./#*/# Set_dont_touch Attribute on cell, net, reference or design# Set_dont_touch_network Attribute on clock, pin, ports#*/set_dont_touch_network find(port,CLK)set_dont_touch get_cells xxxx/xxxx/aaaset_dont_touch get_nets bbbbset_dont_touch get_designs ssss#*/# create clock info#*/create_clock
30、-name clk -period 2.56 -waveform 0 1.28 get_pins ,s_x/I_PMA/I_PMA7/RXBCLKcreate_generated_clock -name clk_125 -source A_x/clk -edges 1 3 5 get_pins p_x/clk_125set_clock_uncertainty -setup 0.2 clkset_clock_uncertainty -hold 0.02 clkset_clock_uncertainty -setup 0.2 clk_125set_clock_uncertainty -hold 0
31、.02 clk_125#*/# exceptions#*/set_false_path -from clk_m -to clk_125set_max_delay 8 -from get_pins a_x/A -to get_pins P_x/x_x/dcurrent_design mcucoreset_multicycle_path 3 -through alu_x/mulb_x/*#*/# Set Disable Timing #*/set_disable_timing -from CLKA -to CLKB synopsys_mem/TP8X16C1set_disable_timing -
32、from CLKB -to CLKA synopsys_mem/TP8X16C1#*/# Report Clock Related Information#*/report_clock -attributes ./design/report_clock.repreport_clock -skew ./design/report_clock.repreport_design ./design/report_design.repreport_port -verbose ./design/report_port.rep#*/# Set Wire_load_model#*/linkset_wire_l
33、oad_model -name KME_DEFAULT -library j1oaset_wire_load_mode enclosed#*/# Load & Input_transition Related Information#*/set_input_delay 1.0 all_inputsset_output_delay 1.0 all_outputsset_load -pin_load 75 get_ports xxx* set_load -pin_load 15 get_ports bbb* set_load -pin_load 15 get_ports ggg*#*/# MISC
34、#*/current_design designset_fix_multiple_port_nets -buffer_constants -allset_cost_priority -delaycurrent_design designuniquifylinkcompile -map_effort high#*/# Report Related Information #*/current_design designreport_path_group ./design/report_path_group.repreport_cell ./design/report_cell.repreport
35、_hierarchy ./design/report_hierarchy.repcheck_design ./design/check_design.repreport_area ./design/report_area.repreport_timing -group clk_125 -max_paths 20 ./design/report_timing_clk_125.repreport_timing -group clk_m -max_paths 20 ./design/report_timing_clk_m.repreport_timing -path full -delay max
36、-transition_time -capacitance ./design/report_timing.repreport_constraint -max_delay -all_violators ./design/report_constraint_slack_only.repreport_constraint -max_delay -verbose -all_violators ./design/report_constraint.rep#*/# Write Netlist & Sdf File #*/ungroup -all -flattenwrite -format edif -hi
37、erarchy -output ./netlist/design.edifwrite -h -f verilog -o ./netlist/design.vghwrite_sdf -version 2.1 -context verilog ./sdf/design.sdfquitSynthesis Summary 邏輯綜合總結(jié)綜合概述綜合技術(shù)的研究可以追溯到20世紀(jì)60年代,IBM公司T.J.Watson研究中心開發(fā)ALERT系統(tǒng),將寄存器傳輸級算法描述轉(zhuǎn)化成邏輯級的結(jié)構(gòu)實現(xiàn);20世紀(jì)70年代,綜合技術(shù)發(fā)展迅速,但主要致力于較低層次的邏輯綜合和版圖綜合;20世紀(jì)80年代中期,專用集成電路的廣泛
38、應(yīng)用,要求芯片設(shè)計大規(guī)模、高性能、短周期,大大推動了從算法級設(shè)計描述向寄存器傳輸級設(shè)計描述轉(zhuǎn)換的高層次綜合技術(shù)。 1.邏輯綜合概念邏輯綜合負(fù)責(zé)將寄存器傳輸級的結(jié)構(gòu)描述轉(zhuǎn)化為邏輯層的結(jié)構(gòu)描述,以及將邏輯層的結(jié)構(gòu)描述轉(zhuǎn)化為電路的結(jié)構(gòu)描述。在數(shù)字IC設(shè)計領(lǐng)域常用的EDA綜合工具中,最權(quán)威的要算Synopsys公司提供的綜合工具。Synopsys公司提供的Design Compiler(DC)是業(yè)界流行的、功能強大的邏輯綜合工具。用戶只需要輸入設(shè)計規(guī)格的HDL描述和時間約束,就可能得到較為優(yōu)化的門級綜合網(wǎng)表。此外,DC還集成了功能強大的靜態(tài)時序分析引擎,并支持與后端布局布線工具交互工作。 2.邏輯綜合
39、的流程從某種意義而言,綜合就是將設(shè)計的HDL描述轉(zhuǎn)化為門級網(wǎng)表的過程。Synopsys公司提供的綜合工具DC把綜合分為三個步驟進行:synthesistranslationmappingoptimization。Translation是指把設(shè)計的HDL描述轉(zhuǎn)化為GTECH庫元件組成的邏輯電路;GTECH庫是Synopsys公司提供的通用的、獨立于工藝的元件庫。Mapping是指將GTECH庫元件映射到某一特定的半導(dǎo)體工藝庫上,此時的電路網(wǎng)表包含了相關(guān)的工藝參數(shù)。Optimization是根據(jù)設(shè)計者設(shè)定的時延、面積、線負(fù)載模型等綜合約束條件對電路網(wǎng)表進一步優(yōu)化的過程。從綜合工具的使用流程來看,綜
40、合包括綜合環(huán)境的設(shè)置,綜合約束,綜合優(yōu)化,綜合與后端流程等。綜合約束用來設(shè)定電路綜合的目標(biāo),它包括設(shè)計環(huán)境約束、時間約束和面積約束。設(shè)計環(huán)境約束: 指的是用來描述設(shè)計在工作時的溫度、電壓、驅(qū)動、負(fù)載等外部條件的一系列屬性?;镜沫h(huán)境設(shè)置內(nèi)容包括工作條件、負(fù)載模型、系統(tǒng)接口驅(qū)動或扇出能力等設(shè)置。這些屬性約束在電路綜合時是必須的,如果用戶沒有進行顯式的說明,則DC在綜合的時候會采用默認(rèn)值。時間約束內(nèi)容:包括定義時鐘、定義時鐘網(wǎng)絡(luò)的時間約束和時序路徑時間約束設(shè)定,以及非同步設(shè)計的時間約束等。了解延遲的計算是定義恰如其分的時間約束的關(guān)鍵。Synopsys公司支持幾種延遲模型:一是CMOS通用的延遲模型
41、,二是CMOS分段的線性延遲模型,三是非線性的查表延遲模型。深亞微米的設(shè)計,前兩種模型并不常用,非線性的延遲模型以輸入的遷越時間和輸出電容負(fù)載為參變量計算延遲的時間值,其結(jié)果以表格的形式列出供DC查找。面積約束: 和時間約束之間是一對矛盾且需要折中的關(guān)系,DC綜合默認(rèn)為時間約束比面積約束擁有更高的優(yōu)先級。DC優(yōu)化時默認(rèn)不進行面積優(yōu)化,如果你關(guān)注于芯片的面積,可以使用set_max_area命令設(shè)定面積的約束,使得DC完成時序約束之后繼續(xù)進行面積優(yōu)化。在設(shè)定綜合約束之后,一般并不馬上進行綜合優(yōu)化。因為對于一個較大的設(shè)計來說,綜合一次時間很長。因此,綜合前確認(rèn)綜合約束命令是否正確添加到設(shè)計中時很有
42、必要的,可以減少由于綜合約束不正確重新綜合優(yōu)化的風(fēng)險,減少綜合反復(fù)的時間。檢查綜合約束設(shè)置的命令有report_design, report_port verbose, report_clock -skew, report_constraints, report_timimg_requirement等。 許多版圖工具只接受Verilog或EDIF格式的綜合網(wǎng)表作為輸入。在綜合后提供Verilog格式的網(wǎng)表送給后端的版圖工具,IC工程師還必須對綜合的網(wǎng)表做好一下處理:1徹底解決多次例化同一子模塊的問題2修正設(shè)計中部分連線的命名以簡化綜合網(wǎng)表3刪除整個設(shè)計中懸空的端口4確保每個實例化單元的引腳都是
43、可見的5避免網(wǎng)表中存在assign語句、傳輸門和三態(tài)連線的定義6避免網(wǎng)表中存在不必要的門控時鐘或門控復(fù)位信號7避免網(wǎng)表中引用的實例化名不存在對應(yīng)的實現(xiàn)邏輯在綜合之后,我們還得對綜合后的網(wǎng)表進行門級仿真,在門級仿真上Synopsys公司提供的VCS仿真工具在服務(wù)器上運行的速度是比較快的。門級仿真過程中還有一步就是帶時序反標(biāo)的時序仿真,通過DC或者PT寫出SDF文件,在網(wǎng)表中將邏輯延遲和線延遲反標(biāo)入電路中,模擬更加真實的情況。下面將講述如何write synthesis script 什么是綜合呢?synthesis,臺灣翻譯為合成,其作用就是將硬件描述語言的RTL級代碼轉(zhuǎn)變?yōu)殚T級網(wǎng)表。當(dāng)然,現(xiàn)在
44、綜合技術(shù)已經(jīng)很成熟了,還有推出 的行為(behavioral)綜合和物理(physical)綜合。我們這里討論的是邏輯(logic)綜合。 綜合技術(shù)是提高設(shè)計產(chǎn)能的一個很重要的技術(shù),沒有綜合技術(shù)的發(fā)展,我們就不可能用HDL實現(xiàn)電路的設(shè)計,因為HDL開始是用來供電路仿真建模使用的,到了 后來才把其中一部分子集作為可綜合的語言,也就是我們使用的RTL CODE。很多人入門都用HDL做設(shè)計,就以為HDL就只是用來做設(shè)計的,沒有看到HDL最初始的一面,所以在驗證的時候,就無法用好HDL另外一部分強 大的功能。有時間還是可以看看Writing Testbench這本書,增強對HDL語言在驗證方面作用的了
45、解,也是提高對HDL認(rèn)識很好的補充。 我們以DesignCompiler為例子講解綜合的過程。 首先,綜合就要必須要用綜合庫,這個你可以向廠家要,綜合庫可以通過.lib這個庫文件轉(zhuǎn)變成.db綜合庫,這個基本過程可以Design Compiler里面實現(xiàn),綜合庫里面有什么內(nèi)容呢? .db 是無法閱讀的,.lib是可以閱讀的,里面有庫的基本參數(shù)的單位,庫運行的條件,各種參數(shù),最重要的是兩個部分,一個是WLM,即Wire Load Model,一個Gate的定義(輸入輸出,功能,時序參數(shù),面積等等);這只是StandarCell的庫,另外還有其他庫,如RAM,DSP的綜合 庫,都以.db的形式存在。
46、 綜合需要三種輸入,一個是代碼,一個是綜合庫,一個是綜合腳本Script。綜合腳本主要包括了一下內(nèi)容,對綜合工具環(huán)境的配置,對綜合對象外部環(huán)境的設(shè) 置(operation condiction),對WLD的設(shè)置,對綜合對象的時序的約束,綜合策略,綜合優(yōu)化,綜合報告和輸出。下面給入門的人一個現(xiàn)成的Script例子 (tcl script)# Set Directory #set LIB typical set SYNDIR $HOME set SRCDIR $HOME/src set SCRDIR $HOME/script set RPTDIR $HOME/rptset SYNDB $HOME/
47、dbset SYNOPSYS /cad/synopsys/# Enviroment #define_design_lib WORK -path $SYNDIR/WORKset bus_naming_style %s_%dset verilogout_single_bit falseset hdlin_enable_vpp trueset hdlin_enable_vpp trueset verilogout_no_tri trueset write_name_nets_same_as_ports trueset compile_preserve_sync_resets trueset_ultra_optimization trueset verilogout_equation falseset verilogout_no_tri trueset sdc_write_unambiguous_names false# Library #set synopsys_path $SYNOPSYS/libraries/syn $SYNOPSYS/dw/sim_verset standarcell_path *set search_path $search_path $synopsys_path $stan
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年智能控制混凝土輸送泵租賃與操作培訓(xùn)合同2篇
- 二零二五年度門窗品牌代理銷售合同4篇
- 二零二五版毛竹深加工企業(yè)原料采購砍伐合同4篇
- 二零二五版文化旅游融合發(fā)展合同范本4篇
- 2025年度跨境電商物流配送采購合同文本2篇
- 《微電子技術(shù)及應(yīng)用》課件
- 2025年度外墻施工進度與質(zhì)量監(jiān)督合同封面
- 2025年度電影特效導(dǎo)演簽約合同正式版3篇
- 二零二五年度綠色廚房項目炊事員綜合服務(wù)合同4篇
- 二零二五版新型社區(qū)職工食堂運營管理承包合同(2025年度)
- 公司組織架構(gòu)圖(可編輯模版)
- 1汽輪機跳閘事故演練
- 陜西省銅川市各縣區(qū)鄉(xiāng)鎮(zhèn)行政村村莊村名居民村民委員會明細(xì)
- 禮品(禮金)上交登記臺賬
- 普通高中英語課程標(biāo)準(zhǔn)詞匯表
- 北師大版七年級數(shù)學(xué)上冊教案(全冊完整版)教學(xué)設(shè)計含教學(xué)反思
- 2023高中物理步步高大一輪 第五章 第1講 萬有引力定律及應(yīng)用
- 青少年軟件編程(Scratch)練習(xí)題及答案
- 浙江省公務(wù)員考試面試真題答案及解析精選
- 系統(tǒng)性紅斑狼瘡-第九版內(nèi)科學(xué)
- 全統(tǒng)定額工程量計算規(guī)則1994
評論
0/150
提交評論