Optimization Synopsys:重复编译会产生不同的结果。如何自动化迭代编译?

Optimization Synopsys:重复编译会产生不同的结果。如何自动化迭代编译?,optimization,area,synthesis,Optimization,Area,Synthesis,我不熟悉使用设计编译器。在过去,我主要做FPGA工作。现在,我正在使用Synopsys确定表示某些电路所需的最小值(使用Nangate 45nm库)。我现在不做P&R;我只是想确定晶体管的面积 我唯一的优化约束是最小化面积。我注意到,如果我告诉DC一行编译多次,每次都会产生不同的(通常更小)结果 我看了又看,没有看到手册或任何讨论中是否提到了这一点。它是这样工作的吗 这表明优化比可能的更早停止,所以它并没有真正最小化面积。知道为什么吗 有没有一种方法可以告诉它增加工作量和/或告诉它自动迭代编译

我不熟悉使用设计编译器。在过去,我主要做FPGA工作。现在,我正在使用Synopsys确定表示某些电路所需的最小值(使用Nangate 45nm库)。我现在不做P&R;我只是想确定晶体管的面积

我唯一的优化约束是最小化面积。我注意到,如果我告诉DC一行编译多次,每次都会产生不同的(通常更小)结果

  • 我看了又看,没有看到手册或任何讨论中是否提到了这一点。它是这样工作的吗

  • 这表明优化比可能的更早停止,所以它并没有真正最小化面积。知道为什么吗

  • 有没有一种方法可以告诉它增加工作量和/或告诉它自动迭代编译,以便它收敛于最小的设计


我猜DC希望满足时间限制,但我给了它一个纯粹的组合块,没有时间限制。当你想做的是组合电路的最小门面积时,他们从来没有考虑过使用场景吗?

< P>在一个纯组合电路上,你可以使用一个SETX-Max延迟约束,而DC会尝试满足它。

对于减少的面积,您可以使用-map_-efforce high或-map_-efforce ultra使其更努力地工作


DC是一个有趣的野兽,它使用的算法随着流程的推进而变化,并使某些活动或多或少有用。很多预先布局优化都不太有用,因为一旦闸门实际放置和布线,整个情况可能会发生变化。

我向Synopsys提交了一份支持通知单。我使用的是2010版的设计编译器。显然,从那时起,面积优化得到了改进,2014版将在一次编译过程中最小化面积。

我已经知道了如何进行迭代。脚本是在Tcl中完成的,因此很容易循环。但是我的一位同事(他只熟悉Cadence工具)说,应该有一种方法告诉it部门在优化上花费更多的时间(除了设置工作量水平)。我使用的命令是
compile\u ultra-area\u high\u efforce\u script
,它比compile做得更好,但它仍然需要很多遍才能达到最低限度。