描述
关于一个名为FDCPE的小区,我收到了一个关键的警告。
严重警告:[Netlist 29-180]单元’FDCPE’不是virtexu部分支持的原语。此单元格的32个实例将被视为黑盒子,而不是架构基元。
RTL的内容如下:
总是@(posedge clk或posedge reset)
开始
如果(重置)
count <= value ;
否则如果(启用)
count <= count + 1;
结束
解
问题是虽然这里有一个叫做“复位”的控制信号,但它并没有真正重置(为0)或设置(为1)。
相反,它正在寻找另一个可能是1或0的值。
为了获得这种类型的逻辑,Xilinx库中唯一的原语是FDCPE,它具有置位和复位。
解决方案是使复位成为同步复位或更改复位,以便为寄存器分配1或0。
否则,由于未解决的黑匣子,opt_design将失败。
注意:从2015.3版本开始,如果设计在定位UltraScale器件时包含实例化或推断的FDCPE或FDCP原语,Vivado Synthesis将给出此严重警告。
在2015.3之前的版本中,这些原语被重新定位为FDCE,FDPE,LDCE和LUT的组合,这可能导致潜在的时序问题。
没有回复内容