时序设计规范1V0

更新时间:2023-03-08 05:34:54 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

武汉中元华电科技股份有限公司

Wuhan Zhongyuan Huadian Science & Technology Co., Ltd.

文件编号:Q/ZH.TE/XXXX-XX

时序设计规范

编 制:逻辑平台组 日 期: 2015-8-13 批 准: 日 期:

修 订 记 录

1 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

日期 2015-08-13

修订版本 1.00 描叙 初始版本 作者 逻辑平台组 2 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

目录

目录 ....................................................................................................................................... 3 前言 ....................................................................................................................................... 4 第一章:目标器件的硬件架构及推荐设计 ....................................................................... 5 1.1、XILINX器件 ............................................................................................................ 6 1.2、ALTERA器件 .......................................................................................................... 16 第二章:利于时序的设计 ................................................................................................. 28 2.1、锁存器异常调用 ................................................................................................... 28 2.2、高效利用LUT资源 ............................................................................................... 28 2.3、状态机编写 ........................................................................................................... 29 2.4、复位控制 ............................................................................................................... 29 2.5、跨时钟域设计 ....................................................................................................... 31 2.6、充分利用IO单元内资源 ..................................................................................... 31 2.7、流水线设计 ........................................................................................................... 32 2.8、FIFO/RAM时序优化 .............................................................................................. 32 第三章:静态时序分析 ..................................................................................................... 33 3.1、时序分析基本概念 ............................................................................................... 33 3.2、建立和恢复时间 ................................................................................................... 36 3.3、保持和撤销时间 ................................................................................................... 38 3.5、多角度(multy corner)分析机制 ................................................................... 40 第四章:时序约束及收敛 ................................................................................................. 42 4.1、时钟约束 ............................................................................................................... 42 4.2、IO约束 .................................................................................................................. 45 4.3、例外约束 ............................................................................................................... 47 4.4、推荐收敛设计 ....................................................................................................... 49 附:参考文献 ..................................................................................................................... 50

3 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

前言

本文首先介绍常用FPGA器件的硬件结构,以及官方提供的推荐设计指南,旨在使逻辑开发人员能结合器件的硬件特性,设计高效、可靠的电路。第二章归纳一些常用的设计规范,避免异常电路的生成,随后章节介绍基本的静态时序分析和相应的约束及收敛办法。

期望通过对本文的阅读,逻辑开发人员能建立起一定的硬件思维,从而优化我们的设计,提高时序收敛能力。

4 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

第一章:目标器件的硬件架构及推荐设计

我们常用的目标器件主要来自XILINX和ALTERA两家公司,2者之间存在结构上的差异,各有各的优势,本文挑选两家公司各2款器件进行介绍,一款是当前大量使用的,另一款为下一代产品,因目标器件硬件构成单元众多,无法全面覆盖,仅挑选与我们设计关联度较高的几个部分进行介绍——逻辑宏单元,块存储器资源、时钟树结构和IO块资源。

1、XILINX宏单元为CLB,ALTERA为LAB,2者为逻辑器件的最小颗粒,下表为SPARTAN6(以下简称S6)和CYCLONE4(以下简称C4)最小颗粒的资源比较。

表1.1 逻辑宏单元比较 S6 CLB SLICE*2 6-inputLUTS REG 4*2 8*2 C4 LAB LE*16 4-input LUTS REG 1*16 1*16 总体而言,XILINX的宏单元功能更强大,其LUT可映射为分布式RAM/FIFO的同步存储单元,且SLICE中含有多个路由选通功能,可实现更复杂的逻辑功能。ALTERA则相对简单,所有的LE都是一样的结构(XILINX的SLICE分为3种不同结构),进位链资源更丰富(XILINX的CLB中仅有1/2的SLICE具有进位链资源),一定程度上弥补了4输入相较于6输入的劣势。

2、在BRAM资源上,2者差异如表1.2所示,

表1.2 BRAM资源对比 容量 SDP(简单双端口)模式最大位宽 支持拆分 其他 S6 18K 36bit 等于2个独立的9K存储器 无 C4 9K 36bit 等于2个独立的4.5K存储器 可作为移位寄存器使用 XILINX在最新的7系列器件中,进一步加大了BRAM的容量(36K),且支持Built_in模式FIFO,不再需要调用逻辑生成FIFO的控制逻辑,具有更好时序性能。

3、时钟树的结构上,XILINX比ALTERA更复杂,表1.3列出了部分对比关系。

