|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
这个是师兄交给我的设计,各种代码风格混搭,各种蛋碎。
基本描述:top的rst引脚连接了五花八门的reg,同步复位、异步复位和同步置数,综合脚本对rst设置了ideal属性,经过长达12小时的综合过程后输入路径仍然有高达1300+的时延,critical path始点为rst,终点为某一同步复位reg的reset端。
问题1:由于已经对rst设置了ideal属性,为何时序rst网络仍然有如此高的时延?
问题2:是否对于rst的同步路径,DC仍然做时序检查?(综合脚本对rst设置了input_delay和drive_cell)
附上综合脚本:
## Load design file
read_file -format vhdl "./src/pn_k16.vhd"
read_file -format vhdl "./src/pn_n16.vhd"
read_file -format vhdl "./src/mode.vhd"
read_file -format vhdl "./src/graycounter.vhd"
read_file -format vhdl "./src/T1/addr_ctrl.vhd"
read_file -format vhdl "./src/T1/output_ctrl.vhd"
read_file -format vhdl "./src/T1/accu.vhd"
read_file -format vhdl "./src/T3/rom_t3.vhd"
read_file -format vhdl "./src/T1/enc12_ram00.vhd"
read_file -format vhdl "./src/T1/enc12_ram01.vhd"
read_file -format vhdl "./src/T1/enc12_ram02.vhd"
read_file -format vhdl "./src/T1/enc23_ram00.vhd"
read_file -format vhdl "./src/T1/enc23_ram01.vhd"
read_file -format vhdl "./src/T1/enc23_ram02.vhd"
read_file -format vhdl "./src/T1/enc56_ram00.vhd"
read_file -format vhdl "./src/T1/enc56_ram01.vhd"
read_file -format vhdl "./src/T1/enc56_ram02.vhd"
read_file -format vhdl "./src/T1/ram_single.vhd"
read_file -format vhdl "./src/divider.vhd"
read_file -format vhdl "./src/mixer_16.vhd"
read_file -format vhdl "./src/asyn_fifo_reg.vhd"
read_file -format vhdl "./src/T1/ram_info.vhd"
read_file -format vhdl "./src/asyn_fifo_dpram.vhd"
read_file -format vhdl "./src/T1/enc_t1.vhd"
read_file -format vhdl "./src/T2/enc_t2.vhd"
read_file -format vhdl "./src/T3/enc_t3.vhd"
read_file -format vhdl "./src/combine.vhd"
read_file -format vhdl "./src/framer_16.vhd"
read_file -format vhdl "./src/enc_top.vhd"
current_design enc_top
link
check_design
## Define the global attributes for timing analysis
set INPUT_DELAY 0.5
set OUTPUT_DELAY 1.0
set CLK_PERIOD1 15
set CLK_PERIOD2 10
set CLK_UNCERTAINTY 1.5
set CLK_TRANSITION 0.3
set CLK_SRC_PORT [get_ports clk_src]
set CLK_ENC_PORT [get_ports clk_enc]
set CLK_OUT_PORT [get_ports clk_out]
## Set design constaint
set_max_fanout 20 [current_design]
# Set the max signal transition time for a net,
# as is written in this script, the nets of the
# whole design would specified.
set_max_transition 1.0 [current_design]
# Clock constraint
create_clock -period $CLK_PERIOD1 -waveform [list 0 7.5] -name sys_clk_src $CLK_SRC_PORT
create_clock -period $CLK_PERIOD2 -waveform [list 0 5] -name sys_clk_enc $CLK_ENC_PORT
create_clock -period $CLK_PERIOD2 -waveform [list 0 5] -name sys_clk_out $CLK_OUT_PORT
set_dont_use {scx2_tsmc_cl013g_ss_1p08v_125c/*LAT*}
set_dont_use {scx2_tsmc_cl013g_ss_1p08v_125c/SDFF* scx2_tsmc_cl013g_ss_1p08v_125c/SEDFF*}
set_dont_use {scx2_tsmc_cl013g_ff_1p32v_0c/*LAT*}
set_dont_use {scx2_tsmc_cl013g_ff_1p32v_0c/SDFF* scx2_tsmc_cl013g_ff_1p32v_0c/SEDFF*}
set_clock_uncertainty $CLK_UNCERTAINTY sys_clk_src
set_clock_transition $CLK_TRANSITION sys_clk_src
set_clock_uncertainty $CLK_UNCERTAINTY sys_clk_enc
set_clock_transition $CLK_TRANSITION sys_clk_enc
set_clock_uncertainty $CLK_UNCERTAINTY sys_clk_out
set_clock_transition $CLK_TRANSITION sys_clk_out
# This command specify the net with particular drive resistance.
# The 0 value of drive resistance means the highest drive strength
# to the clock ports.
set_drive 0 [get_ports clk_src]
set_drive 0 [get_ports clk_enc]
set_drive 0 [get_ports clk_out]
set_dont_touch_network [get_clocks]
set_ideal_network [get_ports rst]
set_false_path -from [get_ports pat_*]
# set_false_path -from [get_clock sys_clk_src] -to [get_clock sys_clk_enc]
# set_false_path -from [get_clock sys_clk_src] -to [get_clock sys_clk_out]
# set_false_path -from [get_clock sys_clk_out] -to [get_clock sys_clk_src]
# set_false_path -from [get_clock sys_clk_enc] -to [get_clock sys_clk_src]
# set_false_path -from [get_clock sys_clk_enc] -to [get_clock sys_clk_out]
# set_false_path -from [get_clock sys_clk_out] -to [get_clock sys_clk_enc]
# set_dont_touch_network [get_ports rst]
set_driving_cell -lib_cell PDDW0204CDG -library tpd013nv3wc -pin C [get_ports din] -no_design_rule
set_driving_cell -lib_cell PDDW0204CDG -library tpd013nv3wc -pin C [get_ports pat_code] -no_design_rule
set_driving_cell -lib_cell PDDW0204CDG -library tpd013nv3wc -pin C [get_ports pat_disturb] -no_design_rule
set_driving_cell -lib_cell PDDW0204CDG -library tpd013nv3wc -pin C [get_ports pat_frame] -no_design_rule
set_driving_cell -lib_cell PDDW0204CDG -library tpd013nv3wc -pin C [get_ports pat_mix] -no_design_rule
set_driving_cell -library tpd013nv3wc -lib_cell PDDW0204CDG -pin C [get_ports rst] -no_design_rule
set_driving_cell -library tpd013nv3wc -lib_cell PDDW0204CDG -pin C [get_ports din_en] -no_design_rule
set_load [load_of [get_lib_pins tpd013nv3wc/PDDW0204CDG/I]] [all_outputs]
set INPUT_PORTS [remove_from_collection [all_inputs] [get_ports clk_*]]
set_input_delay $INPUT_DELAY -clock sys_clk_src $INPUT_PORTS
set_output_delay $OUTPUT_DELAY -clock sys_clk_out [all_outputs]
## Operating environment configuration
set_operating_conditions -max "ss_1p08v_125c" -max_library "scx2_tsmc_cl013g_ss_1p08v_125c" -min "ff_1p32v_0c" -min_library "scx2_tsmc_cl013g_ff_1p32v_0c"
set auto_wire_load_selection false
set_wire_load_model -name TSMC256K_Conservative
set_wire_load_mode top
current_design enc_top
foreach_in_collection des [get_designs ] {
current_design $des
set_fix_multiple_port_nets -all -buffer_constants
set verilogout_no_tri true
set verilogout_equation false
}
current_design enc_top
compile_ultra
set_fix_hold sys_clk_src
set_fix_hold sys_clk_enc
set_fix_hold sys_clk_out
compile_ultra -timing_high_effort_script -incremental
group_path -name I2C -from [remove_from_collection [all_inputs] [get_ports clk_*]]
group_path -name C2O -to [all_outputs]
group_path -name I2O -from [remove_from_collection [all_inputs] [get_ports clk_*]] -to [all_outputs]
current_design enc_top |
|