时序设计规范1V0_第1页
时序设计规范1V0_第2页
时序设计规范1V0_第3页
时序设计规范1V0_第4页
时序设计规范1V0_第5页
已阅读5页,还剩47页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、时序设计规范逻辑平台组Q/ZH.TE/XXXX.XX武汉中元华电科技股份有限公司Wuhan Zhongyuan Huadian Science & Technology Co., Ltd. 文件编号:Q/ZH.TE/XXXX-XX 时序设计规范 编 制:逻辑平台组 日 期: 2015-8-13 批 准: 日 期: 修 订 记 录日期修订版本描叙作者2015-08-131.00初始版本逻辑平台组目录目录3前言4第一章:目标器件的硬件架构及推荐设计51.1、XILINX器件61.2、ALTERA器件16第二章:利于时序的设计282.1、锁存器异常调用282.2、高效利用LUT资源282.3

2、、状态机编写292.4、复位控制292.5、跨时钟域设计312.6、充分利用IO单元内资源312.7、流水线设计322.8、FIFO/RAM时序优化32第三章:静态时序分析333.1、时序分析基本概念333.2、建立和恢复时间363.3、保持和撤销时间383.5、多角度(multy corner)分析机制40第四章:时序约束及收敛424.1、时钟约束424.2、IO约束454.3、例外约束474.4、推荐收敛设计49附:参考文献50前言本文首先介绍常用FPGA器件的硬件结构,以及官方提供的推荐设计指南,旨在使逻辑开发人员能结合器件的硬件特性,设计高效、可靠的电路。第二章归纳一些常用的设计规范,

3、避免异常电路的生成,随后章节介绍基本的静态时序分析和相应的约束及收敛办法。期望通过对本文的阅读,逻辑开发人员能建立起一定的硬件思维,从而优化我们的设计,提高时序收敛能力。第一章:目标器件的硬件架构及推荐设计我们常用的目标器件主要来自XILINX和ALTERA两家公司,2者之间存在结构上的差异,各有各的优势,本文挑选两家公司各2款器件进行介绍,一款是当前大量使用的,另一款为下一代产品,因目标器件硬件构成单元众多,无法全面覆盖,仅挑选与我们设计关联度较高的几个部分进行介绍逻辑宏单元,块存储器资源、时钟树结构和IO块资源。1、XILINX宏单元为CLB,ALTERA为LAB,2者为逻辑器件的最小颗粒

4、,下表为SPARTAN6(以下简称S6)和CYCLONE4(以下简称C4)最小颗粒的资源比较。表1.1 逻辑宏单元比较S6C4CLBLABSLICE*2LE*166-inputLUTS4*24-input LUTS1*16REG8*2REG1*16总体而言,XILINX的宏单元功能更强大,其LUT可映射为分布式RAM/FIFO的同步存储单元,且SLICE中含有多个路由选通功能,可实现更复杂的逻辑功能。ALTERA则相对简单,所有的LE都是一样的结构(XILINX的SLICE分为3种不同结构),进位链资源更丰富(XILINX的CLB中仅有1/2的SLICE具有进位链资源),一定程度上弥补了4输入

5、相较于6输入的劣势。2、在BRAM资源上,2者差异如表1.2所示,表1.2 BRAM资源对比S6C4容量18K9KSDP(简单双端口)模式最大位宽36bit36bit支持拆分等于2个独立的9K存储器等于2个独立的4.5K存储器其他无可作为移位寄存器使用XILINX在最新的7系列器件中,进一步加大了BRAM的容量(36K),且支持Built_in模式FIFO,不再需要调用逻辑生成FIFO的控制逻辑,具有更好时序性能。3、时钟树的结构上,XILINX比ALTERA更复杂,表1.3列出了部分对比关系。表1.3 时钟资源对比S6C4BUF资源BUFG/BUFIO/BUFHBUFG时钟管理单元PLL+D

