其他分享
首页 > 其他分享> > IC设计逻辑综合5——优化策略(optimization strategies)

IC设计逻辑综合5——优化策略(optimization strategies)

作者:互联网

优化(Optimization)

综合做的三件事:

optimization:

EDA工具在做综合过程中,在用户定义了constraint(PPA constraint)情况下,对设计进行优化,达到用户的目标。

工具做到的优化:

构架优化(Architectural Optimization ) 

还没有真正映射到标准库单元上,在前期做优化。在代码级进行优化。 属于high level优化。

 构架优化适用于 HDL 描述。它包括以下高级综合任务:

举例: 

子运算器共享 :

共享资源: 

 重新排序运算符

        高级综合任务基于您的约束和您的 HDL 编码风格。经过高层优化后,电路功能由GTECH库部件表示,即通用的、技术独立的网表。

哪个命令执行构架优化?compile

时序逻辑映射(Sequential mapping)

时序逻辑映射阶段由两个步骤组成:

寄存器推断(register inferencing ):判断哪些cell是register,找出register

技术映射(technology mapping):找出register,在工艺库中进行映射

多路复用器映射和优化(Multiplexer Mapping and Optimization)

        Design Compiler 可以将 HDL 代码中表示多路复用器的组合逻辑直接映射到目标逻辑库中的单个多路复用器 (multiplexer,MUX) 或多路复用器单元树 。

        多路复用器通常使用 if 和 case 语句建模。

        为了实现这个逻辑,HDL Compiler 使用 SELECT_OP 逻辑单元或 MUX_OP 逻辑单元去实现功能。

Inferring SELECT_OPs

        默认情况下,HDL Compiler 使用 SELECT_OP 组件来实现 if 和 case 语句隐含的条件操作。

        根据设计约束,Design Compiler 使用逻辑库中的组合逻辑或多路复用器单元来实现 SELECT_OP。 

Inferring MUX_OPs 

         如果您希望 Design Compiler 优先将 RTL 中的多路复用逻辑映射到逻辑库中的多路复用器或多路复用器树,则需要推断 MUX_OP 单元。

        尽管 MUX_OP 单元提高了设计速度,但它们也可能增加面积。

        设置 hdlin_infer_mux 为真。(让工具尽可能使用mux这种方式实现选择电路。)

如果不去限定这些mux的使用,会有什么影响?规定这些使用,对mux的影响。

一般情况,还好,写完代码之后不care用什么方式实现这些电路,

在有些情况下存在问题:

用与门或门搭建的功能,这些信号到达点的时序要求,在某一些情况下,两个信号相互作用,有可能会在某个地方,卡出小的glitch,出现一个功能上不希望出现的狭窄的pulse影响功能的稳定性甚至导致功能失败。

使用mux处理更容易避免glitch的产生。

在某些电路特别关心glitch的地方,推荐使用mux。

Gate-level optimization

cell映射到标准库单元之后的优化。 

 Delay Optimization

做完mapping之后,做延时优化,使得timing path满足时序要求。 

 以下策略可以帮助实现更快的设计:

边界优化(Boundary optimization)

创建路径组( Create path groups)

        默认情况下,Design Compiler 根据控制endpoint的时钟对路径进行分组。

        创建路径组以将 Design Compiler 重点放在设计中的特定关键路径上。

prompt>  group_path  -na me  group3    -from   in3    -to      FF1/D    -weight      2.5
prompt>  group_path  -na me  group2    -from   in*    -to      FF1/D    -weight      2.0 

 Critical range

        当您向路径组添加临界范围时,您将maximum delay cost function 从最坏 negative slack更改为临界 negative slack。

        Design Compiler 优化临界范围内的所有路径。

        使用以下方法之一指定临界范围:

create_clock -period 20 clk
set_critical_range 3.0 $current_design
set_max_de1ay 10 {A B C}
group_path -name group1 -to {A B C}

设计规则修正( Design Rule Fixing)

供应商逻辑库中提供了设计规则,以确保产品符合规格并按预期工作。

通过插入缓冲区或调整现有单元的大小来纠正违反设计规则的行为。

 Area optimization

尝试在不降低延迟成本的情况下最大限度地减少设计中的门数。

 set_max_area

        使用编译命令的 -map_effort 或 -area_effort 选项,您可以指示 Design Compiler 对区域优化进行 medium或 high effort。 

Power optimization

 Design Compiler 尝试在不影响性能的情况下降低设计中的整体泄漏功率。

prompt> set_leakage_optimization true
prompt> set_dynamic_optimization true

dc_shell-topo>  set_multi_vth_constraint \
                     -lvth_groups {lvt} \
                     -lvth_percentage percentage \
                     -type soft 

标签:逻辑,set,optimization,Design,path,strategies,IC,优化,Compiler
来源: https://blog.csdn.net/weixin_41788560/article/details/120259886