[转载]DC概论五之high fanout (2)
标签:
转载 |
分类: Synthesis |
问题:
虽然设置了set_ideal_net(network),set_dont_touch(network)但是clock上仍然有大延迟。
为了解决这个问题,我们还要继续设置高扇出的选项。
<!--[if
!supportLists]-->1.
<!--[if
!supportLists]-->2.
进一步:修改脚本:
set lib $env(DC_LIB)
set target_library "slow.db fast.db"
set link_library "* $target_library"
set search_path ". ../src ../scripts $lib"
set hdlin_while_loop_iterations 5000
analyze -format verilog test.v
elaborate test
uniquify
link
check_design
create_clock -period 100 [get_ports clk]
set input_exp_clk [remove_from_collection [all_inputs] [get_ports clk]]
set_input_delay 60 -clock [get_clocks clk] $input_exp_clk
set_output_delay 30 -clock [get_clocks clk] [all_outputs ]
set_ideal_network
set_ideal_network
set high_fanout_net_threshold 60
set high_fanout_net_pin_capacitance 0.01
compile
时序分析:
可以发现cell的延迟已经很合理。
reset
http://s4/bmiddle/5e364a30t700ec7e09273fanout
Cell上的延迟和原来一样
一般信号
http://s16/bmiddle/5e364a30t700ec87b256ffanout
Apr之后
http://s10/bmiddle/5e364a30t6093d7a846f9fanout
导出网标,修改约束文件成初始状态,继续分析时序:
http://s16/bmiddle/5e364a30t6093da408b8ffanout
http://s7/bmiddle/5e364a30t6093dc15da86fanout
可以看出apr工具自动加入了buffer,同时优化了net上的fanout
总结:
为了让dc在综合高扇出的net时候不插入buffer tree和buffer chain,需要使用set_idea_network使这些搞扇出net避免时序优化(timing
optimization),时序更新(timing update),drc修正(drc
fixxing)。但是这样设置之后,net上的高负载并没有消除,我们需要额外的参数进行设置. high_fanout_net_threshold

加载中…