对于FPGA时钟同步设计,同时FPGA存在库参数或布线时延反馈不精确的好多标题

  1. set_input_delay和set_output_delay的选项-max和-min的理解
  1. set_input_delay和set_output_delay的选项-max和-min的理解

   首先
input/output其实是仿照数据在端口外的延时,是3个外表约束规范,目标是为着约束FPGA输入端口到里面寄存器数据输入端恐怕其中寄存器输出端到FPGA输出端口之间允许的延时。总计max时考虑的是手无寸铁时间的处境,计算min时考虑的是保险时间的情况,delay参数来自于PCB走线。

   首先
input/output其实是效仿数据在端口外的延时,是七个表面约束原则,目标是为了约束FPGA输入端口到内部寄存器数据输入端或然其中寄存器输出端到FPGA输出端口之间允许的延时。计算max时考虑的是成立即间的情状,统计min时考虑的是涵养时间的境况,delay参数来自于PCB走线。

2.
对此FPGA时钟同步规划,FPGA仿真最多到回顾网表,更下层的假冒伪劣是徒劳无益,不仅开销时间,同时FPGA存在库参数或布线时延反馈不纯粹的好多问题。对于PA凯雷德的结果首先就要保证其时钟同步的特点。必须知足FPGA器件综合和布线后的setup和hold须要。一旦现身timing-error必须透过各样途径消除error,因为error的留存,意味着时钟同步的大前提已经被磨损,那时,simulation取得的结果和FPGA是不等价的,不消除时序难题,其余方法毫无意义了。

2.
对此FPGA时钟同步设计,FPGA仿真最多到总结网表,更下层的虚假是用空想来欺骗别人,不仅损耗时间,同时FPGA存在库参数或布线时延反馈不纯粹的浩大题目。对于PA奥迪Q7的结果首先就要保障其时钟同步的特征。必须满意FPGA器件综合和布线后的setup和hold须求。一旦出现timing-error必须经过种种途径消除error,因为error的留存,意味着时钟同步的大前提已经被毁损,那时,simulation取得的结果和FPGA是不等价的,不消除时序难题,其余方法毫无意义了。

3.
表面接口也必要重视考虑。如前所述,FPGA内部如若timing没十分来说,一般和虚伪结果是相同的,难点是表面的接口,包罗cable连线等,特别提到数额涨幅和频率,提议采取降频和先同步输入等艺术来先行排除。

3.
外部接口也急需器重考虑。如前所述,FPGA内部若是timing没有毛病的话,一般和虚伪结果是均等的,难题是表面的接口,包涵cable连线等,尤其涉及数额涨幅和作用,提议利用降频和先同步输入等格局来先行排除。

4.
强调syn和pr进程中的全体warning以及error,warning的始末不是完全可以忽略的。要专门关切综合报表中的以下内容:unused
ports, reMOVal of redundant logic, latch inference,simulation
mismatch等等,重点解析和解除。

4.
刮目相看syn和pr进度中的全体warning以及error,warning的始末不是一心可以忽略的。要特别关怀综合报表中的以下内容:unused
ports, reMOVal of redundant logic, latch inference,simulation
mismatch等等,重点分析和清除。

  1. 假定FPGA
    验证需求不高,比喻工作频率比较低,同时能源也相比较丰裕时,除了时钟加必要的封锁,尽量不要伊始就完了贰个宏观的自律文件,幸免不须要的约束,和早期难题的觉察。假如在那种状态下,依旧偶尔序难点:
  1. 假如FPGA
    验证须求不高,比喻工作频率相比较低,同时能源也相比充足时,除了时钟加须求的封锁,尽量不要起先就到位一个到家的自律文件,防止不要求的约束,和最初难题的发现。如果在这种景色下,仍旧偶尔序难题:

*   *
 1.时序标题hold,setup,尤其是hold,首先检核对应的时钟域的钟表是还是不是考虑周详,setup
timing 难点关键是全体数量路径延时太大导致,hold
timing难题至关紧假设时钟延时太大导致,具体见6;

*   *
 1.时序题材hold,setup,越发是hold,首先检核对应的时钟域的钟表是不是考虑周全,setup
timing 难点相当重假若完整数据路径延时太大导致,hold
timing难题重假使时钟延时太大导致,具体见6;

     2.重中之重关心设计本身存在品质难点;

     2.第1关切设计小编存在质量难题;

   
 3.有标准化参见正确工程,综合和达成设置环境差距,并拓展调整尝试难题是不是可以缓解。
   
 4.有个别调整综合参数,如hierarchy从结构保持变成优化平铺综合,扩充BUFG数量,将输出Fan
out 改更小的合理性界定等,重新编译和布局布线,检查时序难题是或不是消除。

   
 3.有原则参见正确工程,综合和促成设置条件差距,并开展调整尝试难点是还是不是能够化解。
   
 4.部分调整综合参数,如hierarchy从布局保持变成优化平铺综合,增添BUFG数量,将输出Fan
