打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Design Compiler 综合脚本 常用命令和模板

参照自己的设计,以及自己的工艺信息,适当修改下面的Constraints    RunScript 等的脚本,添加一些相关的约束语句,就可以运行了

详细的命令请参照DC的官方User Guide等相关资料。

 

 

Invoking Design Compiler

Unix% design_vision             # Interactive GUI,WLM mode

Unix% design_vision –topographical          # Interactive GUI, Topographical mode

Unix% dc_shell-t                    #Interactive shell, WLM mode

Unix% dc_shell-t –topographical         #Interactive shell, Topographical mode

Unix% dc_shell-t –f RUN.tcl | tee –imy.log  # Batch mode

 

 

.synopsys_dc.setup

set search_path “$search_path libs consunmapped rtl”

set synthetic_librarydw_foundation.sldb                     

set target_library 65nm.db

set link_library “* $target_library$synthetic_library IP.db”

set symbol_library 65nm.sdb

define_design_lib WORK –path ./work

set_svf <my_filename.svf>

set_vsdc <my_filename.vsdc>

history keep 200

set sh_enable_page_mode false

set cache_write .

set cache_read $cache_write

suppress_message{LINT-28 LINT-32 LINT-33 UID-401}

set alib_library_analysis_path[get_unix_variable HOME]

alias h history

alias rc “report_constraint -all_violators”

 

 

 

TCL Commands and Constructs

set PER 2.0                #Define a variable and its value

echo $PER                  #Variable substitution à 2.0

set MARG 0.95

expr $PER * $MARG         # expr: *, /, +, -, >, <, =, <=, >=

set pci_ports [get_ports A]     # Imbedded command

set pci_ports [get_ports “Y??M Z*”]      # Wildcards

echo “Effctv P = \               # Soft quotes à 1.9

  [expr $PERIOD * $MARGIN]”

echo {Effctv P = \               # Hard quotes

  [expr $PERIOD * $MARGIN]}     # à Effctv P = [expr $PER * $MARG]

# Comment line

set COMMENT in_line;    # In-line comment

set MY_DESIGNS {B1.v ... B26.v}         #foreach loop

foreach DESIGN $MY_DESIGNS {

  read_verilog $DESIGN

}

for {set i 1} {$i < 27} {incr i} {     # for loop

 read_verilog BLOCK_$i.v

}

 

 

 

Helpful UNIX-like DC-shell commands

pwd

cd

ls

history

!!

!7

!report

sh <UNIX_command>

printenv

get_unix_variable ARCH

 

 

 

 

Constraints

reset_design

set_max_area 0

create_clock -period 2 –name Main_Clk[get_ports Clk1]

create_clock –period 2.5 –waveform {2 3.5}[get_ports Clk2]

create_clock –period 3.5 –name V_Clk; #VIRTUAL clock

set_clock_uncertainty –setup 0.14[get_clocks *]

set_clock_uncertainty –setup 0.21 –from[get_clocks Main_Clk] –to [get_clocks Clk2]

set_clock_latency –max 0.6 [get_clocksMain_Clk]

set_clock_latency –source –max 0.3[get_clocks Main_Clk]

set_clock_transition 0.08 [get_clocksMain_Clk]

set_input_delay -max 0.6 -clock Main_Clk[all_inputs]

set_input_delay –max 0.3 –clock Clk2–clock_fall –add_delay [get_ports “B E”]

set_input_delay -max 0.5 -clock–network_latency_included V_Clk [get_ports “A C F”]

set_output_delay -max 0.8 -clock–source_latency_included Main_Clk [all_outputs]

set_output_delay -max 1.1 -clock V_Clk[get_ports “OUT2 OUT7]

set_max_capacitance 1.2 [all_inputs]

set_load 0.080  [all_outputs]

set_load [expr [load_ofslow_proc/NAND2_3/A] * 4] [get_ports OUT3]

set_load 0.12 [all_inputs]

set_input_transition 0.12[remove_from_collection [all_inputs][get_ports B]]

set_driving_cell –lib_cell FD1 –pin Q[get_ports B]

set_operating_conditions –max WCCOM

set auto_wire_load_selection false

set_wire_load_model –name 1.6MGates

