FPGA时序违例

本文基于vivado进行说明。

1、在进行FPGA设计过程中,一旦工作时钟较高,FPGA资源使用率较高的情况下,时序违例就不可避免。例如工作时钟200MHz,假设FPGA资源使用率不到一半,那么可以使用资源换速度,但是占用再多的资源后,资源换速度就行不通了。

2、时序违例大概有三种,见下图

(1)intre-clock是同一个时钟下的违例

(2)inter-clock是跨时钟违例

(3)async clock是异步时钟违例

3、时序违例解决办法

时序违例一般是通过约束解决,即XDC。

时钟信号一般都要进行约束。约束方法如下:

create_clock -period 10 [get_ports sysclk]---约束主时钟

create_generated_clock -name  -source [get_pins CLKIN] - multiply_by 4 \
-divide_by 3 [get_pins CLKOUT]---约束主时钟生成的时钟
set_input_delay -clock sysClk 2 [get_ports DIN]
set_output_delay -clock sysClk 1 [get_ports DOUT]
set_multicycle_path <path_multiplier> [-setup|-hold] [-start|-end]
[-from <startpoints>] [-to <endpoints>] [-through <pins|cells|nets>]
set_false_path -from [get_port xx] -to [all_registers]
set_clock_groups -group CLKA -group CLKB
set_max_delay <delay> [-datapath_only] [-from <node_list>]
[-to <node_list>] [-through <node_list>]
set_min_delay <delay> [-from <node_list>]
[-to <node_list>] [-through <node_list>]
通过以上约束时序问题都能得到解决。具体可以参考官方UG903、906。
  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
对于 Vivado 中的时序违例问题,有几个常见的解决方法可以尝试: 1. 优化时序:通过调整逻辑设计、时钟分频、内部缓存插入等方法来改善时序。可以尝试重新评估设计约束,调整综合和实现策略,以及使用高级优化选项。 2. 插入时序约束:确保所有信号都有正确的时序约束。时序约束定义了信号的时序要求和关系,帮助综合工具和布局工具更好地优化时序。可以使用 SDC (Synopsys Design Constraints) 文件来插入时序约束。 3. 时钟域划分:如果设计中存在多个时钟域,可以考虑划分时钟域并使用异步 FIFO 等器件来进行时钟域间的数据传输。 4. 添加缓冲器:在信号路径上添加适当的缓冲器来改善时序。缓冲器可以增加延迟,从而减小路径的时序违例。 5. 重新布局:如果时序违例主要是由于布局问题导致的,可以尝试重新布局电路以改善信号路径的时序。可以通过调整布局约束、分组相关逻辑等方法来进行重新布局。 6. 优化资源利用率:通过合理利用 FPGA 的资源,避免过度使用资源,从而改善时序。可以考虑对逻辑进行优化、减少逻辑深度等方法来降低时序违例。 以上是一些常见的解决方法,具体的解决方案需要根据实际情况和设计需求进行调整和优化。在解决时序违例问题时,通常需要进行多次迭代和优化,以达到设计的时序要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

cckkppll

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值