FPGA随记——FPGA时序优化小经验

为什么要做时序优化:

1.一般是低端芯片或者软件做的比价差,就会导致时序不好过,需要我们代码设计上或者软件约束上进行时序优化。

2.或者设计中频点的提升,时序收敛会比较难,需要优化。

3.时钟方案的复杂,比如跨时钟阈,或者大位宽的数据同步的处理等。

还有一些情况等等。

导致时序问题的原因:

1.时钟方案设计不合理,逻辑级数太高,跨时钟域处理的逻辑太多等;

2.模块设计不合理,导致信号扇出太大,太多等等;

3.工程初期的时序问题,主要不了解芯片的资源,特性等,导致芯片资源利用不合理;

时序优化方式:

1.复位处理:避免复位;异步复位同步释放;统一高电平有效复位

a.FPGA中所有的reg都会从已知值中启动,所以为了避免以初始化的目的添加复位寄存器,如果是那些需要复位的寄存器,还是要加上的复位的。

b.对于流水中位宽较大的寄存器,尽量不使用复位,以便于减少复位的扇出;

c.对于扇出较大的复位信号,则可以直接上BUFG,可以节省普通走线的资源,且对于之前延时比较大的延时,可以减少延时,但是不要使用太多。

d.对于内部产生的复位信号最好是以reg形式输出,对于扇出很大复位信号可以复制寄存器,减少扇出。(可以使用 max fanout 约束,如果大于这个扇出了,软件会自动给你复制一个reg)

2.跨时钟阈代码的处理

a.单bit信号或者位宽不大的信号,可以打排处理;

b.对于高频使用的且时钟阈很不固定的,可以转换成格雷码在进行数据同步,比如说fifo的地址(目前就知道这么一个)等,注意搭配 set_max_delay -datapath_only 约束使用---这个为什么 明天问问别人;

c.

相关推荐
松小白song8 小时前
【硬核排错实录】FPGA DDS 波形卡死:寄存器有值但正弦 / 三角 / 自定义波形完全不输出(双通道失效终极解决)
fpga开发
星夜离尘5610 小时前
UART偶发乱码:波特率分频误差之外,还要算采样漂移
fpga开发·uart
hexiaoyan82719 小时前
271-基于JFM7VX690T36 的四路40Gbps的PCIeX8 全国产化卡
fpga开发·软件无线电处理平台·硬件加速器·jfm7vx690t36·全国产化卡·7vx690t36
Terasic友晶科技1 天前
答疑解惑|Agilex 5如何指定Boot Core及设定Core的运行频率?
fpga开发·hps·terasic·cortex-a55·cortex-a76·boot core
辰丁电子1 天前
allegro入门教程-菜单栏Route
fpga开发·pcb工艺·pcb·layout·allegro软件
吉他英雄一里2 天前
FPGA工具篇--ILA
fpga开发
鸥梨菌Honevid2 天前
UVM sequence-driver 通信模型(详细讲解)
fpga开发
博览鸿蒙2 天前
数字芯片设计实战路线:硬件工程师的 FPGA
fpga开发
zhutier-2 天前
Vivado+Artix7+W25Q128JVEIQ FPGA固化程序到FLASH里面教程
fpga开发
hexiaoyan8272 天前
FMC 子卡设计原理图:154-基于FMC 八路SFP+万兆光纤子卡
fpga开发·光纤收发·fmc 子卡·万兆光纤子卡·sfp+万兆光纤