表1.3 时钟资源对比 BUF资源 时钟管理单元 S6 BUFG/BUFIO/BUFH PLL+DCM C4 BUFG PLL 在实际应用中,很多差异都由软件屏蔽了,需要注意的是,XILINX支持区域时钟这个概念,而且在它最新的7系列产品中,区域时钟被强化,这有利于超大资源器件更好地收敛时序。

4、XILINX的IOE比ALTERA的多了串并转换单元,延迟线控制更方便,表1.4为对比关系表。

表1.4 IOE资源对比

S6 5 / 50

C4

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.6 时钟网络架构

逻辑开发过程中,对时钟资源的设计一般只是将外部时钟资源进行倍频/分频操作,得到系统想要的时钟,时钟BUF等调用都是软件生成的,开发人员一般不操作,需要注意的地方并不多。

1、全局时钟输入管脚为专用管脚,不作为时钟管脚时可以当做普通IO管脚;

2、PLL资源够用的情况下尽量使用PLL,因其为模拟器件,输出时钟的质量(抖动)会更好,同时其输出时钟的个数/类型更多;

3、使用IOSERDES/DDR/SDR等IO块内的资源时,注意调用BUF的类型(应使用BUFIO2等专用资源);

4、非专用时钟管脚信号也能进入到DCM/PLL,但时钟抖动将增大;

1.1.1.4、IO资源及推荐设计

IO资源指的是靠近输入输出引脚布置的一些专用逻辑资源,XILINX将这类资源命名为Select IO资源,主要包括以下几种:

1、延迟线资源;

2、ILOGIC/OLOGIC资源:主要是SDR或DDR输入输出接口; 3、ISERDES/OSERDES资源:并串转换资源;

11 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.7 Select IO资源结构图

IOdelay资源可用于源同步采样时对数据或时钟路径进行延迟,以匹配建立保持时间。比如说,一般时钟进入FPGA后需上全局网络,其延时比数据大很多,如果在FPGA入口处2者的相位关系已经匹配好,此时就需要使用延迟线资源对数据进行而外延迟,使其与时钟的相位关系利于采样。例化名IODELAY2,详情参考文献2。

ILOGIC是一个SDR/DDR寄存器,常应用于源同步采样,例化名为IDDR2。OLOGIC则正好相反,可用作源同步输出,例化名为ODDR2。2者具体的使用请参考文献2。

图1.8 ILOGIC结构图

12 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.9 OLOGIC结构图

SERDES串并转换模块在某些高速接口常被用到,其能在进入FPGA内部逻辑之前将高速串行信号转换为较低速的并行信号,如500M串行信号输入,经转换为4位并行信号后,速率将为125M,此时再提供给内部逻辑,可提高逻辑设计的可靠性。详细使用方法见参考文献2。

图1.10 ISERDES2结构图

13 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.11 OSERDES2结构图

IO资源的调用能提高资源的利用率,同时也会显著提高时序性能,因为作为专用器件,其性能要比调用CLB逻辑资源高,且其布置在IO口附近,极大降低了布线延迟和困难,因此要尽可能的使用这些资源。

1.1.2、KIRTEX 7

1.1.2.1、CLB结构及推荐设计

与S6一致,略。

14 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

1.1.2.2、BRAM结构及推荐设计

相对于S6,K7的BRAM有了升级,主要有以下几点:

1、最大存储容由18K升级为36K,单个BRAM可配置为位宽为72bit的SDR(simple_dual_port)RAM/ROM;

2、可作为独立的2个18K BRAM使用;

3、所有BRAM资源自带FIFO控制逻辑,不再额外调用CLB资源生成,减少资源消耗及提高时序性能,在FIFO GEN时选择BUITL_IN模式;

4、相邻BRAM之间有专用连线,可以将2个36KRAM合并为1个64KRAM,无需调用其他资源;

1.1.2.3、时钟树结构及推荐设计

7系列产品的时钟树设计有所变化,区域时钟概念得到了增强,主要表现在以下几点: 1、增加BUFR/BUFMR资源,分别为单个区域和多个区域的时钟BUF。时钟信号经过BUFR/BUFMR后,仅对单个区域或多个区域内的时序逻辑有驱动能力,BUFR/BUFMR的好处是,他们离IO管脚比BUFG更近,在处理源同步设计时,一般要对时钟和数据信号进行延时,时钟走BUFG会比数据的路径延时长很多,而IDELAY的延时也是有限制的,所以此时选择区域时钟BUF会更好;

2、取消全局时钟输入管脚GCLK,取而代之的是区域和多区域时钟输入管脚SRCC和MRCC(此管脚也可连到全局时钟资源上,并非只能接到区域时钟资源);