6、CMPLL在实际应用中,很多差异都由软件屏蔽了,需要注意的是,XILINX支持区域时钟这个概念,而且在它最新的7系列产品中,区域时钟被强化,这有利于超大资源器件更好地收敛时序。4、XILINX的IOE比ALTERA的多了串并转换单元,延迟线控制更方便,表1.4为对比关系表。表1.4 IOE资源对比S6C4单沿采样寄存器(SDR)有有双沿采样寄存器(DDR)有有延迟线资源有,可例化,参数配置延迟自动配置或chip_planner手动设置串并转换器有无(此处非指GXP资源)1.1、XILINX器件1.1.1、SPARTAN 61.1.1.1、CLB结构及推荐设计S6的CLB结构和C4的LAB有很大

7、的差异,S6采用6输入查找表,C4为4输入,S6的CLB进一步分为SLICE,布局上如图1.1分别置于2个角,而C4的LAB由16个LE组成,LE都是垂直排列,详见相应章节。图1.1 CLB结构图同一CLB的2个SLICE功能不同,SLICE0的功能更强,具有进位链、支持分布式RAM、移位寄存器SRL等功能,SLICE1仅有LUT基本功能。SLICE分为三种,一个CLB至少含有1个SLICEX,另一个根据产品或者位置不同而不同,分布式RAM和移位寄存器SRL仅SLICEM支持。表1.5 SLICE分类表1.6 CLB资源查找表LUT是FPGA与CPLD的主要区别之一,FPGA的组合逻辑实现在L

8、UT里,CPLD则直接使用其富含的与非门等组合逻辑资源实现。查找表可以近似的看做一片存储空间(分布式RAM正是基于此实现的),输入脚A6:1看做这片空间的地址,多个信号之间的组合逻辑关系(真值表)可以存储到这片空间中,从而实现组合逻辑功能。图1.2是S6的6输入查找表结构图,可见其是由2个5输入查找表构成的,以此类推,7输入/8输入的查找表也可以由6输入查找表组合而来。图1.3为SLICEM的结构图,一个SLICE里含有4个LUT和8个REG,其他SLICE类型的结构图请参考文献1。图1.2 6输入查找表结构图图1.3 SLICEM结构图SLICEM是分布式RAM资源,表1.3为单个SLICE

9、M可以配置的RAM类型,其详细的配置结构图见参考文献1。从中可发现分布式RAM的最大深度应不超过256。表1.7 单个SLICEM可配置分布式RAM类型表1.8 单个SLICEM可配置分布式ROM类型SLICEM还可以用来实现移位寄存器,图1.4为其结构图,一个LUT可实现一个32SRL,一个SLICE则可级联实现最大128SRL。另外一个要注意的地方是,SRL不支持复位操作,故RTL代码中不要使用复位操作,否则可能无法调用SRL来实现,而是用REG实现。图1.4 移位寄存器SRL结构图综上所述,根据S6的结构特点,为保持良好的时序性能,应遵守如下规则:1、单个SLICE最大可配置为8输入LU

