在Verilog中合成设计时的计时问题

在Verilog中合成设计时的计时问题,verilog,fpga,xilinx,Verilog,Fpga,Xilinx,我正在开发一个基于BCH码的解码器模块。该设计将在Virtex-7 FPGA上实现。我基本上有三个街区。综合征计算块、错误定位器查找器和错误定位器解算器块。综合征计算块在FPGA上工作良好,并且在225 MHz时钟下工作。我正在工作的错误定位查找块,它给了我一些时间问题。问题主要在于: 1) 我有一个模块,它只有一个case语句。case块有1024个条目。发生故障的路径包含此模块。如果我把这个模块注释掉,设计就可以了。在实现的设计中,该模块放置得太远,因此,我得到了巨大的网络/线路延迟。有没有

我正在开发一个基于BCH码的解码器模块。该设计将在Virtex-7 FPGA上实现。我基本上有三个街区。综合征计算块、错误定位器查找器和错误定位器解算器块。综合征计算块在FPGA上工作良好,并且在225 MHz时钟下工作。我正在工作的错误定位查找块,它给了我一些时间问题。问题主要在于:

1) 我有一个模块,它只有一个case语句。case块有1024个条目。发生故障的路径包含此模块。如果我把这个模块注释掉,设计就可以了。在实现的设计中,该模块放置得太远,因此,我得到了巨大的网络/线路延迟。有没有办法让基于案例的模块更接近我的实际设计


任何帮助都将不胜感激。净延迟至少占总延迟的60%。这对于我试图解决的问题来说是不可接受的,因为此解码器需要至少在200 MHz下工作

在以前的Xilinx FPGA工具套件ISE中,您能够改变放置器成本表(PCT),这会导致逻辑单元的不同位置放置,从而导致不同的定时结果。PCT可以在不同的实现运行(使用SmartXplorer)中迭代,在找到具有有效计时结果的PCT之前,PCT将停止运行

Xilinx放弃了这一策略,因为在大型FPGA中无效(就像您的Virtex 7设备一样)。但是您有几个预定义的策略,它们也可以并行运行。只需打开实现设置并尝试不同的策略,然后看看是否有一种有效

如果没有,您必须在HDL级别优化您的设计。一般来说,管道是一个好策略,但它在很大程度上取决于您的代码。一般来说,您必须减少大型组合结构,您的包含1024个条目的case语句就是大型组合结构的候选语句


编辑:请参阅Xilinx UG904以获得不同实施策略的概述和简要说明。

正常过程是在失败路径中添加管道阶段。我知道,这可能需要对所有相邻路径逻辑进行重大的重新设计,但这是一条路要走。