现象:每次工程编译,xilinx 10G以太网IP表现的现象不一致,有时候可以正常工作,但是大多数时候一上电就出现fcs错误;
第一阶段尝试:发现更改10G以太网的复位逻辑对应不同的现象,猜测以太网fcs错误的问题与以太网的全局复位有关;
怀疑1:复位走线太长,没能保证所有寄存器都在同一个时钟内复位完成;
怀疑2:复位的众多模块有先后的复位顺序,由于复位资源紧张没能布出符合先后顺序要求的走线;
解决:对该复位信号添加bufg,布出的复位走线短且等长(2ns内),优化后,上电fcs错误有改善。
第二阶段尝试:分析时序约束文件是否正确;
怀疑:将10G以太网内部的几个时钟设置成了异步group的关系,担心不太妥,因为10G ip内部已经对跨时钟域的路径自己做了约束,因此删除10G IP 内部时钟的异步group。
第三阶段尝试:划定Pblock,将10G以太网模块划定Pblock,在逻辑资源还有部分余量时,此方法有所改善。但是当工程的逻辑资源使用太多时,此方法不奏效。
第四阶段尝试:增量编译。在增量编译下又尝试了固定所有模块走线为参考(此方法在设计改动较大或者逻辑资源使用太多时,没办法编译成功);固定10G光口的布线(read_checkpoint -incremental routed.dcp -only_reuse [get_cells -quiet [list zynq7000_soc/design_1_i/axi_10g_ethernet_0]] -fix_reuse),没尝试;
补充:report_datasheet可查看工程IO口的约束情况