out 改更小的成立界定等,重新编译和布局布线,检查时序难题是或不是消除。

   
 5.形似是先解决setup难题,后化解hold难题,hold难点消除完的时候一般都以到了要tapout的时候了,最终一段时间若是发现有hold难题,一般会选拔在满意setup的情状下将数据现在推,唯有无奈的情形下才会采取动时钟,因为时钟改变不仅影响本级DFF的时序,还会潜移默化下超级DFF的时序;

   
 5.相似是先化解setup难题,后消除hold问题,hold难题化解完的时候一般都以到了要tapout的时候了,最后一段时间假如发现有hold难点,一般会选用在满意setup的景况下将数据今后推,唯有无奈的情事下才会选用动时钟,因为时钟改变不仅影响本级DFF的时序,还会影响下一流DFF的时序;

   
 6. 当FPGA用来促成ASIC的验证时,门控时钟就是不可防止的,比如ASIC上电复位时,不是富有的逻辑都同时工作起来,即唯有一部分Flip-Flop发轫工作,很大一些只怕根本未曾接过有效的钟表,那种意况符合ASIC上电boot的流水线,所以在FPGA上表明时要保留的;再譬如ASIC工作在某一场景下要求降低耗电,会关闭有些module的钟表,那种为了降低耗电功能而存在的clock
gate就可以一直优化掉,并不会潜移默化FPGA验证ASIC的意义。所以在得到ASIC
卡宴TL后要先将那种可以优化掉的clock
gate挑拣出来并处理,再对拍卖后的凯雷德TL进行归结

   
 6. 当FPGA用来落实ASIC的印证时,门控时钟就是不可避免的,比如ASIC上电复位时,不是有着的逻辑都同时工作起来,即唯有一部分Flip-Flop起首工作,很大一些恐怕根本未曾接过有效的时钟,那种情状符合ASIC上电boot的流程,所以在FPGA上证实时要保存的;再譬如ASIC工作在某一场景下必要降低耗能,会关闭某些module的时钟,那种为了下降功耗功效而留存的clock
gate就足以一直优化掉,并不会影响FPGA验证ASIC的功用。所以在得到ASIC
KoleosTL后要先将那种可以优化掉的clock
gate挑拣出来并拍卖,再对拍卖后的LANDTL进行归咎

6.刮目相看和首要检查clock设计,原则下,时钟优先接入ibufg,对xilinx
7密密麻麻FPGA来说就是有M路虎极光CC和SRAV4CC属性的引脚,那类引脚可以平昔驱动BUFG,即使没有,内部手动第再三再四接BUFG

6.另眼相看和关键检查clock设计,原则下,时钟优先接入ibufg,对xilinx
7三种FPGA来说就是有M汉兰达CC和S本田CR-VCC属性的引脚,那类引脚可以直接驱动BUFG,若是没有,内部手动第连续接BUFG

  • PLL/MMCME +
    BUFG,注意输出使用时也要接BUFG,再作为系统时钟给全局使用。约束时钟除了输入外,还要对BUFG输出系统时钟进行重大致束。故完整的钟表链
    IBUFG/BUFG + PLL/MMCME + BUFG, 对于时钟不是IBUFG输入,vivado
    xdc还索要充实:
  • PLL/MMCME +
    BUFG,注意输出使用时也要接BUFG,再作为系统时钟给全局使用。约束时钟除了输入外,还要对BUFG输出系统时钟进行重点约束。故完整的时钟链
    IBUFG/BUFG + PLL/MMCME + BUFG, 对于时钟不是IBUFG输入,vivado
    xdc还亟需追加:

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_in_IBUF]
便于布线器顺利达成布线,那里clk_in 指顶层模块输入
port。针对各个那种情况的输入时钟都亟需在自律文件中插入, create_generated_clock:创制衍生时钟的束缚同样不行常用,在FPGA中的design很少只工作在同如今钟下,所以create_generated_clock平常用来对MMCM恐怕PLL,甚至Flip-Flop分频暴发的钟表扩展约束,八个pin定义了两遍create_generated_clock,这几个pin很只怕是个clk_mux的出口,它会工作在二种以上的钟表频率,所以对那两遍定义的create_generated_clock要做1个set_clock_groups
-logically_exclusive 的封锁,表明那七个时钟不会同时设有。

set_property CLOCK_DEDICATED_ROUTE FALSE [get_nets clk_in_IBUF]
便于布线器顺遂已毕布线,那里clk_in 指顶层模块输入
port。针对各种那种情形的输入时钟都亟待在自律文件中插入, create_generated_clock:创设衍生时钟的封锁同样拾壹分常用,在FPGA中的design很少只工作在同近来钟下,所以create_generated_clock平常用来对MMCM或然PLL,甚至Flip-Flop分频爆发的时钟增加约束,3个pin定义了几次create_generated_clock,那些pin很可能是个clk_mux的出口,它会做事在两种以上的时钟频率,所以对这一回定义的create_generated_clock要做一个set_clock_groups
-logically_exclusive 的约束,表达那五个时钟不会同时设有。

7.针对FPGA Inter-Clock Paths 时序难题:

7.针对FPGA Inter-Clock Paths 时序难题:

 
 内部时钟域间平常没有一贯的关联时,最好将其时钟域之间设置成ffalse_path,xilinx
fpga xdc具体是:

 
 内部时钟域间平日没有平素的关系时,最好将其时钟域之间设置成ffalse_path,xilinx
fpga xdc具体是:

   set_false_path from [get_clocks clk0] -to [get_clocks {clk1
clk2 clk3}]

   set_false_path from [get_clocks clk0] -to [get_clocks {clk1
clk2 clk3}]

   …

   …

    set_false_path from [get_clocks clk3] -to [get_clocks
{clk0 clk1 clk2}]

    set_false_path from [get_clocks clk3] -to [get_clocks
{clk0 clk1 clk2}]

 

 

 

 

相关文章