3、时钟管理单元变为CMT,有1个MMCM和1个PLL组成,PLL仅为MMCM的一个功能子集,因此不再像S6时推荐使用PLL而不选择DCM的建议。PLL的输出有限制,无法介入到IO单元中,因此做一些高速设计的时候应该优先选用MMCM;

1.1.2.4、IO资源及推荐设计

7系列将IO管脚分为HR(High Range,更多电平标准支持)和HP(High Performance,更高性能)两种,两者的差异见下表。另外7系列增加了DCI功能,可以片上调整阻抗匹配,利于布板。其他的地方与S6没有多大的区别。

表1.9 电平标准支持

15 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

表1.10 IO资源支持

1.2、ALTERA器件

1.2.1、CYCLONE 4

1.1.2.1、LAB结构及推荐设计

ALTERA低端产品的主要采样4-input LUT技术,C4的最小逻辑单元LE由1个4输入LUT和1个寄存器组成,16LE组成一个LAB块。

16 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.12 logic element

图1.13 logic array block

C4的每个LE有8路LAB_WIDE(对所有LAB内的LE有效)控制信号,特别是其具有专用的同步置位/同步复位电路(S6用LUT实现),异步控制只有复位没有置位功能,如果想将复位值设为1,电路会在寄存器的输入和输出口都加入一个反相器来实现,消耗额外资源。使用C4做设计时应该考虑如下器件特性:

1、同步复位/置位资源在合适的时候可以使用;

2、用异步复位信号对REG做初始化时,尽可能的初始化为0,为1时会额外消耗资源,必须初始化为1时,可考虑使用同步置位资源;

3、控制信号都是LAB_WIDE,一个块语句中的信号应该使用相同的控制逻辑;

4、LUT不具备随机写入功能,即无法调用其产生FIFO,RAM的存储单元,在分布式RAM/FIFO中,LUT扮演地址译码功能,延时会比较大,在块RAM资源够用的情况下使用块RAM资源,不够时,深度不宜超过16;

1.1.2.2、BRAM结构及推荐设计

C4的BRAM结构没有多少特别之处,使用的时候注意以下几点:

17 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

1、M9K最大支持位宽36bit;

2、M9K支持2个M4.5K的单口RAM例化;

3、M9K可以例化为移位寄存器,位宽为1时,如果级数大于等于64时,会调用M9K资源生成,位宽大于1时,位宽x级数大于32时,调用M9K,其他条件下由逻辑生成;

1.1.2.3、时钟树结构及推荐设计

C4的时钟树没有S6的复杂,全局布线只有GCLK一种,因此使用时需考虑较少。 1、PLL的输入只能来自专用时钟管脚,内部逻辑或普通管脚皆无法布线;

2、时钟资源做动态切换可以有2种方式,一种是在PLL之前切换时钟源,一种是在clock_control_bank进行切换,如图1.14;

3、DPCLK和CDPCLK为双向多功能管脚,主要用于高扇出控制信号的输入,比如某些总线协议里很多地方需要使用的信号,cs之类;

图1.14 PLL与CCB连线图

18 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.15 GCLK全局图

1.1.2.4、IO资源及推荐设计

ALTERA器件对于PCB设计有很多资源可以调用,如图1.16所示,上拉、钳位、保持、开路、驱动能力、片上终端匹配等,一般这些功能需要原理图设计人员很熟悉并能指导逻辑开发人员调用,但很少这样去做,但板子设计好后,电路出现信号质量问题时可以调用这些功能进行调整,弥补设计缺陷。下面简单介绍几种配置的功能。

1、Current Strength驱动强度,有助于减少同步开关输出SSO导致的系统噪声; 2、Slew Rate翻转速率,影响上升沿与下降沿翻转速率,越快噪声越大,越慢延时越长,默认为SLOW慢模式;

3、open-drain开漏输出,输出信号被多个器件共享时可使用;

4、bus_hold总线保持,保持前一次驱动的电平,直到下一次驱动到来,双向端口时应用,比如一次输出驱动后,进入三态,总线保持功能此时会保持住上一次逻辑电平;

5、OCT片上匹配,有两种模式,自校正和固定模式,需在特定管脚接入高精度电阻以支持此项功能;

6、programable_delay可编程延时,软件会根据IO时序约束自动延时,以匹配建立和保持时间,也支持手动修改,详见相关操作说明。

7、对于外部输入信号,如果要提高设计的时序性能,应该先进行寄存再使用,图1.16中可见IOE中有寄存器资源,如果HDL中有寄存操作,软件会调用此资源进行映射的;当输

19 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

