1、尽可能详细的告诉FPGA编译器所有输入信号的时序关系。因为FPGA的输入对编译器来说是不可预知的,当源头未知的时候,编译的所有结果都会变的随机不可靠。所以我们需要通过约束文件告诉编译器所有输入信号的属性
(1)时钟:比如输入时钟的频率,占比,电平标准;
(2)接口:要让编译器知道数据总线和采样时钟之间的时序关系,他们之间的建立保持时间是怎么样的;
2、当系统规模很大,布线资源紧张,导致时序无法满足的问题。解决问题的原则是放松那些不太重要或者是建立保持时间比较宽松的电路时序约束,不对路径做更紧的约束,让编译器自己去调整资源的分配,这样的优化效果是最好的。
3、当某个同步电路的路径建立保持时间无法满足,通过约束调整也没有用处的时候,可以尝试在这条路径中再插入一级寄存器。
4、尽可能使用同步逻辑,并且时钟信号走全局时钟网络。
5、尽可能减少设计中的时钟数,最好在整个设计中只使用一个时钟信号驱动,对于输入输出接口引入的时钟信号,可以采用FIFO进行时钟域隔离。
6、尽量避免使用逻辑结果作为另一组同步电路的时钟信号,这会导致很严重的时序恶化。编译器也会给出警告。
7、将系统复位信号当做时钟来处理,避免采用逻辑的结果作为系统的复位。