最佳性能的最优化
資料由http://www.61ic.com/code/ 得來
方法一 创建路径组 (group_path的使用)
默认时,Design Compiler根据控制终点的时钟组合路径(所有与时钟没有
关系的路径在一个默认的组中)。如果你的设计中有复杂的时钟、复杂的时序要求、或复杂的约束,你可以创建路径组,使得Design Compiler专注于设计中指定的关键路径。
用命令group_path来创建路径组。命令group_path允许你:
1 控制设计的最优化
2.最优化接近临界的路径3. 最优化所有路径
(1)控制设计最优化
你可以通过创建路径组和对其排序来控制最优化,这只影响最大延迟成本函数。默认情况下,Design Compiler只对每个组中的最差情况起作用。
通过对每个组设置权(默认权是1.0),设置路径组的优先权。权可以是从0.0到100.0。
比如,图显示了一个有多重路径到触发器FF1的设计:
为指出从输入in3到FF1的路径的优先权最高,采用下列命令:
dc_shell> group_path -name group3 \-from in3 -to FF1/D -weight 2.5
(2)最优化接近临界的路径
当你对一个路径组增加了临界范围,你改变了最大延迟成本函数。Design Compiler在临界范围内优化所有路径。
指定一个临界范围会增加运行时间。为限制运行时间的增加,只在设计的最后实现阶段使用临界范围,并使用一个合理的临界范围值。一个最大临界范围值的方针就是时钟周期的10%。
使用下列方法之一指定临界范围:
• 使用group_path命令的-critical_range选项
• 使用set_critical_range命令
假设时钟周期为20ns,每一个输出的最大延迟为10ns,临界延迟如图所示。默认时,Design Compiler只优化最差情况(到输出A的路径)。为优化所有路径,设置临界延迟为3.0ns:
dc_shell> create_clock -period 20 clk
dc_shell> set_critical_range 3.0 current_design
dc_shell> set_max_delay 10 {A B C}
dc_shell> group_path -name group1 -to {A B C}
你也可以用set_max_delay和set_min_delay命令来约束穿越不同频率域的异步路径。
比如:
dc_shell>set_max_delay 17.1 \-from find(clock, clk1) -to find(clock, clk2)
dc_shell> set_max_delay 23.5 \-from find(clock, clk2) -to find(clock, clk3)
dc_shell> set_max_delay 31.6 \-from find(clock, clk3) -to find(clock, clk1)
(3)优化所有路径
通过对设计的每一个终点创建一个路径组来对所有路径进行优化,但导致了更长的编译运行时间。利用下列脚本创建一个路径组:
endpoints = all_outputs() + all_registers(-data_pins)
foreach (endpt, endpoints) {
group_path -name endpt -to endpt
}


沒有留言:
張貼留言