首页 理论教育优化定时序参数的方法和建议

优化定时序参数的方法和建议

【摘要】:ICC的时序优化受到不少参数的影响,其中不少参数会影响整个设计过程,包括布局、时钟树综合、布线等各个阶段的时序优化。较好的方法就是将该参数设置为TRUE,同时在不同时钟间设置上false path,使得ICC可以检查真实能发生的各种时钟情况。3)set_host_options-max_conres<N>,该命令可以使优化过程多核运行,N为ICC运行时的多核数量。11)时序设置检查。为了保证时序约束与设计符合设计人员的预期,需要在设置完相关参数后进行一次检查。

ICC的时序优化受到不少参数的影响,其中不少参数会影响整个设计过程,包括布局、时钟树综合、布线等各个阶段的时序优化。由于这类的参数通常无法随设计而保持,因此建议将其保存在一个专门的文件中,每次打开设计库后运行一次。主要的时序优化参数有几个。

1)set_appvar timing_enable_multiple_clocks_per_reg true,在设计中某些寄存器在不同的状态下可能会有不同的时钟,默认设置下ICC只会检查最恶劣的那种情况,而这种情况往往是前后寄存器运行不同的时钟,因此在芯片实际运行中是不会发生的。较好的方法就是将该参数设置为TRUE,同时在不同时钟间设置上false path,使得ICC可以检查真实能发生的各种时钟情况。

2)set_fix_multiple_ports_nets-all-buffer_constants,默认条件下ICC对于一个单元驱动多个输出是不会引入多个buffer(缓冲器),这样可以减小单元面积,但也容易导致驱动能力不足,使得片外时序出现违例。为了避免这种情况发生,建议每一个输出都由单独的器件来驱动,设置上该命令后便可实现该目的。

3)set_host_options-max_conres<N>,该命令可以使优化过程多核运行,N为ICC运行时的多核数量。设置多核后可以有效减小布局和布线时的运行时间,也可以大大减少系统由于内存溢出而导致的ICC运行崩溃。

4)set_auto_disable_drc_nets-constant false,在默认条件下布局过程中ICC不会对时钟网络和固定电平线路插入buffer,时钟网络会在后续时钟树综合的时候生成时钟树,而固定电平网络就直接由TIE cell驱动。但由于TIE cell的驱动能力有限,线路上容易受到串扰电容的影响而发生波动,为了避免该情况发生可以设置该参数,这样在布局的时候ICC就会在固定电平线路上也插入buffer,提高线路的驱动能力,防止串扰电容的影响,当然这样会增大电路的面积,设计人员也应当根据实际电路情况来决定。

5)set_dont_use<lib_name/cell_name>,可以用来设置设计中不希望出现的单元,比如某些驱动能力过大或者过小的反相器、缓冲器,或者是某些端口数较多面积却较小的单元(在复合运算单元中比较常见),如果布局密度太高会容易导致congestion难以优化。

6)set_prefer-min<lib_name/cell_name>,可以设置希望用于hold违例线路的单元。比如可以设置中等驱动能力的delay cell。

7)remove_attribute<lib_name/cell_name>dont_use,库中的某些单元由于并非每种设计都能兼容,会默认有dont_use属性,防止设计人员无意间使用,如TIE cell和clock-gating cell等。如果设计中需要这类单元,需要将其dont_use属性去掉。检查这类单元的属性可以用get_attribute<lib_name/cell_name>dont_use/dont_touch。

8)set_app_var enable_recovery_removal_arcs true,在默认情况下ICC不会进行recovery和removal检查(如寄存器的异步复位端口),如果设计人员希望对这类约束进行检查及优化,可以设置该参数为true,在时序报告中也可以看到recov-ery和removal的时序路径。

9)set_app_var physopt_power_critical_range/physopt_area_critical_range<t>,这两种参数可以在进行功耗或者面积优化时避免优化到某些时序上余量较小的路径,防止这类路径由于余量不足在后续优化后出现时序违例。默认的这两个参量值都为0,通常可以设置为时钟周期的5%~10%,也可以随着设计的进行而逐渐减小。

10)其他时序参数设置。

除了上述参数外,ICC还有不少其他的参数,不少参数的默认值与PrimeTime的设置并不相同,为了能够实现更好的时序结果对照,可以按照下面的设置语句进行设置,参数具体的信息可以参考ICC内部手册,并酌情使用。

如果要将所有的系统参数设置为默认值,只需要运行下述命令setapp var*-default,其中“*”是匹配符,可以替换为任意的参数名称。如果需要ICC列出所有非默认值的系统参数,可以运行report_app_var–only_changed vars*来获得。

11)时序设置检查。

为了保证时序约束与设计符合设计人员的预期,需要在设置完相关参数后进行一次检查。检查的命令如下:

当set_zero_interconnect_delay_mode为true时,ICC在进行时序计算时不考虑连线上的延时,只计算单元上的延时。如果在这种情况下依然有很大的时序违例,便很有可能是时序约束或者设置上的错误,需要根据报告中的具体路径来检查。如果只有很小的延时违例,通常可以在后续优化过程中优化掉。