Register merging
在做综合时,工具可以对register做merging操作,这样可以降低design的area,下面来看看工具是怎么做register merging的!
能做register merging的register需要满足以下几个要求:
1、register上不能有timing exception;
2、register的clock,data输入一致;
3、register的reset state一致;
下面看register merging的具体操作,如下图
可以发现,这里对两个register的output loads并无要求;
另外,如果两个register的输出是相反的话,也可以做merging,但是也要符合上面的三个要求;
做完merging后,会出现下面的提示
如果要禁止工具对指定的reg做merging,可以使用set_register_merging;
如果要对整个design禁止做reg merging,可以设置compile_enable_register_merging为false;
Boundary Optimization
综合工具在执行compile_ultra命令时,会做boundary optimization,顾名思义,这个优化和boundary有关,工具默认做的boundary optimization包括以下几种:
Propagation of constants across the hierarchy
这里的constant 0穿过了design的hierarchy,工具从而优化了design内部的OR gate;
Propagation of equal and opposite information across the hierarchy
如果design的两个输入是equal或者opposite的关系,那么工具会穿越design的hierarchy去优化design的内部,如上图所示,design的boundary少