set_wire_load_mode enclosed

set_wire_load_model –name 200KGates[get_designs “SUB1 SUB2”]

set_wire_load_model –name 3.2MGates[get_ports IN_A]

set_port_fanout_number 8 [get_ports IN_A]

set_false_path -from [get_clocksAsynch_CLKA] -to [get_clocks Asynch_CLKB]

set_multicycle_path –setup 4 –from –fromA_reg -through U_Mult/Out –to B_reg

set_multicycle_path –hold 3 –from –fromA_reg -through U_Mult/Out –to B_reg

set_isolate_ports –type inverter[all_outputs]

set_ideal_network [get_ports reset*select*]

set_ideal_network [get_pins FF_SET_reg/Q]

set_ideal_network –no_propagate [get_netsCTRL]

set_ideal_latency 1.4 [get_ports reset*select*]

set_ideal_transition 0.5 [get_pins FF_SET_reg/Q]

set_scan_configuration -style<multiplexed_flip_flop | clocked_scan | lssd | aux_clock_lssd>

 

 

 

 

Checking and Removing Constraints andDirectives

report_clock; report_clock -skew

report_design

report_port –verbose

report_wire_load

report_path_groups

report_timing_requirements (–ignored)

report_auto_ungroup

report_isolate_ports

write_script –output<constraints.tcl>

check_timing

reset_path –from FF1_reg

remove_clock

remove_clock_transition

remove_clock_uncertainty

remove_input_delay

remove_output_delay

remove_driving_cell

remove_wire_load_model

 

 

 

 

Syntax Checking

Unix% dcprocheck constr_file.con

 

 

 

Physical Constraints – TopographicalMode

set_aspect_ratio

set_utilization

set_placement_area

set_rectilinear_outline

set_port_side

set_port_location

set_cell_location

create_placement_keepout

 

 

 

Misc. Reports

   #Generate A library report file

read_db library_file.db

list_libs

redirect –file reports/lib.rpt {report_lib<libname>}

report_hierarchy [-noleaf]

   #Arithmetic implementation and
   # resource-sharing info

report_resources

   #List area for all cells in the design

report_cell [get_cells –hier *]

 

 

 

Run Script

read_verilog {A.v B.v TOP.v}     or
read_vhdl {A.vhd B.vhd TOP.vhd}      or
read_ddc MY_TOP.ddc    or
acs_read_hdl MY_TOP    or
analyze –format verilog {A.v B.v TOP.v}
elaborate MY_TOP –parameters “A_WIDTH=8, B_WIDTH=16”

current_design MY_TOP

link

if {[check_design] ==0} {

   echo “Check Design Error”

   exit  # Exits DC if a check-designerror is encountered

}        #Continue if NO problems encountered

write –f ddc –hier –out unmappedd/TOP.ddc

redirect –tee –file reports/precompile.rpt{source –echo -verbose TOP.con}

redirect –append –tee –filereports/precompile.rpt {check_timing}

source<Physical_Constraints_TCL_file> or  # Source tcl constraints, ifavailable, or

extract_physical_constraints<DEF_file>        # Extract andapply from an existing

                           # DEF floorplan file


group_path -name CLK1 -critical_range <10% of CLK1 Period> –weight 5

group_path -name CLK2 -critical_range<10% of CLK2 Period> –weight 2

group_path –name INPUTS –from [all_inputs]

group_path –name OUTPUTS –to [all_outputs]

group_path –name COMBO –from [all_inputs]–to [all_outputs]

set_fix_multiple_port_nets –all–buffer_constants

*********************************************************
*                              *
*   Insert Expert, Ultra or ACS compileflow here   *
*                              *
*********************************************************

check_design

report_constraint –all_violators

report_timing –delay –to –from –through–input_pins –max_paths \

         –nworst–nets –cap –sig –group

report_area

report_qor

set verilogout_no_tri true

change_names –rule verilog –hier

write –f verilog –hier –out mapped/TOP.v

write –f ddc –hier –out mapped/TOP.ddc

write_sdc TOP.sdc

write_scan_def –out TOP_scan.def

write_physical_constraints –outputTOP_PhysConstr.tcl

exit

 

 

 

 

Object Retrieval and Manipulation(Collection Commands)