10、T,做CASE或组合逻辑运算时对象应该不超过8;2、RAM或FIFO的深度不超过64时,应调用分布式资源,64-128深度时需考虑下述条件:a、需要异步读功能时,调用分布式资源;b、宽度大于16bit时,调用block RAM资源;c、较小的Tco和布局限制,调用分布式资源;3、尽量使用SRL移位寄存器资源,使用时,不要添加复位功能,其硬件上不支持复位,如果添加,综合工具最后可能不会调用SRL资源;4、单个SLICE使用相同的控制信号(clk,clk_en,SR(set/reset),对同一个always块里的信号使用相同的控制(信号极性一致/复位置位行为一致/使能一致);5、XILINX推荐

11、不使用全局复位信号进行初始化,而采用其GSR全局复位信号进行复位,GSR复位信号在配置阶段有效,而初值在申明信号的时候指定,如(Regdin = 1b0;),但我们的代码都带有全局复位信号,如果复位时序无法通过,则需要考虑此推荐,同时如果使用了上述GSR模式,本地的复位要与GSR设定的值一致,即GSR复位为1,本地也应该复位为1;6、SLICE中控制信号都是高电平有效,因此尽可能使用高电平有效信号,减少反向操作(消耗LUT资源);1.1.1.2、BRAM结构及推荐设计S6的BLOCK RAM为TRUE DUAL PORT RAM真双端口RAM,ALTERA某些系列的产品采用假双端口RAM,同样

12、容量的真双端口RAM,A需使用2倍资源才能实现。下面是S6的BRAM特点,例化时应结合应用考虑这些特性:1、最大容量18Kbit,其由2个独立的9Kbit组成,可单独例化9KbitBRAM;2、true dual port(每个端口可读可写)模式时位宽最高18bit,但采用simple dual port(每个端口仅支持读或写一种操作)模式时,位宽可扩展至36bit,一般我们设计都是采用后者简单双端口模式;3、写操作有3种模式,写优先,读优先,不变。分别定义写操作时,输出latch的值,写优先将最新的值输出,读优先将原来的值输出,不变模式下只要有写操作,值被锁定,不改变,默认是写优先;4、如图

13、1.5所示,可例化一个输出寄存器到BRAM中,以提高性能,但这样会额外增加一级延时。Latch输出直接连到下一级逻辑,一般为CLB,因Latch相对于时钟有一定的延时,此延时应比寄存器的Tco大很多,当资源使用较多时,BRAM与逻辑之间可能相隔较远,很可能出现无法布通的情形,因此,加入一级寄存器做流水可提高时序性能。5、复位管脚仅对输出LATCH或REG有效,对RAM里面的内容不起作用,必须通过写的方式进行刷新才能达到复位的效果,上电初始化可添加初始化文件配置RAM,不添加默认RAM内容为0,或进入BRAM_SDP_MACRO模块手动修改各bit值;图1.5 BRAM输出寄存器1.1.1.3、

14、时钟树结构及推荐设计S6的时钟资源由4种类型的连接组成:1、全局时钟输入管脚;2、全局时钟缓冲/选通器(BUFG, BUFGMUX);3、I/O时钟缓冲器(BUFIO2, BUFIO2_2CLK, BUFPLL);4、水平时钟布线缓冲器(BUFH);S6的2种时钟网络:1、全局时钟网络:向逻辑提供低偏移时钟布线;2、IO区域时钟网络:向SelectIO资源(SDR/DDR/IOSERDES)提供高性能、低偏移时钟布线;S6的2种时钟配置资源:1、DCM:数字时钟管理单元2、PLL:锁相环图1.6 时钟网络架构逻辑开发过程中,对时钟资源的设计一般只是将外部时钟资源进行倍频/分频操作,得到系统想要

15、的时钟,时钟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资源,主要包括

16、以下几种:1、延迟线资源;2、ILOGIC/OLOGIC资源:主要是SDR或DDR输入输出接口;3、ISERDES/OSERDES资源:并串转换资源;图1.7 Select IO资源结构图IOdelay资源可用于源同步采样时对数据或时钟路径进行延迟,以匹配建立保持时间。比如说,一般时钟进入FPGA后需上全局网络,其延时比数据大很多,如果在FPGA入口处2者的相位关系已经匹配好,此时就需要使用延迟线资源对数据进行而外延迟,使其与时钟的相位关系利于采样。例化名IODELAY2,详情参考文献2。ILOGIC是一个SDR/DDR寄存器,常应用于源同步采样,例化名为IDDR2。OLOGIC则正好相反,可

17、用作源同步输出,例化名为ODDR2。2者具体的使用请参考文献2。图1.8 ILOGIC结构图图1.9 OLOGIC结构图SERDES串并转换模块在某些高速接口常被用到,其能在进入FPGA内部逻辑之前将高速串行信号转换为较低速的并行信号,如500M串行信号输入,经转换为4位并行信号后,速率将为125M,此时再提供给内部逻辑,可提高逻辑设计的可靠性。详细使用方法见参考文献2。图1.10 ISERDES2结构图图1.11 OSERDES2结构图IO资源的调用能提高资源的利用率,同时也会显著提高时序性能,因为作为专用器件,其性能要比调用CLB逻辑资源高,且其布置在IO口附近,极大降低了布线延迟和困难,

18、因此要尽可能的使用这些资源。1.1.2、KIRTEX 71.1.2.1、CLB结构及推荐设计与S6一致,略。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,无需调

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

20、到全局时钟资源上,并非只能接到区域时钟资源);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 电平标准支持表1.10 IO资源支持1.2

