DC综合后sdf延时过大 请教大神怎么办?deadline快到了!急!
今天用DC综合RTL代码,foundry给了三个库:CSM35OS142_min.dbCSMOS142_typ.dbCSM35OS142_max.db ,我想让DC在综合时用max和min库分别考虑建立和保持时间违约。但综合后发现导出的sdf文件里延时特别大:(INTERCONNECT CLK u1/q6_reg_7_/CP (0.000:17244.033:17244.033))
(INTERCONNECT u1/q6_reg_2_/Q u1/q6_reg_3_/D (0.000:0.001:0.001))
(INTERCONNECT CLK u1/q6_reg_3_/CP (0.000:17244.033:17244.033))
(INTERCONNECT u1/q5_reg_6_/Q u1/q5_reg_7_/D (0.000:0.001:0.001))
(INTERCONNECT CLK u1/q5_reg_7_/CP (0.000:17244.033:17244.033))
(INTERCONNECT u1/q5_reg_2_/Q u1/q5_reg_3_/D (0.000:0.001:0.001))
(INTERCONNECT CLK u1/q5_reg_3_/CP (0.000:17244.033:17244.033))
(INTERCONNECT u1/q4_reg_6_/Q u1/q4_reg_7_/D (0.000:0.001:0.001))
(INTERCONNECT CLK u1/q4_reg_7_/CP (0.000:17244.033:17244.033))
...................
从sdf可以看到,所有CLK到register的CP端的延迟在max库里都很大。反标到网表里做动态仿真时并没有给timing violation提示,但是就是没有正常信号。这个到底是什么原因呢 是set_operating_conditions这个命令我设置的不对? 时序PT里面都过了,没有时序违约。
我的DC综合脚本如下:
current_design"shift_inputreg"
link
check_design
set_wire_load_mode enclosed
set_operating_conditions -analysis_type bc_wc -max WCCOM -max_library CSM35OS142_max -min BCCOM -min_library CSM35OS142_min
create_clock -name "CLK" -period 50 -waveform {0 25} {CLK}
set_dont_touch_network [find clock]
set_clock_uncertainty-setup1 [get_clocks CLK]
set_clock_uncertainty -hold 0.1 [get_clocks CLK]
set_clock_latency 2.0 [get_clocks CLK]
set_fix_holdCLK
set_max_area 0
set_input_delay15 -max-clock CLK [remove_from_collection [all_inputs] [get_port CLK]]
set_input_delay 2-min -clock CLK [remove_from_collection [all_inputs] [get_port CLK]]
set_output_delay10.0 -clock CLK [all_outputs]
set_max_transition 0.5shift_inputreg
set_load0.2 [all_outputs]
set_max_dynamic_power 0 mW
link
uniquify
set_structure -timing true -boolean true
compile -map_effort high-area_effort medium -exact_map
#write netlist for STA
change_names -rule verilog -hier
set verilogout_no_tritrue
set_fix_multiple_port_nets -all
write -format verilog -hierarchy -output shift_inputreg0411_after_syn.v
write_sdfshift_inputreg0411.sdf
write_sdcshift_inputreg0411.sdc
综合时有一个
Warning: Operating condition WCCOM set on design shift_inputreg has different process,
voltage and temperatures parameters than the parameters at which target library
CSM35OS142_min is characterized. Delays may be inaccurate as a result. (OPT-998) 我的库是这样设置的:
set search_path"/home/LHG/zhangzy/2004/2004.12/csm35/v1.0/synopsys/models"
set link_library"CSM35OS142_max.db CSM35OS142_min.dbCSM35IO122_max.db CSM35IO122_min.db"
set target_library"CSM35OS142_max.db CSM35OS142_min.db CSM35IO122_max.db CSM35IO122_min.db"
set symbol_library" EXD.sdb"这样设置应该没有问题吧
综合时有Warning: Operating condition WCCOM set on design shift_inputreg has different process,
voltage and temperatures parameters than the parameters at which target library
CSM35OS142_min is characterized. Delays may be inaccurate as a result. (OPT-998)我的setup命令是:
set search_path
"/home/LHG/zhangzy/2004/2004.12/csm35/v1.0/synopsys/models"
set link_library"CSM35OS142_max.db CSM35OS142_min.dbCSM35IO122_max.db CSM35IO122_min.db"
set target_library"CSM35OS142_max.db CSM35OS142_min.db CSM35IO122_max.db CSM35IO122_min.db"
set symbol_library" EXD.sdb"
有个set_min_library分别设置max和min库
如果你只是DC 综合 设置max 就好了。然后设置OCV
你好!我综合用了max min两个库,想用bc_wc分析。ocv感觉太难了,还不会用
综合后延迟过大,一般是某个net扇出过高,report_nets 命令可以查看一下。另外综合后的sdf准确度相当低,小编即使想做门级仿真,也不需要反标sdf的。
嗯,sdf里面延时大的部分都是CLK到寄存器的ck端,而且时钟CLK是一个高扇出的网络,大约有5000多个扇出吧。但是我将high_fanout_net_threshold这个变量设置的很大(10000)后再综合还是有很大的延时。
贴timing rpt来看, 另外target_library link_library 设max即可
set_ideal_network -no_propagate 这个命令也许对你有帮助
学习一下!
非常感谢! 我在综合脚本里加了这个命令set_ideal_network -no_propagate[get_ports CLK] 综合后发现原来很大的延迟没有了。现在带sdf反标的综合后仿真也过了,PT分析也过了。不过我还有一个疑惑:在PT分析时,设置set_ideal_network -no_propagate[get_ports CLK] 与否对分析的结果好像并没有影响,是不是可以这样理解:PT工具自动将时钟网络设置为理想网络?
我还有一个问题:如果想用ICC在后端布线时也同时采用bc_wc分析模式,是不是需要在apr的flow里加入set_min_library CSM35OS142_max.db -min_version CSM35OS142_min.dbset_operating_conditions -analysis_type bc_wc -max WCCOM -max_library CSM35OS142_max -min BCCOM -min_library CSM35OS142_min这两个命令?
你做的是综合后时序分析还是APR后的时序分析?APR后的时序分析要set_propagated_clock [all_clocks],并remove_ideal_network
看了半天才看清楚,你说的是对的。
我做的是综合后仿真,PT是不是自动默认时钟为理想时钟了?
如果综合时将时钟设置成ideal_network,pT会认为时钟是理想的。我个人觉得此时做PT意义不大,只要综合时没有时序违反(setup一定不能有违反),PT可以在APR之后做。
嗯 受教了!以前对PT并不太熟悉,感谢你的回答,我学到了很多!我是新手,希望以后多多指教,谢谢!
问题目前得到解决了,附上我的dc综合脚本,里面可能有不完善的地方,希望大家可以多多交流!
current_design"shift_inputreg"
link
check_design
set_wire_load_mode enclosed
set_min_library CSM35OS142_max.db -min_version CSM35OS142_min.db
set_operating_conditions -analysis_type bc_wc -max WCCOM -max_library CSM35OS142_max -min BCCOM -min_library CSM35OS142_min
create_clock -name "CLK" -period 50 -waveform {0 25} {CLK}
set_dont_touch_network [find clock]
set_clock_uncertainty-setup1 [get_clocks CLK]
set_clock_uncertainty -hold 0.1 [get_clocks CLK]
set_clock_latency 2.0 [get_clocks CLK]
set_ideal_network -no_propagate[get_port CLK]
set_fix_holdCLK
set_max_area 0
set_input_delay15 -max-clock CLK [remove_from_collection [all_inputs] [get_port CLK]]
set_input_delay 2-min -clock CLK [remove_from_collection [all_inputs] [get_port CLK]]
set_output_delay10.0 -clock CLK [all_outputs]
set_max_transition 0.5shift_inputreg
set_load0.2 [all_outputs]
set_max_dynamic_power 0 mW
link
uniquify
set_structure -timing true -boolean true
compile -map_effort high-area_effort medium -exact_map
#write netlist for STA
change_names -rule verilog -hier
set verilogout_no_tritrue
set_fix_multiple_port_nets -all
write -format verilog -hierarchy -output shift_inputreg0411_after_syn.v
#report_cell -nosplit -connections -verbose > CellInfo1.log
write_sdfshift_inputreg0411.sdf
write_sdcshift_inputreg0411.sdc
不客气,互相学习
我做的DC里面为什么没有延时,生成的.sdf文件里面的时间都是0,求解一下啊
新人菜鸟想请教一个问题:为什么DC综合后就要写sdf出来呢?我们一般是PR后抽了spef在PT里面写sdf出来