|
发表于 2012-1-12 01:23:00
|
显示全部楼层
我看了你的log, 直接是CTS之后的opt。
所以我猜你可能是犯了这个错误。你试试看。
preCTS采用usefulskew来优化的时候, 会自动生成两个文件: latency_file.sdc和scheduling_file.cts.
如果你saveDesign的话, 这两个文件会自动保存在enc.dat里.
latency_file.sdc里保存着每个采用usefulskew的CK端口的latency信息. 例如:
set_clock_latency 0.5 {XXX/XXX/CK}
scheduling_file.cts中保存着供时钟树综合时用到的latency信息,
也就是将用到usefulskew的CK端设为MacroModel pin的信息。例如:
MacroModel pin XXX/XXX/CK 10ps 10ps 10ps 10ps 10pf
在时钟树综合时, 必须将你原本打算使用的specfile和这个specfile都读入, 如下:
specifyClockTree –file scheduling_file.cts
specifyClockTree –file original_constraints.cts
也就是说, 至少需要两个ctstch文件。
我想你可能是忘记了encounter生成的这个ctstch文件。
这样造成的后果是, prects按照usefulskew的方式进行了优化,并在uesfulskew的前提下timing meet。
cts综合时并不知道有这件事情,依然以skew为0当作目标进行了时钟树综合。
可想而知, 必然悲剧了。
之后你进行的各种postcts opt都是于事无补。
友情提醒下, 请确认你的usefulskew的余量是足够的, 保险的方式是ff下面也报一下hold, 可能并不那么乐观。
因为我观察到你holdtargetslack仅仅是0.
PS: 真心跪了。是你现在就拿到10.1的破解版? 还是公司可以随便copy log出来?
如果是前者。 跪求破解版。 |
|