入接口是双沿采样时(DDR),可调用IOE中的DDIO进行数据采样,实现良好的时序性能;

图1.16 SDR模式下的IOE结构图

1.2.2、MAX 10

1.2.2.1、LE与LAB结构及推荐设计

LAB是包含一组逻辑资源的可配置的逻辑模块。

每个LAB包含以下组件: (1)、16个逻辑单元(LE)— MAX10器件中的最小逻辑单元; (2)、LE进位链 — 进位链通过LAB内的每个LE串行地传播; (3)、LAB控制信号 — 在一个LAB内驱动LE控制信号的专用逻辑; (4)、本地互联 — 在相同的LAB的LE之间传输信号; (5)、寄存器链— 在LAB中将一个LE寄存器的输出传输到相邻的LE寄存器。 LAB的结构如图1.17所示。

20 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.17

逻辑单元(LE)是逻辑中最小的单元,每个LE具有以下特性: (1)、一个4输入的查找表,以实现四种变量的任何功能; (2)、一个可编程的寄存器; (3)、一个进位链连接; (4)、一个寄存器链连接。 LE的结构图如图1.18所示。

图1.18

综上所述,在使用组合逻辑时,对象应该尽量为4的整数倍,能够不超过4位的尽量不要超过4位,这样在保证时序的基础上节省了大量的LE。

21 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

1.2.2.2、内嵌RAM块结构及推荐设计

MAX10器件的每个M9K存储器模块都提供了一个能够运行在高达284MHz的9Kb的片上存储器。MAX10器件的存储器模块的性能规范如表1.10所示。

表1.10 存储器模块的性能规范

根据以上特性,在设计中应该注意一下几点: (1)、在设计系统的时候应该根据芯片的速度等级选择不同的系统时钟; (2)、设计FIFO、单端口、简单双端口RAM时,如果使用的是块资源建议深度尽量不要超过256,宽度尽量不要超过36。而真双端口RAM应该尽量保证深度在512以内,宽度在18以内。

(3)、在使用FIFO的时候,如果所需的FIFO小,应该考虑使用LC来实现,考虑到LUT位4输入架构,我们推荐深度不操过16时,例化分布式FIFO。

1.2.2.3、时钟网络及锁相环(PLL)结构及推荐设计

MAX10器件支持全局时钟网络(GCLK)和锁相环(PLL)。

时钟网络对内核提供时钟源。可以在高扇出全局信号网络中使用时钟网络,如复位与清零。

PLL对器件的时钟管理、外部系统时钟管理以及I/O接口时钟提供了可靠的时钟管理与综合。

MAX10器件中还有内部振荡器,可以生成固定的几个频率,并且可以驱动所有的内部信号。

PLL的高级结构图如图1.19所示。

图1.19

22 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

综上所述,在时钟时钟信号时应该注意以下几点: (1)、可以使用全局时钟来控制高扇出的信号; (2)、能使用PLL的地方尽量使用PLL; (3)、如果PLL资源不够,可以考虑使用内部振荡器来实现分频。

1.2.2.4、DSP结构及推荐设计

MAX10器件中支持高达144个嵌入式乘法器资源。通过使用嵌入式乘法器可以实现乘法加法器与乘法累加器的功能。通过配置嵌入式乘法器,以支持最多9位位宽的两个独力的9*9乘法器,可以通过动态修改singa与singb来改变输入数据的符号。

9*9乘法器的结构图如图1.20所示。

图1.20

通过配置每一个嵌入式乘法器,来支持10到18位输入宽度的单一的18*18乘法器,可以通过动态修改singa与singb来改变输入数据的符号。

18*18乘法器的结构图如图1.21所示。

23 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.21

嵌入式乘法器的设计规范如表1.11所示。

表1.11 乘法器的设计规范

综上所述,在使用嵌入式乘法器的时候应该注意以下几点: (1)、乘法器位宽尽量控制在9位以内; (2)、可以通过修改符号位动态修改数据符号; (3)、在使用乘法器时根据芯片速度等级选择使用相应的位宽。

1.2.2.5、IO资源及推荐设计

IO资源指的是靠近输入输出引脚布置的一些专用逻辑资源,MAX10器件主要包括以下IO资源:

1、通用I/O资源;

2、高速LVDS I/O接口; 3、外部存储器接口。

MAX10 通用IO系统支持各种IO标准。在MAX10器件中,IO管脚位于器件的外围的IO bank。IO管脚和IO缓冲器具有几个可编程功能。

IO单元位于每IO bank中的四个模块组中:

1、高速的DDR3 IO bank支持各种IO标准和协议,包括DDR3。这些IO bank仅可以用在器件的右侧。

2、高速IO bank支持各种IO标准和协议,除了DDR3以外。这些IO bank可以用于器件的顶部、底部和左侧。

3、低速IO bank位于器件的顶部左侧的较低速度的IO bank。

IO bank的位置如图1.22所示,根据器件型号不同略有差异,该图为10M04与10M08的IO bank图。

24 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.22 10M04与10M08的 IO bank

高速LVDS I/O接口的IO bank支持所有的真LVDS输入和伪LVDS输出。只有底部的IO bank支持真LVDS输出。如图1.23为10M04与10M08硅晶片的表面示意图。每个bank都标记了实际的bank数。只有bank2与bank6支持LVPECL。

图1.23 10M04与10M08硅晶片表面示意图

外部存储器接口仅在器件的右侧的IO bank上被支持,布局时必须将所有的外部存储器IO管脚放在IO bank的右侧。图1.24为外部存储器接口的IO bank图。

25 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.24 外部存储器IO bank分布

MAX10 IO单元(IOE)包含一个双向IO缓冲器和五个寄存器,用于寄存输入、输出、输出使能信号和完全嵌入式双向单倍数据速率(SDR)以及双倍数据速率(DDR)的传送。

IO缓冲器在每个IO bank上四个IO模块组成一组。

1.MAX10器件与vref、rup、rdn、clkpin、pllclkout、配置及测试管脚共享通用IO管脚。

2.施密特触发器输入缓冲器适用所有IO缓冲器。

每个IOE包含一个输入寄存器、两个输出寄存器和两个输出使能(OE)寄存器。 1.两个输出寄存器和两个OE寄存器被用于DDR应用。

2.可以将输入寄存器用于快速建立时间,将输出寄存器用于快速时钟至输出(clock-to-output)时间。

3.可以将OE寄存器用于快速时钟至输出(clock-to-output)使能时间。

可以将IOE用于输入、输出或双向数据路径。IO管脚支持各种单端和差分IO标准。 双向配置中的IOE结构如图1.25所示。

26 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图1.25 DDR模式下的IOE结构图

对于外部输入信号,如果要提高设计的时序性能,应该先进行寄存再使用,图1.25中可见IOE中有寄存器资源,如果HDL中有寄存操作,软件会调用此资源进行映射的;当输入接口是双沿采样时(DDR),可调用IOE中的DDIO进行数据采样,实现良好的时序性能;

27 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

第二章:利于时序的设计

2.1、锁存器异常调用

FPGA设计中不推荐使用锁存器进行设计,因为对于时序分析工具而言,锁存器会增加时序分析的难度。这里我们仅对意外生成锁存器的情况进行分析。

锁存器是组合性非时序逻辑生成的,由缺失分支条件或敏感列表不完整引入。

1、分支条件缺失(if-else缺失) always @ ( G or D ) if( G ) Q = D;

2、敏感列表不完整(推荐使用always @ ( * )表述) always @ ( G ) if( G ) Q = 1; else if( B ) Q = 0; else Q = 1;

2.2、高效利用LUT资源

LUT查找表是FPGA最重要的资源,组合逻辑一般都是调用LUT来实现的。因此,设计组合逻辑时应该结合LUT的特性,实现良好的时序性能。我们推荐设计单元(always块)应可在一个CLB(8X6inLUT+16XREG)/LAB(16X4inLUT+16XREG)中实现。

逻辑中比较器、加法器、常规的组合逻辑等都是在LUT上实现的,并且XILINX的LUT支持同步存储功能,可以例化为RAM/FIFO等,而ALTERA的LUT不支持此项功能,同步存储单元都是调用LE中的REG实现,LUT作为地址映射资源被例化。

1个4输入LUT一次可比较2bit数据,6输入LUT可比较3bit,多位比较是LUT级联完成的,如下图为8bit位宽比较需调用5个4输入LUT实现。

28 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图2.1 8bit比较器

一般项目中LUT资源都较充裕,对比较器、加法器位宽限制较少,具体的量化限制无法给出,一般48位宽的操作都没有问题,但资源紧张时有可能时序无法通过,此时需酌情减少位宽。

2.3、状态机编写

综合工具会自动识别设计中的状态机,并进行优化,需要考虑有以下几点:

1、编码方式:独热码、二进制码。独热码具有更好的速度,因其无需解码,但容易进入未定义的状态而出异常;二进制码的优势是更安全,综合各方面考虑,使用二进制码更可靠;

