155 lines
6.5 KiB
Tcl
155 lines
6.5 KiB
Tcl
## ------------------------------------------------------------------------------------------
|
|
##
|
|
## Copyright (c) 2018 ChipMotion, Inc.
|
|
## All rights reserved.
|
|
##
|
|
## ------------------------------------------------------------------------------------------
|
|
## Filename : run_post.tcl
|
|
## Department :
|
|
## Author :
|
|
## Keywords :
|
|
## Description :
|
|
##
|
|
## RELEASE HISTORY
|
|
## VERSION DATE AUTHOR DESCRIPTION
|
|
## v0_01 20200317 wenyi.Peng Initialized for QKD-SoC project
|
|
##
|
|
## ------------------------------------------------------------------------------------------
|
|
|
|
set hostname [sh hostname]
|
|
set starttime [clock seconds]
|
|
|
|
echo "INFORM: Job excuted on $hostname"
|
|
echo "INFORM: Start job at: " [clock format $starttime -gmt false]
|
|
|
|
|
|
#################################################################################################
|
|
##
|
|
## Pre Setup
|
|
##
|
|
#################################################################################################
|
|
|
|
set svars(top_design) "dapb_fcom_phy"
|
|
set svars(upf) "false"
|
|
set svars(scan) "true"
|
|
|
|
set svars(dir,syn) [pwd]
|
|
set svars(dir,run) $svars(dir,syn)/current
|
|
set svars(dir,inputs) $svars(dir,syn)/inputs
|
|
set svars(dir,outputs) $svars(dir,run)/outputs
|
|
set svars(dir,reports) $svars(dir,run)/reports
|
|
set svars(dir,logs) $svars(dir,run)/logs
|
|
set svars(rtl,path,work) $svars(dir,run)/SYN_LIB
|
|
set sh_command_log_file $svars(dir,run)/command_post.log
|
|
set sh_output_log_file $svars(dir,run)/run_post.log
|
|
|
|
|
|
source $svars(dir,scripts)/setup.utility.tcl
|
|
#source -e -v $svars(dir,scripts)/setup.dir.tcl
|
|
source -e -v $svars(dir,scripts)/setup.dc.tcl
|
|
source -e -v $svars(dir,scripts)/setup.lib.tcl
|
|
|
|
|
|
set_svf $svars(dir,outputs)/$svars(top_design).post.svf
|
|
|
|
define_design_lib work -path $svars(rtl,path,work)
|
|
|
|
|
|
#################################################################################################
|
|
##
|
|
## Create MW Library for DCT/DCG FLOW
|
|
##
|
|
#################################################################################################
|
|
if {[shell_is_in_topographical_mode]} {
|
|
source -e -v $svars(dir,scripts)/dct_config.tcl
|
|
source -e -v $svars(dir,scripts)/setup.physical.tcl
|
|
}
|
|
|
|
################################################################################################
|
|
##
|
|
## Read and Elaborate Design
|
|
##
|
|
#################################################################################################
|
|
|
|
|
|
|
|
#20190916: follow dc_ref settings
|
|
set_app_var dc_allow_rtl_pg true
|
|
|
|
analyze -lib work -format sverilog $svars(dir,outputs)/$svars(top_design).syn.v
|
|
|
|
elaborate $svars(top_design)
|
|
|
|
current_design $svars(top_design)
|
|
|
|
link
|
|
|
|
|
|
check_design > $svars(dir,reports)/post.check_design.rpt
|
|
|
|
#if {$svars(upf) == "true"} {
|
|
# load_upf > $svars(dir,logs)/load_upf.log
|
|
#}
|
|
|
|
source -e -v $svars(dir,inputs)/design.sdc > $svars(dir,logs)/read_sta_sdc.log
|
|
source -e -v $svars(dir,inputs)/sta.drc.sdc >> $svars(dir,logs)/read_sta_sdc.log
|
|
#source -e -v $svars(dir,scripts)/mbist.tcl > $svars(dir,logs)/read_sdc_mbist.log
|
|
#source -e -v $svars(dir,scripts)/opt_setup.tcl > $svars(dir,logs)/read_opt_setup.log
|
|
source -e -v $svars(dir,scripts)/group_path.tcl > $svars(dir,logs)/read_group_path.log
|
|
|
|
#20190916: follow dc_ref settings
|
|
source -e -v $svars(dir,scripts)/setup.addition.tcl > $svars(dir,logs)/read_addition_setup.log
|
|
|
|
if {[shell_is_in_topographical_mode]} {
|
|
extract_physical_constraints -exact -no_incremental -verbose > $svars(dir,logs)/read_def.log
|
|
} else {
|
|
# set_wire_load_model -name Zero
|
|
# set_wire_load_mode top
|
|
# set auto_wire_load_selection false
|
|
set auto_wire_load_selection true
|
|
}
|
|
|
|
|
|
|
|
propagate_constraints
|
|
|
|
|
|
update_timing
|
|
|
|
|
|
|
|
report_constraint -all_violators > $svars(dir,reports)/post.all_vios.summary.rpt
|
|
check_design > $svars(dir,reports)/post.check_design.rpt
|
|
check_timing > $svars(dir,reports)/post.check_timing.rpt
|
|
check_timing -multiple_clock > $svars(dir,reports)/post.check_timing.multiple_clock.rpt
|
|
report_qor > $svars(dir,reports)/post.qor.rpt
|
|
report_clock > $svars(dir,reports)/post.clock.rpt
|
|
report_clock_gating > $svars(dir,reports)/post.clock_gating.rpt
|
|
report_clock_tree -interclock_timing -summary > $svars(dir,reports)/post.clock_tree.rpt
|
|
report_timing -nets -capacitance -transition_time -max_path 10 > $svars(dir,reports)/post.timing.rpt
|
|
report_timing_requirements > $svars(dir,reports)/post.check_timing_requirements.rpt
|
|
|
|
|
|
#################################################################################################
|
|
##
|
|
## Summary
|
|
##
|
|
#################################################################################################
|
|
set endtime [clock seconds]
|
|
echo "INFORM: End job at: " [clock format $endtime -gmt false]
|
|
|
|
set hostname [sh hostname]
|
|
set pwd [pwd]
|
|
set runtime "[format %02d [expr ($endtime - $starttime)/3600]]:[format %02d [expr (($endtime - $starttime)%3600)/60]]:[format %02d [expr ((($endtime - $starttime))%3600)%60]]"
|
|
|
|
echo [format "%-15s %-2s %-70s" "" "" ""]
|
|
echo " ------------------------------------------------------------------------------------------"
|
|
echo [format "%-15s %-2s %-70s" " | Host" "|" "$hostname"]
|
|
echo [format "%-15s %-2s %-70s" " | Working Dir" "|" "$pwd"]
|
|
echo [format "%-15s %-2s %-70s" " | runtime" "|" "$runtime"]
|
|
alias rf report_timing -from
|
|
alias rt report_timing -to
|
|
|
|
#exit
|
|
|