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.

相关推荐
尤老师FPGA6 小时前
HDMI数据的接收发送实验(二十)
fpga开发
千寻xun21 小时前
三、实战篇-NVME SSD控制之FPGA实现(一)
fpga开发·nvme ssd·nvme协议
XMAIPC_Robot1 天前
软硬协同实时控制|RK3588业务调度+FPGA硬件时序,ethercat实现半导体设备微秒级响应(125us)
linux·arm开发·人工智能·fpga开发
upper20201 天前
从零开始设计riscv cpu记录之七
fpga开发·riscv·riscv设计·btb·分支预测
ARM|X86+FPGA工业主板厂家1 天前
AI视觉跟随运动控制实战|RK3588 NPU检测+FPGA EtherCAT多轴联动精准跟随方案,适用于半导体视觉对位等
人工智能·fpga开发·硬件工程·ethercat·实时系统
XMAIPC_Robot1 天前
RK3588+FPGA半导体设备量产踩坑大全|发热、时序漂移、推理抖动、成像干扰、EMC干扰方案
人工智能·嵌入式硬件·fpga开发·arm+fpga
凡亿卓达方案设计2 天前
FPGA硬件开发怎么选靠谱方案商?
fpga开发
Eloudy2 天前
QSFP28、RoCEv2、RFSoC-4x2 数据传输与器件链路
网络·fpga开发·rocev2
Echo_cy_2 天前
基于ZYNQ-7000的Ethernet驱动配置
linux·驱动开发·嵌入式硬件·fpga开发·ethernet·zynq
現実君2 天前
关于MCU下位替换FPGA的经验与方案
单片机·嵌入式硬件·fpga开发