DC脚本命令(set_optimize_register)

来源:互联网 发布:yum 卡死 编辑:程序博客网 时间:2024/05/20 15:59

set_optimize_register

>>>该命令为对应的design设置优化寄存器属性,从而在优化的时候自动调用DC Ultra的optimize_regsiter命令来retime design。该命令通过移动组合逻辑在设计中的寄存器以实现目标时钟周期,然后在保持该时钟周期的同时最小化寄存器。optimize_registers属性对于为要转换为DesignWare合成库组件的HDL描述创建嵌入式dc_shell编译脚本特别有用。reset_design可以移除所有属性,包括optimize_regsiter属性。

set_optimize_register的可选项以及其含义如下:

true | false

指定设置优化寄存器属性开关值,默认值为true

-design design_list

指定design列表哪些用来retime,默认为current_design

-minium_period_only

表明在retiming中只进行timing的最小优化而不对面积的最小优化,默认情况下,同时优化面积和时序,该选项在你想要得到较好的timing时用到,但是area不是最优的,在timing优化满意时,你可以尝试通过重定时命令(retiming)来缩小区域,而不是使用此项。

-sync_transform multiclass | decompose | dont_retime

指定在设计中使用哪种转换方法用于同步顺序单元。如果没有任何输入引脚异步改变输出,则边沿出发寄存器是同步的。如果在锁存器不透明的时钟阶段器件没有输入引脚可以改变输出,则电平敏感锁存器被认为是同步的。默认选项为multiclass。

<<< 选项multiclass转换指定重定时过程中移动同步时序单元的clear,set和enable功能。根据set,clear和enable来对时序单元进行分类。组合单元的扇入或扇出处的连续单元的类别确定是否可以执行跨该单元的重定时。

<<< 选项decompose转换,指定将设计中的同步时序单元转换为D触发器或D锁存器的实例以及额外的组合逻辑以创建必要的同步功能。 在重新定时期间,只有D触发器/ D锁存器实例可以移动。

<<< 选项dont_retime指定同步时序单元在retiming期间不会被移动,他们可能会根据technology库将其映射称为不同的flip-flop。

-async_transform multiclass | decompose | dont_retime

指定设计中用于异步顺序单元格的转换方法。 如果至少有一个输入引脚异步改变输出,则边沿触发寄存器是异步的。 如果至少其中一个输入可以在锁存器不透明的时钟阶段期间改变输出,则电平敏感的锁存器是异步的。默认为multiclass。其他含义参考上面同步可选项。

-check_design

在retiming之前和之后显示设计中的额外信息。包含不同类别中的cell数量信息以及触发器和锁存器更多的细节内容,如果重定时不显示预期的结果,那么使用此信息来帮助解决问题。

-verbose

表示单元格的显式名称将与大部分-check_design选项类别的每个类别中的单元格数量一起显示。 明确的单元格命名可以帮助定位问题; 然而,输出的清单名字可能很长。 该选项只能和-check_design选项一起使用。

-print_critical_loop

在retiming期间显示关键循环。关键循环被定义为直接连接的组合和时序单元的序列,其总的组合延迟除以循环中寄存器的数量具有比设计中的任何其他循环更高的值。 关键循环限制了重定时可以实现的最小时钟周期。 如果在设计中给定数量的连续单元无法实现预期的时钟周期,则使用此选项可帮助解决设计的问题区域。 如果您正在流水线化数据路径,则可能需要在HDL代码中添加流水线阶段。

-clock clock_name

指定其时序单元将被重新定时的时钟的名称。时钟不能是虚拟时钟;它必须有一个相关的时钟端口。如果create_clock命令没有指定名称,则时钟的名称可以是create_clock命令中指定的名称,也可以是时钟端口的名称。时钟的寄存器都是由这个时钟触发的连续的单元。从时钟端口到顺序单元的连接可以通过时钟门控单元,缓冲单元和反相器单元。如果指定了-clock选项并且重新定义了边缘触发的寄存器,则其他时钟的寄存器不会重新定时。如果对电平敏感的锁存器重新定时并指定-clock选项,那么由该时钟驱动的锁存器以及由完成双相时钟系统所需的其他时钟驱动的锁存器将重新定时。如果边沿触发的寄存器重新定时,则只有时钟触发的寄存器被重新定时。默认情况下,由上升沿触发的寄存器重新定时。可以使用-edge选项指定不同的边缘。

-edge rise | fall

指定寄存器在时钟上升沿还是下降沿retime,这个选项只能和-clock选项一起使用,当电平敏感的锁存器被重定时时,这个选项并不重要。

-latch

指定对电平敏感的锁存器进行重新定时而不是边沿触发的时序单元(触发器)。 如果使用此选项,设计中的边缘触发时序单元将不会移动。 为了能够重新锁定锁存器,它们必须由对称的两相时钟系统驱动。 即使使用-latch选项,用于防止门控时钟中的毛刺的锁存也不会被移动。 这些锁存器位于时钟门控单元的扇形中。

-justification_effort low | medium | high

指定在寄存器反向调整期间要使用的调整工作级别。 您可以指定低,中或高的值。 指定低确保理由很快终止,但QoR可能不好。 指定中等提供了良好的QoR和相当的运行时间。 指定高可以提供最佳的QoR,而不考虑运行时间。 此选项的默认值是中等。

-delay_threshold target_clock_period

表明设计编译器改进在重要循环报告中给出的延迟小于最差延迟的路径。 Design Compiler进行额外的重定时器传递,直到所有这些路径都被优化在给定的目标时钟周期内运行。

原创粉丝点击