2、使用3段式编码,利于综合工具识别,进而优化; 3、设计default,将未知状态跳转到复位状态;

4、复位设计要简洁,不要即使用复位操作又使用置位操作,综合工具会将其编译为普通逻辑而非状态机,即三段式状态机的第一段要简洁,不添加额外的逻辑,复位值尽可能为全“0”,如下所示:

always @ (posedge clk or posedge reset) begin

if(reset)

state <= state_0; // state_0=4’h0; else

state <= next_state; end

2.4、复位控制

XILINX和ALTERA器件对复位控制的硬件资源有较大的区别,表2.1为对比关系。

表2.1 复位设计对比 全局复位 复位方式 XILINX 推荐不使用全局复位操作 推荐使用同步复位 29 / 50

ALTERA 未有明确推荐 未有明确推荐 高低皆可以 复位信号极性 高有效 时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

复位资源 专用异步复位资源 专用同步/异步复位资源 为了方便代码相互移植,根据上述不同,我们推荐如下设计要点: 1、XILINX之所以不推荐全局复位,是其在芯片配置过程中有一个GSR全局复位的过程,而复位值是可以在信号申明时指定的(reg a = 1’b1;),因此其觉得没有必要再进行全局复位,ALTERA在上电后值也是确定的,没有明确置为1的,都默认为0,因此,上电后逻辑都能进入设定状态。但进行全局软复位时,就必须添加全局复位链路,这在我们的设计中是比较常用的,因此我们的设计还是保留全局复位。

2、XILINX推荐使用同步复位,其给出的理由是,某些专用资源如DSP/BLOCK RAM仅支持同步复位,对关联信号进行异步复位后,综合工具可能将其映射为逻辑资源去实现,但我们使用这些资源的时候都直接例化,不需要综合工具去揣摩,且根据核生成的信号进行连接,因此我们还是使用目前推荐的异步复位同步化方式;

3、XILINX同步复位的实现是将复位信号作为普通的信号,消耗LUT资源,而ALTERA含有专用的同步复位/置位电路;

4、强制所有复位/使能等控制信号都采用高有效表示;

5、异步复位同步处理是我们推荐的复位方式,其RTL电路如下所示,不再累述。

图2.2 异步复位同步化

6、使用异步复位同步化处理,会遇到复位信号的恢复/撤销关系不满足的情况(复位信号不能在时钟沿跳变的一定范围内跳变,否则所在同步原件的输出值可能不确定),为了避免这种情况发生,可以使用时钟输出使能进行控制,将时钟滞后复位信号一定时间再输出,如图2.3所示:

图2.3 时钟滞后复位信号输出

7、单个CLB/LAB的控制信号(复位、使能等)在硬件上是一致的,因此对同一always块内的信号,要做同样的控制逻辑,否则软件会将他们映射到不同的CLB/LAB里,增加其间的路径延时;

8、复位值设为1时,ALTERA需消耗LUT,其会在REG的前后各加一个反相器,增加资源消耗及路径延时,XILINX的REG内部支持默认输出1,不额外增加逻辑。因此,设计时,尽可能将复位值设定为0,通过其他的手段完成非0值的输入,这样也可避免因为复位本身的问题带来的异常。

30 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

2.5、跨时钟域设计

异步时钟之间没有明确的相位关系,采样就可能不满足建立保持时间,从而导致亚稳态的产生,这是设计中必须避免的。跨时钟域设计主要针对2种情况,一是异步时钟域的实时信号需要被及时准确获取;二是来自异步时钟域的数据需要被无损引用。针对2种应用,我们推荐如下处理方法。

1、对异步实时信号,首先进行至少2拍的同步处理,再采样识别,供下级电路使用。 触发器如果采到亚稳态,输出端会在一段时间后才能从亚稳态恢复到一个确定态,如下图所示:

图2.4 亚稳态恢复

恢复时间与生产工艺、厂商、温度、电压等因素有关系,一般是1-2ns,如果系统的工作频率很高,比如500MHZ,上级触发器输出端的亚稳态会被下级采样到,并在整个系统中传递,但一般我们的系统工作频率不会这么高,那是不是高枕无忧呢?还有一种情况需要注意,触发器与触发器之间如果有组合逻辑电路,这相当于增加2级触发器之间的路径延迟,当:

路径延迟+亚稳态恢复时间(Tmet)-建立时间<时钟周期

亚稳态将向下传播,导致异常出现。将异步信号同步至少2拍,即确保了路径延迟最小化,避免了亚稳态的传播。

2、使用异步FIFO/RAM对来自异步时钟域的数据进行过度。

