微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > FPGA,CPLD和ASIC > 请教FPGA中建立时间违例的解决方法

请教FPGA中建立时间违例的解决方法

时间:10-02 整理:3721RD 点击:

各位前辈、朋友,大家好,我最近有个FPGA项目中经常出现建立时间违例,请问这种违例应该怎么处理?我有点摸不着头脑,请给指个路,比如是不是扇入扇出太多?
问题如下:

  1. Paths for end point DDR2_arb/rd_line_number_3 (SLICE_X19Y67.B3), 288 paths
  2. --------------------------------------------------------------------------------
  3. Slack (setup path):     -0.095ns (requirement - (data path - clock path skew + uncertainty))
  4.    Source:               DDR2_arb/read_state_3 (FF)
  5.    Destination:          DDR2_arb/rd_line_number_3 (FF)
  6.    Requirement:          7.575ns
  7.    Data Path Delay:      7.539ns (Levels of Logic = 8)
  8.    Clock Path Skew:      -0.018ns (0.296 - 0.314)
  9.    Source Clock:         GCLK_DDR rising at 0.000ns
  10.    Destination Clock:    GCLK_DDR rising at 7.575ns
  11.    Clock Uncertainty:    0.113ns
  12.   
  13.    Clock Uncertainty:          0.113ns  ((TSJ^2 + DJ^2)^1/2) / 2 + PE
  14.      Total System Jitter (TSJ):  0.070ns
  15.      Discrete Jitter (DJ):       0.214ns
  16.      Phase Error (PE):           0.000ns
  17.   
  18.    Maximum Data Path at Slow Process Corner: DDR2_arb/read_state_3 to DDR2_arb/rd_line_number_3
  19.      Location             Delay type         Delay(ns)  Physical Resource
  20.                                                         Logical Resource(s)
  21.      -------------------------------------------------  -------------------
  22.      SLICE_X15Y66.CMUX    Tshcko                0.518   DDR2_arb/read_state[12]_GND_50_o_equal_249_o
  23.                                                         DDR2_arb/read_state_3
  24.      SLICE_X15Y68.B1      net (fanout=22)       0.804   DDR2_arb/read_state<3>
  25.      SLICE_X15Y68.B       Tilo                  0.259   DDR2_arb/read_state<4>
  26.                                                         DDR2_arb/read_state[12]_GND_50_o_equal_251_o<12>11
  27.      SLICE_X15Y68.A5      net (fanout=9)        0.284   DDR2_arb/read_state[12]_GND_50_o_equal_251_o<12>1
  28.      SLICE_X15Y68.A       Tilo                  0.259   DDR2_arb/read_state<4>
  29.                                                         DDR2_arb/read_state[12]_GND_50_o_equal_253_o<12>21
  30.      SLICE_X17Y66.C5      net (fanout=9)        0.647   DDR2_arb/read_state[12]_GND_50_o_equal_253_o<12>2
  31.      SLICE_X17Y66.C       Tilo                  0.259   one_cal_new_2/ch_fifo_din<3>
  32.                                                         DDR2_arb/read_state[12]_PWR_35_o_equal_258_o<12>1
  33.      SLICE_X17Y66.A6      net (fanout=15)       0.368   DDR2_arb/read_state[12]_PWR_35_o_equal_258_o
  34.      SLICE_X17Y66.A       Tilo                  0.259   one_cal_new_2/ch_fifo_din<3>
  35.                                                         DDR2_arb/read_state[12]_rd_row_number[8]_select_263_OUT<0>111_SW1
  36.      SLICE_X17Y67.C3      net (fanout=1)        0.542   DDR2_arb/N150
  37.      SLICE_X17Y67.CMUX    Tilo                  0.337   ch6_rd_ddr_fifo_data<23>
  38.                                                         DDR2_arb/read_state[12]_rd_row_number[8]_select_263_OUT<0>111
  39.      SLICE_X17Y67.A4      net (fanout=2)        0.764   DDR2_arb/read_state[12]_rd_row_number[8]_select_263_OUT<0>111
  40.      SLICE_X17Y67.A       Tilo                  0.259   ch6_rd_ddr_fifo_data<23>
  41.                                                         DDR2_arb/read_state[12]_rd_row_number[8]_select_263_OUT<0>112
  42.      SLICE_X19Y68.D6      net (fanout=3)        0.756   DDR2_arb/read_state[12]_rd_row_number[8]_select_263_OUT<0>11
  43.      SLICE_X19Y68.D       Tilo                  0.259   DDR2_arb/rd_line_number<8>
  44.                                                         DDR2_arb/read_state[12]_rd_line_number[8]_select_262_OUT<0>21
  45.      SLICE_X19Y67.B3      net (fanout=7)        0.592   DDR2_arb/read_state[12]_rd_line_number[8]_select_262_OUT<0>2
  46.      SLICE_X19Y67.CLK     Tas                   0.373   DDR2_arb/rd_line_number<5>
  47.                                                         DDR2_arb/read_state[12]_rd_line_number[8]_select_262_OUT<3>8
  48.                                                         DDR2_arb/rd_line_number_3
  49.      -------------------------------------------------  ---------------------------
  50.      Total                                      7.539ns (2.782ns logic, 4.757ns route)
  51.                                                         (36.9% logic, 63.1% route)

复制代码

错行了,图也贴出来



请教教我怎么看这个时序报告,谢谢各位啦


建立时间不够,可以将信号在时钟下打一拍试试



   想问下楼上,这个打一拍具体怎么实现,是略过一个clk 吗?下一个clk再工作


您的意思是把建立时间不够的信号在通过一级寄存器后,在使用,对吗?另外上面的时序报告应该怎么看?

给这条路径上加约束max delay之类的,看能不能有所提高
SLICE_X15Y68.B1      net (fanout=22)       0.804   DDR2_arb/read_state<3>
类似上面的一些节点扇出太多,延迟较大,可以尝试手动局部PR等能否减少一些延迟
尝试修改RTL代码,用更简单优化的底层描述,与或逻辑之类的,然后重新综合
增加流水改变了系统设计,但是如果能接受,这个更方便容易一些

帮你顶一下了

Data path delay太大,在综合选项里边有个timing balance 选项 你选上 试试有用不

有几个地方的扇出有点大



   谢谢



   谢谢



   不好意思,我用的spartan6 ISE好像没找到这个选项

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top