描述
当我验证一个包含注册LVPECL输出的设计时,当检查RTL代码与POR或POST MAP NETLIST的等价性时,匹配和验证失败。以下三个场景会导致这些失败:
1。在ViTEX II硬件中,应该驱动LVPECL输出的OBUFDs没有足够的驱动强度来驱动N侧LVPECL输出。为了解决这个问题,每个输出必须分开驱动。如果注册了LVPECL输出,MAP复制寄存器。这样做是因为您可能希望寄存器在IOB中,并且复制寄存器是唯一的方法来驱动IOB寄存器的两个输出。这个复制的寄存器然后导致匹配失败的形式。
2。IOB寄存器与输出焊盘之间没有反转。MAP将从寄存器的输出端输出到N侧的LVPECL输出反转到复制寄存器的输入端。这导致验证失败的N侧LVPECL输出。
三。最后一个场景涉及重置和初始值。由于反转在寄存器之前被推动,复制寄存器的init值必须与原始寄存器相反,并且在复制寄存器上的重置必须产生原始寄存器的相反输出。MAP正确地处理这个问题,但是如果寄存器既有清晰又有预置,则清除总是获胜。因此,尽管在单独声明时,清零和预置对复制寄存器具有相反的影响,但如果同时声明和预置,则两个LVPECL输出的输出为0。这也会导致验证错误。
解决方案
解决方案1
您的设计包含注册的LVPECL输出,但寄存器不需要打包到IOB中。
在这种情况下,MAP错误地复制寄存器,因为大多数用户会将该寄存器打包到IOB中。这个问题应该在Xilinx.61i软件中进行修正。在这是固定的之前,请参见解决方案2和3。
如果约束IOB= FALSE应用于所述寄存器,这将仅在ISE 61i和以上版本中工作。
解决方案2
您的设计使用注册的LVPECL输出,并且寄存器被打包到IOB中,并且具有清晰和预置。
在这种情况下,上述三种情况都会影响到设计的验证。当两个LVPECL输出都是0时,如果同时清除和预置,则可以将逻辑添加到您的设计中,以确保它们在同一时间不被断言。由于清澈具有更高的优先级,预置用明晰信号的反相来控制,如下面的例子所示:
总是@(CLR或PRE)
开始
NOTH-CLRANDPREY= ~CLR&AMPY;
结束
FDCPE-FDCPEDEST
q(qii),
C(CKKY-BUFG),
Ce(CE),
CLR(CLR),
D(QQI),
预(NothCL)
;
在应用此设计更改后,复制寄存器的逻辑等效于RTL设计,但形式仍然失败,因为逻辑被移动。您可以使用下列断言来指定逻辑如何由MAP移动(这些是在解决方案3中描述的相同断言):
1。在RTL中的LVPECL寄存器和在POR POR或POST MAP NETLIST中的两个LVPECL寄存器之间设置用户匹配,如以下示例:
StIGUSER匹配://Works/Top/FDCPEGID/QYRGI:
StIGUSER匹配://Works/Top/FDCPEGID/QYRGI: //Work/Top/FDCPEGED/N型单元
2。指定输出的反转被推入复制寄存器的输入端的形式,如以下示例:
QB是输出
{FDCPEGED/N是复制寄存器
必须对两个应用
StuxInvPuxPi:/Works/Top/QB
StuxIngPuxPix//Work/Top/FDCPEGED/N
注意:只有在正式使用2003.03或更高版本后,验证才是成功的。
解决方案3
您的设计使用注册的LVPECL输出,寄存器装入IOB,没有或一个复位。
因为没有一个或一个重置,只有上面描述的场景影响了您的设计验证。您可以使用以下断言在形式上指定映射如何移动逻辑:
1。在RTL中的LVPECL寄存器和在POR POR或POST MAP NETLIST中的两个LVPECL寄存器之间设置用户匹配,如以下示例:
StIGUSER匹配://Works/Top/FDCPEGID/QYRGI:
StIGUSER匹配://Works/Top/FDCPEGID/QYRGI: //Work/Top/FDCPEGED/N型单元
2。在形式上指定输出的反转被推到复制寄存器的输入端,如下面的例子:
QB是输出
{FDCPEGED/N是复制寄存器
必须对两个应用
StuxInvPuxPi:/Works/Top/QB
StuxIngPuxPix//Work/Top/FDCPEGED/N
注:验证仅在形式2003.03或更晚时成功。
没有回复内容