异步FIFO生成时根据2个时钟域的频率差设定将空将满的水位线,一般同步FIFO使用+-4做水位线,异步FIFO统一成+-6,频率相差特别大时,可设为+-8;

2.6、充分利用IO单元内资源

综合ALTERA/XILINX器件特性,IO单元主要包含有下面几种资源: 单沿采样寄存器(SDR) 双沿采样寄存器(DDR) 延迟线资源 串并转换器 ALTERA 有 有 有,软件自动配置或chip_planner手动设置 无(此处非指GXP资源) XILINX 有 有 有,可例化,参数配置延迟 有 根据IO块内的资源,我们提出如下推荐设计: 1、外部输入信号一般情况下都应该做时序约束,除非输入信号的频率低于25MHZ,且

31 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

工程资源利用率低于80%;

2、外部输入信号应先进行寄存(单沿采样),再做逻辑操作,软件会自动调用IO块里的寄存器资源进行映射,这样会减少路径延迟,利于时序收敛;

3、双沿采样一律调用IOE中的DDR资源,采样时钟如果可以选择区域时钟资源的,优先考虑区域时钟资源,因为其延时相对于全局时钟资源要短;XILINX的6系列区域时钟资源应例化BUFIO2,7系列例化BUFR;ALTERA?

4、串并转换器调用,ALTERA仅在高速接口如GXP硬核内支持,XILINX的每个IOE都含有此资源,一般情况下用得较少;

2.7、流水线设计

组合逻辑的延迟过大,超过所在时钟域的时钟周期,静态时序分析工具就会报红,指示该路径不满足建立保持时间,此时可采用流水线的思路进行时序优化。

流水线设计是将复杂的组合逻辑进行合理的拆分,使其分为多个简单的处理单元,并按照一定的先后顺序用寄存器隔开,数据则如同生产线上的产品流经各个处理单元。

图2.5 流水前使用低速时钟

图2.6 使用高速时钟进行流水

2.8、FIFO/RAM时序优化

FIFO/RAM是常用的功能单元,在很多设计中,时序报红一般都出现在与FIFO/RAM相关的路径上,原因是这些单元作为芯片内的专用资源(BLOCK RAM),布局是确定的,当设计消耗资源过大或者设计的路径本身延时过长,都会导致时序报红,我们推荐如下几种优化:

1、XILINX器件,符合使用分布式资源情形的尽量使用分布式资源(符合标准见第一章),支持built_in模式的一律使用built_in模式;ALTERA器件,M9K/M18K等块RAM资源足够的情况下使用块RAM资源,资源不足必须使用时才使用,且仍需符合使用规范(见第一章);

2、DATA输出路径如报红,考虑在数据输出侧添加寄存器进行流水,RAM生成时有输出寄存的选项可勾取,ALTERA生成FIFO时有选项,XILINX的FIFO生成向导没有直接的输出寄存的选项,需额外手动添加;

3、RAM输入信号如数据,地址等,应进行寄存,增加时序冗余,一般块RAM都是默认带寄存的,但分布式ram可能需要指定,尤其是XILINX产品,选择这些功能时请观察仿真时序,进行相应的逻辑设计;

32 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

第三章:静态时序分析

本章从ALTERA静态时序分析工具的角度进行介绍,基本的概念与XILINX都是相通的,故不再对XILINX进行额外阐述。

3.1、时序分析基本概念

静态时序分析是基于同步逻辑设计的,通过路径计算延迟的总和,并比较相对于预定义时钟的延迟,以此来描述电路的运行。静态时序分析仅关注时序间的相对关系而不是评估逻辑功能。设计人员可以根据时序分析的结果,通过时序约束来告诉工具设计希望的运行结果。时序约束只是一个辅助设计手段,一个好的时序只基于设计本身,而与时序约束关系不大。

一般的静态时序分析包括寄存器和寄存器之间路径分析、I/O之间的路径分析和异步复位和寄存器之间的路径的分析。由于时序分析是针对时钟驱动的电路进行的,所以分析的对象一定是“寄存器-寄存器对”。在分析涉及到I/O的时序关系对时,看似缺少一个寄存器分析对象,构不成“寄存器-寄存器对”,其实是穿过FPGA的I/O引脚,在FPGA外部虚拟了一个寄存器作为分析对象。时序分析工具通过分析时序路径之间的关系来判断设计是否能正确实现功能,根据Data Arrival Time和Data Required Time计算出时序余量(Slack)。当时序余量为负值时,发生时序违规(Timing Violation)。本章的主要目的就是介绍TimeQuest Analyzer工具中进行时序分析所用到的一些基本概念,帮助设计人员更好进行时序分析及约束。