21、、ALTERA器件1.2.1、CYCLONE 41.1.2.1、LAB结构及推荐设计ALTERA低端产品的主要采样4-input LUT技术,C4的最小逻辑单元LE由1个4输入LUT和1个寄存器组成,16LE组成一个LAB块。图1.12 logic element图1.13 logic array blockC4的每个LE有8路LAB_WIDE(对所有LAB内的LE有效)控制信号,特别是其具有专用的同步置位/同步复位电路(S6用LUT实现),异步控制只有复位没有置位功能,如果想将复位值设为1,电路会在寄存器的输入和输出口都加入一个反相器来实现,消耗额外资源。使用C4做设计时应该考虑如下器件特性

22、: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结构没有多少特别之处,使用的时候注意以下几点:1、M9K最大支持位宽36bit;2、M9K支持

23、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为双向多功能管脚,主要用于高扇出控制信号的输入,比如某些总线协议

24、里很多地方需要使用的信号,cs之类;图1.14 PLL与CCB连线图图1.15 GCLK全局图1.1.2.4、IO资源及推荐设计ALTERA器件对于PCB设计有很多资源可以调用,如图1.16所示,上拉、钳位、保持、开路、驱动能力、片上终端匹配等,一般这些功能需要原理图设计人员很熟悉并能指导逻辑开发人员调用,但很少这样去做,但板子设计好后,电路出现信号质量问题时可以调用这些功能进行调整,弥补设计缺陷。下面简单介绍几种配置的功能。1、Current Strength驱动强度,有助于减少同步开关输出SSO导致的系统噪声;2、Slew Rate翻转速率,影响上升沿与下降沿翻转速率,越快噪声越大,越慢延

25、时越长,默认为SLOW慢模式;3、open-drain开漏输出,输出信号被多个器件共享时可使用;4、bus_hold总线保持,保持前一次驱动的电平,直到下一次驱动到来,双向端口时应用,比如一次输出驱动后,进入三态,总线保持功能此时会保持住上一次逻辑电平;5、OCT片上匹配,有两种模式,自校正和固定模式,需在特定管脚接入高精度电阻以支持此项功能;6、programable_delay可编程延时,软件会根据IO时序约束自动延时,以匹配建立和保持时间,也支持手动修改,详见相关操作说明。7、对于外部输入信号,如果要提高设计的时序性能,应该先进行寄存再使用,图1.16中可见IOE中有寄存器资源,如果HD

26、L中有寄存操作,软件会调用此资源进行映射的;当输入接口是双沿采样时(DDR),可调用IOE中的DDIO进行数据采样,实现良好的时序性能;图1.16 SDR模式下的IOE结构图1.2.2、MAX 101.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寄存器的输出

27、传输到相邻的LE寄存器。LAB的结构如图1.17所示。图1.17逻辑单元(LE)是逻辑中最小的单元,每个LE具有以下特性:(1)、一个4输入的查找表,以实现四种变量的任何功能;(2)、一个可编程的寄存器;(3)、一个进位链连接;(4)、一个寄存器链连接。LE的结构图如图1.18所示。图1.18综上所述,在使用组合逻辑时,对象应该尽量为4的整数倍,能够不超过4位的尽量不要超过4位,这样在保证时序的基础上节省了大量的LE。1.2.2.2、内嵌RAM块结构及推荐设计MAX10器件的每个M9K存储器模块都提供了一个能够运行在高达284MHz的9Kb的片上存储器。MAX10器件的存储器模块的性能规范如表

28、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)。时

29、钟网络对内核提供时钟源。可以在高扇出全局信号网络中使用时钟网络,如复位与清零。PLL对器件的时钟管理、外部系统时钟管理以及I/O接口时钟提供了可靠的时钟管理与综合。MAX10器件中还有内部振荡器,可以生成固定的几个频率,并且可以驱动所有的内部信号。PLL的高级结构图如图1.19所示。图1.19综上所述,在时钟时钟信号时应该注意以下几点:(1)、可以使用全局时钟来控制高扇出的信号;(2)、能使用PLL的地方尽量使用PLL;(3)、如果PLL资源不够,可以考虑使用内部振荡器来实现分频。1.2.2.4、DSP结构及推荐设计MAX10器件中支持高达144个嵌入式乘法器资源。通过使用嵌入式乘法器可以实现

