描述
我看到一个不同的设计校验和的基础上的流程,我用来处理设计。
流程1:一次运行一个命令,打开和关闭每个检查点。
例子:
- 林克设计
- 写入检查点
- 封闭式设计
- OpenX检查点
- optl设计
- 写入检查点
- 封闭式设计
- OpenX检查点
- 位置设计
- 写入检查点
- 封闭式设计
- 等。。。
流程2:不离开VIVADO的连续流动或关闭和打开台阶之间的检查点。
如果我在设计上运行流1,每次都会得到一个可重复的校验和。
如果我在设计上运行流2,每次都会得到一个可重复的校验和。
但是,这两个流的校验和是不一样的。
差异似乎发生在Link设计和Optl设计步骤之间。
如果我在退出之前运行Link设计,然后是optl设计,结果不会改变我是在内存中运行还是用检查点关闭和打开VIVADO。
这种差异是期望的吗?
这是否意味着当设计被写入和读取时,什么东西(例如,约束)被忽略或应用不同?
有什么办法可以避免吗?
优选的流程是什么?
解决方案
RealEngPosikPoT命令后面跟着一个Read检查点命令,它不会将设计的校验和恢复到WrreEngRealPosits之前。
校验和差异背后的主要原因是VVADO在这两个步骤中丢失了NETLIST对象的顺序。
这并不意味着设计不同,只是内存中的NETLIST对象顺序不同,校验和对NETLIST对象顺序敏感。
这种差异的影响减轻了这样一个事实,即每个主要的TCL命令(例如,optl设计、Posil设计、RoutEy设计等)在他们开始工作之前对网表进行排序。
因此,即使NETLIST对象顺序在两个流之间是不同的,当在其上运行optjDead时,网表被排序,并且对于两个网表应该表现相同。
两个流中的Link设计后的校验和差异是预期的行为。这并不意味着两个流程中的设计是不同的。然而,如果最终设计表现出不同的行为,则应该对此进行研究。
如说明书中所述,如果设计在Link设计和Optl设计步骤之间保持开放,则通常会避免差异。
要么是合法的,要么取决于你的使用模式,这对你来说是最好的。
流程1通常会更快,因为关闭和重新打开设计所花费的时间更少。
没有回复内容