Altera采用TimeQuest Analyzer工具实现静态时序分析,在读取时序报告的时候,网表中具有一些专业术语,比如nodes、cells、pins、nets、ports等。

表3.1 TimeQuest Analyzer的专业术语及介绍 约束术语 nodes cells pins nets 概念 基本时序网表单元,一般是指端口(ports)、寄存器、引脚(pins) Altera器件中的基本结构单元(例如,查找表、寄存器、IO单元、 DSP、存储器块等)。LE可以看作是Cell。 Cell的输入输出端口。可以认为是LE的输入输出端口。注意:这里 的Pins不包括器件的输入输出引脚 一个cell中,从输入pin到输出pin经过的逻辑,注意,网表中连 接两个相邻Cell的连线不被看作Net,而被看作同一个点,等价于Cell的pin。 顶层逻辑的输入输出端口。比如定义的器件的引脚 约束文件中指定为时钟类型的pin,包括输入引脚和输出的时钟引脚 ports clocks 33 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图3.1 网表结构图的实例说明

1、时序分析的对象——路径

Timequest时序分析工具以 paths为分析对象,主要指寄存器-寄存器之间,包括:ports-to-pins, pins-to-pins, pins-to-ports。这里的pins-to-pins连接关系既包括Cell内部的连接(Net),也包括相邻Cell外部的pins-to-pins连接。 Path通常分为三类:

(1) Clock paths:从Clock Port或内部生成的clock pin到寄存器Cell的时钟输入Pin。

(2)Data paths:从输入Port到寄存器Cell的数据输入pin,或从寄存器Cell的数据输出pin到另一个寄存器Cell的数据输入pin。

(3) Asynchronous paths:从输入Port到寄存器Cell的异步输入pin,或从寄存 器Cell的数据输出pin到另一个寄存器Cell的异步输入pin。 三种path如图2所示。

图3.2 时序分析工具中的路径分类

2、Launch and Latch Edges

所有的时序分析都是基于时钟的,为了分析各种路径的延迟,TimeQuest采用 Launch and Latch Edges来决定所有寄存器与寄存器之间传输路径的关系。

(1)Launch Edge:前级寄存器发送数据对应的时钟沿,是时序分析的起点。 (2)Latch Edge:后级寄存器捕获数据对应的时钟沿,是时序分析的终点。相对于launch edge默认情况下为一个时钟周期,但在多周期约束的情况下则由约束的多周期数目决定。

如图3所示,launch edge在0ns时把寄存器reg1的数据的输出传输给reg2,latch edge为10ns时刻,reg2寄存器在10ns采样该数据。数据必须在latch edge之前到来并保持稳定。

34 / 50

时序设计规范 逻辑平台组 Q/ZH.TE/XXXX.XX

图3.3 Launch and Latch Edges的关系示意图

如图3.4所示,在时序分析过程中,无论是在同一时钟域还是在不同的时钟域中,时钟之间的最主要的关系就是setup relationship和hold relationship(建立时间关系、保持时间关系,后面会介绍),不同的时钟域之间无非就是Launch Clock和Latch Clock分别为不同的时钟而已。所以在时序分析工具中,如果没有对时钟进行约束,Quartusii软件是按照1GHz的最大时钟频率进行布局布线和综合的指导, 所以在设计的过程中必须对所有的时钟进行与实际情况相符的约束。

图3.4 Setup & Hold relationship与Lanuch Clock、Latch Clock关系

3、 Data Arrival and Data Required Times

时序分析工具确定好了路径之后,通过Lanuch Clock和Latch Clock就可以估算出数据和时钟达到寄存器的管脚(pins)的延迟,也就是Data and Clock Arrival Times.

时序分析工具估算Data Arrival Times是以launch clock edge为时序分析的起点,包括源寄存器(发送数据的寄存器)的时钟相对于源时钟的延迟时间、源寄存器的clock-to-output delay ( μtCO)、数据从源寄存器的Q端到目的寄存器的输入端。

Data Required Times是对时钟路径的分析,是以Latch Clock为计算起点,对于建立时间违例分析来说,包括目的寄存器时钟的延迟时间,减去目的寄存器固有的建立时间;对于保持时间违例来说,包括目的寄存器时钟的延迟时间,加上目的寄存器固有的保持时间。可以理解为为了目的寄存器采到正确的值,数据延迟要求的时间,它与Data Arrival Times配合使用能够分析出时序是否违例。

35 / 50

本文来源:https://www.bwwdw.com/article/t15.html

Top