30、乘法加法器与乘法累加器的功能。通过配置嵌入式乘法器,以支持最多9位位宽的两个独力的9*9乘法器,可以通过动态修改singa与singb来改变输入数据的符号。9*9乘法器的结构图如图1.20所示。图1.20通过配置每一个嵌入式乘法器,来支持10到18位输入宽度的单一的18*18乘法器,可以通过动态修改singa与singb来改变输入数据的符号。18*18乘法器的结构图如图1.21所示。图1.21嵌入式乘法器的设计规范如表1.11所示。表1.11 乘法器的设计规范综上所述,在使用嵌入式乘法器的时候应该注意以下几点:(1)、乘法器位宽尽量控制在9位以内;(2)、可以通过修改符号位动态修改数据符号;(

31、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标准和协议,除了

32、DDR3以外。这些IO bank可以用于器件的顶部、底部和左侧。3、低速IO bank位于器件的顶部左侧的较低速度的IO bank。IO bank的位置如图1.22所示,根据器件型号不同略有差异,该图为10M04与10M08的IO bank图。图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硅晶片

33、表面示意图外部存储器接口仅在器件的右侧的IO bank上被支持,布局时必须将所有的外部存储器IO管脚放在IO bank的右侧。图1.24为外部存储器接口的IO bank图。图1.24 外部存储器IO bank分布MAX10 IO单元(IOE)包含一个双向IO缓冲器和五个寄存器,用于寄存输入、输出、输出使能信号和完全嵌入式双向单倍数据速率(SDR)以及双倍数据速率(DDR)的传送。IO缓冲器在每个IO bank上四个IO模块组成一组。1.MAX10器件与vref、rup、rdn、clkpin、pllclkout、配置及测试管脚共享通用IO管脚。2.施密特触发器输入缓冲器适用所有IO缓冲器。每个I

34、OE包含一个输入寄存器、两个输出寄存器和两个输出使能(OE)寄存器。1.两个输出寄存器和两个OE寄存器被用于DDR应用。2.可以将输入寄存器用于快速建立时间,将输出寄存器用于快速时钟至输出(clock-to-output)时间。3.可以将OE寄存器用于快速时钟至输出(clock-to-output)使能时间。可以将IOE用于输入、输出或双向数据路径。IO管脚支持各种单端和差分IO标准。双向配置中的IOE结构如图1.25所示。图1.25 DDR模式下的IOE结构图对于外部输入信号,如果要提高设计的时序性能,应该先进行寄存再使用,图1.25中可见IOE中有寄存器资源,如果HDL中有寄存操作,软件会

35、调用此资源进行映射的;当输入接口是双沿采样时(DDR),可调用IOE中的DDIO进行数据采样,实现良好的时序性能;第二章:利于时序的设计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 =

36、 0;elseQ = 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数据

37、,6输入LUT可比较3bit,多位比较是LUT级联完成的,如下图为8bit位宽比较需调用5个4输入LUT实现。图2.1 8bit比较器一般项目中LUT资源都较充裕,对比较器、加法器位宽限制较少,具体的量化限制无法给出,一般48位宽的操作都没有问题,但资源紧张时有可能时序无法通过,此时需酌情减少位宽。2.3、状态机编写综合工具会自动识别设计中的状态机,并进行优化,需要考虑有以下几点:1、编码方式:独热码、二进制码。独热码具有更好的速度,因其无需解码,但容易进入未定义的状态而出异常;二进制码的优势是更安全,综合各方面考虑,使用二进制码更可靠;2、使用3段式编码,利于综合工具识别,进而优化;3、设计

38、default,将未知状态跳转到复位状态;4、复位设计要简洁,不要即使用复位操作又使用置位操作,综合工具会将其编译为普通逻辑而非状态机,即三段式状态机的第一段要简洁,不添加额外的逻辑,复位值尽可能为全“0”,如下所示:always (posedge clk or posedge reset)beginif(reset)state <= state_0; / state_0=4h0;elsestate <= next_state;end2.4、复位控制XILINX和ALTERA器件对复位控制的硬件资源有较大的区别,表2.1为对比关系。表2.1 复位设计对比XILINXALTERA全局

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

40、LINX推荐使用同步复位,其给出的理由是,某些专用资源如DSP/BLOCK RAM仅支持同步复位,对关联信号进行异步复位后,综合工具可能将其映射为逻辑资源去实现,但我们使用这些资源的时候都直接例化,不需要综合工具去揣摩,且根据核生成的信号进行连接,因此我们还是使用目前推荐的异步复位同步化方式;3、XILINX同步复位的实现是将复位信号作为普通的信号,消耗LUT资源,而ALTERA含有专用的同步复位/置位电路;4、强制所有复位/使能等控制信号都采用高有效表示;5、异步复位同步处理是我们推荐的复位方式,其RTL电路如下所示,不再累述。图2.2 异步复位同步化6、使用异步复位同步化处理,会遇到复位信

41、号的恢复/撤销关系不满足的情况(复位信号不能在时钟沿跳变的一定范围内跳变,否则所在同步原件的输出值可能不确定),为了避免这种情况发生,可以使用时钟输出使能进行控制,将时钟滞后复位信号一定时间再输出,如图2.3所示:图2.3 时钟滞后复位信号输出7、单个CLB/LAB的控制信号(复位、使能等)在硬件上是一致的,因此对同一always块内的信号,要做同样的控制逻辑,否则软件会将他们映射到不同的CLB/LAB里,增加其间的路径延时;8、复位值设为1时,ALTERA需消耗LUT,其会在REG的前后各加一个反相器,增加资源消耗及路径延时,XILINX的REG内部支持默认输出1,不额外增加逻辑。因此,设计

42、时,尽可能将复位值设定为0,通过其他的手段完成非0值的输入,这样也可避免因为复位本身的问题带来的异常。2.5、跨时钟域设计异步时钟之间没有明确的相位关系,采样就可能不满足建立保持时间,从而导致亚稳态的产生,这是设计中必须避免的。跨时钟域设计主要针对2种情况,一是异步时钟域的实时信号需要被及时准确获取;二是来自异步时钟域的数据需要被无损引用。针对2种应用,我们推荐如下处理方法。1、对异步实时信号,首先进行至少2拍的同步处理,再采样识别,供下级电路使用。触发器如果采到亚稳态,输出端会在一段时间后才能从亚稳态恢复到一个确定态,如下图所示:图2.4 亚稳态恢复恢复时间与生产工艺、厂商、温度、电压等因素

43、有关系,一般是1-2ns,如果系统的工作频率很高,比如500MHZ,上级触发器输出端的亚稳态会被下级采样到,并在整个系统中传递,但一般我们的系统工作频率不会这么高,那是不是高枕无忧呢?还有一种情况需要注意,触发器与触发器之间如果有组合逻辑电路,这相当于增加2级触发器之间的路径延迟,当:路径延迟+亚稳态恢复时间(Tmet)-建立时间<时钟周期亚稳态将向下传播,导致异常出现。将异步信号同步至少2拍,即确保了路径延迟最小化,避免了亚稳态的传播。2、使用异步FIFO/RAM对来自异步时钟域的数据进行过度。异步FIFO生成时根据2个时钟域的频率差设定将空将满的水位线,一般同步FIFO使用+-4做水

44、位线,异步FIFO统一成+-6,频率相差特别大时,可设为+-8;2.6、充分利用IO单元内资源综合ALTERA/XILINX器件特性,IO单元主要包含有下面几种资源:ALTERAXILINX单沿采样寄存器(SDR)有有双沿采样寄存器(DDR)有有延迟线资源有,软件自动配置或chip_planner手动设置有,可例化,参数配置延迟串并转换器无(此处非指GXP资源)有根据IO块内的资源,我们提出如下推荐设计:1、外部输入信号一般情况下都应该做时序约束,除非输入信号的频率低于25MHZ,且工程资源利用率低于80%;2、外部输入信号应先进行寄存(单沿采样),再做逻辑操作,软件会自动调用IO块里的寄存器

45、资源进行映射,这样会减少路径延迟,利于时序收敛;3、双沿采样一律调用IOE中的DDR资源,采样时钟如果可以选择区域时钟资源的,优先考虑区域时钟资源,因为其延时相对于全局时钟资源要短;XILINX的6系列区域时钟资源应例化BUFIO2,7系列例化BUFR;ALTERA4、串并转换器调用,ALTERA仅在高速接口如GXP硬核内支持,XILINX的每个IOE都含有此资源,一般情况下用得较少;2.7、流水线设计组合逻辑的延迟过大,超过所在时钟域的时钟周期,静态时序分析工具就会报红,指示该路径不满足建立保持时间,此时可采用流水线的思路进行时序优化。流水线设计是将复杂的组合逻辑进行合理的拆分,使其分为多个

46、简单的处理单元,并按照一定的先后顺序用寄存器隔开,数据则如同生产线上的产品流经各个处理单元。图2.5 流水前使用低速时钟图2.6 使用高速时钟进行流水2.8、FIFO/RAM时序优化FIFO/RAM是常用的功能单元,在很多设计中,时序报红一般都出现在与FIFO/RAM相关的路径上,原因是这些单元作为芯片内的专用资源(BLOCK RAM),布局是确定的,当设计消耗资源过大或者设计的路径本身延时过长,都会导致时序报红,我们推荐如下几种优化:1、XILINX器件,符合使用分布式资源情形的尽量使用分布式资源(符合标准见第一章),支持built_in模式的一律使用built_in模式;ALTERA器件,

47、M9K/M18K等块RAM资源足够的情况下使用块RAM资源,资源不足必须使用时才使用,且仍需符合使用规范(见第一章);2、DATA输出路径如报红,考虑在数据输出侧添加寄存器进行流水,RAM生成时有输出寄存的选项可勾取,ALTERA生成FIFO时有选项,XILINX的FIFO生成向导没有直接的输出寄存的选项,需额外手动添加;3、RAM输入信号如数据,地址等,应进行寄存,增加时序冗余,一般块RAM都是默认带寄存的,但分布式ram可能需要指定,尤其是XILINX产品,选择这些功能时请观察仿真时序,进行相应的逻辑设计;第三章:静态时序分析本章从ALTERA静态时序分析工具的角度进行介绍,基本的概念与X

48、ILINX都是相通的,故不再对XILINX进行额外阐述。3.1、时序分析基本概念静态时序分析是基于同步逻辑设计的,通过路径计算延迟的总和,并比较相对于预定义时钟的延迟,以此来描述电路的运行。静态时序分析仅关注时序间的相对关系而不是评估逻辑功能。设计人员可以根据时序分析的结果,通过时序约束来告诉工具设计希望的运行结果。时序约束只是一个辅助设计手段,一个好的时序只基于设计本身,而与时序约束关系不大。一般的静态时序分析包括寄存器和寄存器之间路径分析、I/O之间的路径分析和异步复位和寄存器之间的路径的分析。由于时序分析是针对时钟驱动的电路进行的,所以分析的对象一定是“寄存器-寄存器对”。在分析涉及到I

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

50、析,在读取时序报告的时候,网表中具有一些专业术语,比如nodes、cells、pins、nets、ports等。表3.1 TimeQuest Analyzer的专业术语及介绍约束术语概念nodes基本时序网表单元,一般是指端口(ports)、寄存器、引脚(pins)cellsAltera器件中的基本结构单元(例如,查找表、寄存器、IO单元、DSP、存储器块等)。LE可以看作是Cell。pinsCell的输入输出端口。可以认为是LE的输入输出端口。注意:这里的Pins不包括器件的输入输出引脚nets一个cell中,从输入pin到输出pin经过的逻辑,注意,网表中连接两个相邻Cell的连线不被看作

51、Net,而被看作同一个点,等价于Cell的pin。ports顶层逻辑的输入输出端口。比如定义的器件的引脚clocks约束文件中指定为时钟类型的pin,包括输入引脚和输出的时钟引脚图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:从Cloc

52、k 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 a

53、nd Latch Edges来决定所有寄存器与寄存器之间传输路径的关系。(1)Launch Edge:前级寄存器发送数据对应的时钟沿,是时序分析的起点。(2)Latch Edge:后级寄存器捕获数据对应的时钟沿,是时序分析的终点。相对于launch edge默认情况下为一个时钟周期,但在多周期约束的情况下则由约束的多周期数目决定。如图3所示,launch edge在0ns时把寄存器reg1的数据的输出传输给reg2,latch edge为10ns时刻,reg2寄存器在10ns采样该数据。数据必须在latch edge之前到来并保持稳定。图3.3 Launch and Latch Edges的关

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

55、atch 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配合使用能够分析出时序是否违例。图3.5 Data Arrival and Data Required TimesData Arrival Time = Lau

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论