get_ports, get_pins, get_designs

get_cells, get_nets, get_clocks

get_nets –of_objects [get_pins FF1_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_registers

all_connected

all_fanin, all_fanout

all_ideal_nets

set pci_ports [get_ports pci_*]

echo $pci_ports                         # à _sel184

query_objects $pci_ports          # à {pci_1 pci_2 ...}

get_object_name $pci_ports     # à pci_1 pci_2 ...

sizeof_collection $pci_ports       # à 37

set pci_ports [add_to_collection $pci_ports\
         [get_ports CTRL*]]

set all_inputs_except_clk[remove_from_collection \
         [all_inputs] [get_ports CLK]]

compare_collections

index_collection

sort_collection

foreach_in_collection my_cells [get_cells-hier * \
         -filter “is_hierarchical ==true”] {    

echo “Instance [get_object_name $cell] ishierarchical”

}

   #Filtering operators: ==, !=, >, <, >=, <=, =~, !~

filter_collection [get_cells *] “ref_name=~ AN*”

get_cells * -filter “dont_touch == true”

get_clocks * -filter “period < 10”

   #List all cell attributes and redirect output to a file

redirect –file cell_attr \

 {list_attributes –application –class cell}

 #Grep the file for cell attributes starting with dont_

UNIX% grep dont_ cell_attr | more

   #List the value of the attribute dont_touch

get_attribute <cell_name> dont_touch

 

 

 

UltraCompile Flow - Topographical or WLM Mode

Ultra + DesignWare and DFTC licensesavailable

   #In “topo” mode (dc_shell-t –topo) specify Milkyway reference and designlibraries

create_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>

set compile_auto_ungroup_delay_num_cells99999999
set compile_auto_ungroup_count_leaf_cells true
set compile_auto_ungroup_override_wlm true

set_ungroup<top_level_and/or_pipelined_blocks> false

   #OPTIONAL: Disable unconditional auto-ungrouping
   # of DesignWare hierarchy (not usuallyrecommended)
set compile_ultra_ungroup_dw false

   #If design contains pipelined sub-designs and the pipeline registers
   # are grouped together at the input oroutput, relax timing
set_multicycle_path –setup <#_stages> -from U_Pipeline/R3_reg* –toU_Pipeline/R7_reg*

   #In “ topo” mode, if the floorplan is available, apply or extract the physicalconstraints
source <physical_constraints_file>             OR
extract_physical_constraints <DEF_file>

   #OPTIONAL: Exclude specific cells/design from adaptive retiming (-retime)
set_dont_retime <cells_or_designs> true

   #First compile
compile_ultra –scan –retime –timing|-area


   # The design hierarchy may havechanged due to auto-ungrouping/-uniquifying
reset_path -from U_Pipeline/R3_reg* -toU_Pipeline/R7_reg*

   #OPTIONAL: Maintain registered pipeline outputs if required
set_dont_touch [get_cells U_Pipeline/R12_reg*] true

   #Optimize registers if pipeline violates timing; Skip if no pipeline issues:
set_optimize_registers true –design My_Pipeline_Subdesign
optimize_registers –only_attributed_designs

   # Continue if design is NOT meetingall constraints:

   # Apply more focus on violatingcritical paths, as necessary

group_path –name <group_name> -from<path_start> -to <path_end> \
         –critical range <10% of maxdelay goal> -weight 5

   # Select appropriate second compile

   #In “topo” mode in DC v2006.06, or any mode in DC v2007.03 or later
compile_ultra –scan –incremental

  
   # In “WLM” mode in DC v2006.06
set_ultra_optimization true
compile –boundary –scan –map_effort high –incremental (-area_effortmedium|low|none)

   #In “topo” mode prior to DC v2007.03: Write out updated physical constraints
write_physical_constraints –output PhysConstr.tcl

 

 

 

DFT Flow – Expert or Ultra

DFTC license available

   #Prior to the first compile set the

   #scan cell style

set_scan_configuration –style ..

   #Perform the first test-ready compile

compile –boundary –map high –scan   # OR

compile_ultra –timing -scan

   #Continue before the next compile:

   #Read in the scan specification file

source scan_spec.tcl

   #Check for DFT rule violations

dft_drc

   #Preview the scan chains

preview_dft

   #Insert and optimize scan

insert_dft

******************************************************
*                                                                        *
*  Execute additional Ultra/Expertoptimization  *
*  techniques, as needed                                   *
*                                                                        *
******************************************************

   #After the final compile check the DFT QoR

   #and write out the scan DEF file

dft_drc –coverage_estimate
write_scan_def -out <my_design.def>

 

 

 

Some Scan Specification Commands

set_scan_state test_ready

set_dft_configuration ...

set_dft_signal ...

set_scan_path ...

set_scan_configuration ...

create_test_protocol

 

 

 

 

ExpertCompile Flow

No Ultra license available; DFTC licenseavailable

compile –boundary –scan –map_effort high


   # Continue if NOT meeting constraints

   #Note: -scan requires DFTC license

compile –boundary –scan –map_effort high–incremental \

         (-area_effortmedium|low|none)

   #Continue if NOT meeting constraints:

   #Increase max-delay priority if OK to postpone DRC fixing

set_cost_priority –delay

  # Note: The design hierarchy may have changed due to auto-
   # uniquifying

   #Apply more focus on violating critical paths, as necessary

group_path –name <group_name> -from<path_start> \

  -to<path_end> –critical range <10% of max delay goal> -weight 5

   #Repartition if design is poorly partitioned

group –design <NEW_DESIGN> -cell_name<U_NEW_CELL> \

                               {U2 U7 ...}

ungroup –start_level 2 U_NEW_CELL

compile –boundary –scan –map_effort high–incremental \

         (-area_effortmedium|low|none)

   #Or, can ungroup all hierarchy in lieu of group/ungroup

   #commands with –ungroup_all

compile –boundary –scan –map_effort high–incremental \

         (-area_effortmedium|low|none) –ungroup_all

 

 

 

 

“Pseudo Ultra” Compile Flow

Ultra license available; No DesignWarelicense available

set compile_auto_ungroup_delay_num_cells99999999

set compile_auto_ungroup_area_num_cells99999999

set compile_auto_ungroup_count_leaf_cellstrue

set compile_auto_ungroup_override_wlm true

set_ungroup<top_level_and/or_pipelined_blocks> false

   #OPTIONAL: Disable unconditional auto-ungrouping

   #of DesignWare hierarchy (not usually recommended)

set compile_ultra_ungroup_dw false   

   #If design contains pipelined sub-designs and the pipeline registers         

   #are grouped together at the input or output, relax timing

set_multicycle_path –setup <#_stages>\

       -from U_Pipeline/R3_reg* –to U_Pipeline/R7_reg*

   #Enable Ultra optimizations available for compile

set_ultra_optimization –no_auto_dwlib true

set hlo_disable_datapath_optimization true

set compile_slack_driven_buffering true

compile –boundary –scan –map_effort high–auto_ungroup delay|area \              (-area_effortmedium|low|none)

   #Note: The design hierarchy may have changed due to auto-
   # ungrouping and auto-uniquifying

reset_path -from U_Pipeline/R3_reg* -toU_Pipeline/R7_reg*

   #OPTIONAL: Maintain registered pipeline outputs if required

set_dont_touch [get_cellsU_Pipeline/R12_reg*] true

   #Optimize registers if pipeline violates timing; Skip if no pipeline issues:

set_optimize_registers true –designMy_Pipeline_Subdesign

optimize_registers –only_attributed_designs

   #Continue if design is NOT meeting all constraints:

compile –boundary –scan –map_effort high–incremental \                     (-area_effortmedium|low|none)

   #Continue if NOT meeting all constraints:

set_cost_priority –delay

   #Ungroup DesignWare components amid combinational logic

ungroup <DesignWare_components>

   #Apply more focus on violating critical paths, as necessary

group_path –name <group_name> -from<path_start> -to <path_end> \

  –critical range <10% of max delay goal> -weight 5

compile –boundary –scan –map_effort high–incremental \                     (-area_effortmedium|low|none)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
软核(IP)的timing
set_false_path
Vivado下的集成逻辑分析仪ILA 入门
Vivado Turtorial 01
Constraint I/O Delay
文件 用bat文件发布ASP.Net项目
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服