fifo论文2.docx
- 文档编号:7029391
- 上传时间:2023-05-11
- 格式:DOCX
- 页数:45
- 大小:507.56KB
fifo论文2.docx
《fifo论文2.docx》由会员分享,可在线阅读,更多相关《fifo论文2.docx(45页珍藏版)》请在冰点文库上搜索。
fifo论文2
基于ASIC实现的半定制FIFO设计
摘要
绝大部分ASIC设计工程师在实际工作中都会遇到多时钟域设计的问题,多时钟域设计的一个难题是如何避免亚稳态的产生。
异步FIFO是一种不同时钟域之间传递数据的常用方法。
避免亚稳态问题及空满控制信号的产生是异步FIFO设计的两个关键。
本文针对异步时序产生的问题提出了一种新的异步FIFO设计方案。
用这样一个异步FIFO模块实现FPGA内部不同时钟系统之间的数据接口,它们之间不需要互相握手,只需跟接口FIFO模块进行交互就可以了,使设计变得非常简单和容易。
该实现方案,运用整体移位实现数据正确写入和输出,使用缓冲寄存器组存放移位产生的多余数据,适用于频率不成整数倍的异步时钟域之间的数据传输.利用串联的D触发器作为同步器,避免产生亚稳态,实现异步信号的同步.采用自顶向下的半定制ASIC(ApplicationSpecificIntegratedCircuit)流程对其进行设计:
使用Verilog硬件描述语言,利用Modelsim进行时序和功能仿真、SynopsysDC完成逻辑综合、Astro实现自动布局布线,通过对设计进行简单的修改,即可用于各种不同的系统的设计,经过充分测试和优化,该异步FIFO运行稳定,占用FPGA内部资源也非常少。
将该方案与传统的异步FIFO实现方案进行比较,面积大约缩小一半,工作速度提高约三分之一。
关键词:
多时钟域,异步FIF,ASIC,整体移位,缓冲寄存器组
ASICDesignofaNovelStructureAsynchronousFIFO
ABSTRACT
MostoftheASIC’severdesignedaredrivenbymultipleasynchronousclocks.Animportantprobleminmulti-clockdomaindesignishowtoavoidmetastability.AsynchronousFIFOisageneralwaytocommunicatebetweendifferentclockdomains.MetastabilityandhowtogenerateemptyandfullflagcorrectlyiskeyinthedesignofasynchronousFIFO.Aimingattheissueofasynchronousdesign,thispaperproposesanewmethodtoovercometheseproblems.ItusestheasynchronousFIFOtointerfacebetweenclocksystemsinsideFPGA,andthereisnoneedtoshakehandwiththeotherclocksystem.Inthismethodtheinterfacebecomesveryeasyandalsostable,andthetwosidesoperateinsideitsownclocksystem.Inthisscheme,unitaryshiftisusedtorealizedata`scorrectread—inandoutput,andbuffersareusedtostoretheleftdataofunitaryshift.Thisdesignisapplicablefordatatransmissionbetweenclocksnotintegralmultiple.SynchronizerofDtriggersinseriesisusedtoavoidinstabilityandsynchronizeasynchronoussignals.ThiscircuitisdesignedwithsemicustomASIC(ApplicationSpecificIntegratedCircuit)flowwhichisbasedontop-downflow.ThedesignusesVeriloghardwarelanguage,adoptsandModelsimtosimulate,SynopsysDCtorealizelogicsynthesisandAstrotoachieveautomaticplacingandrouting,andcanbeappliedtomanysystemdesignswithsimplemodification.Itistestedcarefullyandoccupiessmallresource.ComparedwithtraditionalasynchronousFIFOstructure,itshowsbetterperformancenotonlyonarea(withabouthalfacreage)butonspeed(onethirdfaster)aswell.
KEYWORDS:
multi-clockdomain,asynchronousFIFO,ASIC,unitaryshift,buffers
目 录
前 言6
第1章ASIC设计基础8
§1.1ASIC简介8
§1.2ASIC的类型9
§1.2.1全定制ASIC9
§1.2.2半定制ASIC9
§1.2.3基于标准单元的ASIC(CBIC)10
§1.2.4基于门阵列的ASIC(MGA)11
§1.3ASIC工艺比较12
§1.4数字ASIC设计12
§1.5ASIC设计流程12
§1.6ASIC版图设计技术15
§1.6.1版图设计流程15
§1.7ASIC测试与可靠性16
第2章同步与异步设计方法比较18
§2.1同步电路设计18
§2.1.1同步电路的定义18
§2.1.2同步电路设计的优点18
§2.1.3同步电路设计的缺陷19
§2.2异步电路设计19
§2.2.1异步电路设计的基本原理20
§2.2.2异步电路设计的优点与缺点21
§2.3亚稳态(Metastability)22
§2.3.1亚稳态现象23
§2.3.2亚稳定性分辨时间24
§2.3.3亚稳定的定时分析25
§2.3.4亚稳态问题的解决26
§2.4多时钟域下同步器的设计与分析27
§2.4.1异步信号传输的问题分析27
§2.4.2同步器在多时钟域设计中的应用28
§2.4.3同步器故障分析29
第3章FIFO的设计32
§3.1AsynchronousFIFO的组成32
§3.2FIFO的工作原理32
§3.3FIFO的结构35
§3.3.1双端口存储器(DualportRAM)35
§3.3.2写逻辑模块38
§3.3.3读逻辑模块39
§3.3.4二进制计数器39
§3.3.5格雷码计数器40
§3.4AsynchronousFIFO常遇见的问题及解决方法43
§3.4.1读指针(readpointer)和写指针(writepoint)同步问题43
§3.4.2空标志/满标志的产生43
第4章AsynchronousFIFO的设计结果分析46
§4.1SynopsysDC逻辑综合工具简介46
§4.1.1DC的功能和特点46
§4.1.2DC的综合流程46
§4.1.3DC的综合流程47
§4.2Astro自动布局布线工具简介48
§4.2.1Astro中的布局布线流程48
§4.3设计结果分析49
§4.3.1实验波形49
§4.3.2硬件验证50
§4.3.3通过DC得到的RTL图50
§4.3.4通过Astro得到的版图51
结 论52
参考文献53
致 谢55
附 录56
前 言
由于制造工艺的进步及3C整合与数位通信的蓬勃发展,系统单晶片的设计需求愈来愈高,而系统单晶片的设计也因单一系统的功能愈来愈多及速度的提升而愈趋复杂。
所以现有的系统单晶片设计通常使用多个不同步的时钟,这可能是由于上市时间的缩短,而使用现有的IP元件有关,因不同的IP可能来自不同的团队或不同的制造工艺,而需要使用到不同的时钟。
这也可能因系统的功能愈来愈多,机构的复杂,而使得晶片的面积变得非常的庞大,时钟的分布变得广阔而需要作不同的分布。
不同的时钟系统间的传输会衍生出同步的问题,处理不同时钟的同步问题是一项不算小的工程。
通常,处理同步的问题有几种方法,其中之一是采用交握的方法,另一则是使用非同步FIFO的方法。
交握的方法通常使用于需及时反映的应用。
这种方法通常因有一些限制而必须以不同的设计作不同的处理,即其通常不能重复使用。
而对于不需要及时反映的应用,通常可以使用异步FIFO,除了可以重复使用外,它所受的限制与较少。
异步fifo是现代逻辑设计常用的部件之一,而有些异步fifo的设计假设某些同步错误的几率非常小,因而潜藏一些可能但几率小的错误。
而现在的有些设计通常直接套用现有的设计,从而忽略一些限制,而造成一些错误。
AsynchronousFIFO通常是用在将数据安全地由一个clockdomain送到另一个异步clockdomain,不同步的clock造成错误的数据或指针判读,本项目的主要目的在探讨错误判读的原因、机率与避免的方法,并且进行了更进一步的探讨以设计一个高速的异步的FIFO。
目前,在业界存在有许多的方法来进行AsynchronousFIFO的设计,当然其中有许多错误的方法,而大多数不正确设计的FIFO在90%的工作时间之中仍然是正常工作,而大多数所谓“正确设计”的FIFO在99%的工作时间都是正常的,然而很可惜的,剩下的1%却是最难侦错的。
目前,国内对于SRAM的研究工作相对落后,但同时也取得了一定的成绩,已经可以看到有关嵌入式64K、128K,单片128K、512K的SRAM芯片的报导。
但是目前还未见到使用先进工艺大容量SRAM芯片的报导。
作为特殊SRAM的FIFO存储器,关于其大容量及高速低功耗芯片设计的成果报道更少。
国际上较先进的产品IDT公司的FIFO存储器系列,最新产品数据的写入和读出都有很高的速度,芯片工作频率可达200MHz,存取时间2-3ns。
通过对本项目的深入研究指出了一些在异步FIFO设计中常被忽略的问题及细节,并提出一种能够避免上述问题的异步FIFO设计方法,最终利用半定制数字集成电路的设计流程在实现版图面积尽量小的情况下将其实现。
ASIC芯片的问世,使得系统的关键电路可以用一片或几片专用集成电路(ASIC)实现,极大地提高了系统的设计效率、性能、灵活性和通用性,并且具有高可靠性和保密性的优点,同时减小了系统的体积和重量,降低了功耗。
ASIC的设计涉及从电子系统到集成电路制造的整个过程。
采用硬件描述语言可以很方便的对设计进行修改,如FIFO的深度,数据宽度等。
电子系统设计是和集成电路工程在先进的CAD工具协助下实现合作的,是克服知识缺陷、实现高质量ASIC设计的关键。
因此本次设计采用VerilogHDL语言,通过在GW48实验系统上实现功能的验证,利用SynopsysDC完成逻辑综合、Astro实现自动布局布线,实现了具有不同时钟域的数据传输功能的基于ASIC实现的半定制异步FIFO设计。
第1章ASIC设计基础
§1.1ASIC简介
ASIC是专用集成电路(ApplocationSpecificIntegratedCircuit)的简称,指应特定用户要求或电子系统的需要而设计、制造的集成电路。
数字系统设计正朝着高速度、大容量、小体积、低功耗的方向发展,面对日益复杂的电子系统,电子设计自动化(HDL)的出现为EDA技术的发展奠定了坚实的基础,给电子系统硬件设计领域带来了一场革新。
集成电路技术和EDA工具的发展促成了专用集成电路的出现。
随着EDA技术的发展,ASIC应用范围超出了数字系统,已应用到了模拟电路和数模混合电路的电子系统设计,真正实现了电子系统设计自动化。
目前,ASIC产品在逻辑电路领域内已占有超过50%的市场份额。
随着集成电路技术的迅猛发展,当一个电子部件甚至一个系统可以集成在一个半导体芯片上的时候,部件的功能设计和芯片的物理设计就越来越难以分离,就半导体集成电路工艺技术而言,ASIC似乎没有引入任何新的原理或新的概念,然而ASIC却造成了电子系统和集成电路设计概念上的根本变革。
ASIC的设计涉及从电子系统到集成电路制造的整个过程。
ASIC设计师应当具有逻辑抽象、电路技术、器件物理、加工工艺等方面的综合知识。
电子系统设计是和集成电路工程在先进的CAD工具协助下实现合作的,是克服知识缺陷、实现高质量ASIC设计的关键。
最近十几年来,大规模和超大规模集成电路技术发展很快,集成度和性能价格比都得到了不断地提高,例如广泛用于计算机结构中的微处理器、存储器,在数据处理能力、运算速度和集成度上都有了很大程度的提高,而芯片面积却没有显著的增大。
有了高质量、高性能的微处理器和存储器,针对一些特定的用途,又派生出许许多多的电路,其中大部分就是ASIC产品。
例如数字信号处理器、专用DRAM以及用于通信方面的各种电路等。
超大规模集成电路设计技术的发展主要体现在以下几方面:
一是器件尺寸按比例进行缩小;二是期间缩小后新的物理机制和理论模型的建立;三是计算机辅助设计技术(CAD)的进步。
近年来,CAD工作站的性能在不断地提高,为VLSI电路设计带来了极大的方便。
在各种EDA软件的支持下,许多工作站都能够提供完整的元器件原理图设计、仿真模拟、布局布线设计以及版图的编译检查等功能。
总之,大规模通用集成电路正在向专用集成电路发展,设计、制造、测试等方面的自动化过程越来越高,高速度、高频率、高功率、大数据处理量、低功耗和耐高压的集成电路产品也在不断研究发展之中。
§1.2ASIC的类型
ASIC可以分为数字ASIC和模拟ASIC和数模混合ASIC。
按设计方法不同,ASIC可分为全定制和半定制两类。
§1.2.1全定制ASIC
全定制是基于管级的设计方法,设计师使用版图编辑工具,从晶体管的版图尺寸、位置及互连线开始亲自设计,以得到面积利用率高、速度快、功耗低的ASIC芯片,但这种方法的设计周期长、费用高,适合于如CPU等大批量的ASIC芯片设计。
§1.2.2半定制ASIC
半定制方法是一种基于库元的约束性设计。
约束的主要目的是简化设计、缩短设计周期,并提高芯片的成品率。
它更多地利用了EDA系统来完成布局布线等工作,可以大大地减少设计工程师的工作量,因此它比较适合于小规模设计生产和实验。
与传统的电路设计方法相比,ASIC设计具有如下优点:
①用ASIC来设计和改造电子产品可以大幅度地减小印刷电路板的面积和接插件,降低装配和调试费用,从而降低产品的综合成本。
②提高产品的可靠性。
采用ASIC后,可以大幅度减少焊点和接插件数目,系统的可靠性可以大幅度提高。
③提高产品的保密程度和竞争能力,维护设计者IP权力。
④降低电子产品的功耗。
由于ASIC内部电路尺寸很小,互连线短、分布电容小,驱动电路的功耗可以大大降低;另外由于芯片内部受外界干扰很小,可以使用比较低的工作电压以降低功耗。
⑤提高电子产品的工作速度。
ASIC芯片内部很短的互连线能大大缩短延迟时间,且芯片内部不易受外界干扰,对提高系统运行速度非常有利。
⑥大大减小电子产品的体积重量。
半定制ASIC分为基于标准单元的ASIC和基于门阵列的ASIC。
基于单元的ASIC和门阵列ASIC都采用预定义单元,但有一个差别――基于单元的ASIC可改变标准单元中的晶体管尺寸以提高速度和性能,而门阵列中的器件尺寸是固定的。
这导致了门阵列中性能和面积的调整是在硅片级,而基于单元的ASIC其面积和性能的调整是在单元库级。
§1.2.3基于标准单元的ASIC(CBIC)
基于单元的ASIC(CBIC)采用预先设计好的称为标准单元的逻辑单元。
术语CBIC可用于所有采用单元设计的IC,但通常认为基于单元的ASIC或CBIC就是指基于标准单元的ASIC或CBIC。
CBIC中的标准单元区是由标准单元行组成――就像用砖砌成的墙。
标准单元区可与预先设计好的大型单元一起使用,这些单元可以是微控制器甚至是微处理器,即所谓的百万门单元。
百万门单元也称作大功能块、全定制功能块、系统级宏单元(SLM)、固定功能块、核或功能标准块(FSB)。
ASIC设计人员只需要确定标准单元的布局以及在CBIC中的互连。
标准单元可置放于硅芯片的任何位置,这表明CBIC的所有掩膜层是定制的并对特定客户来说是唯一的。
CBIC的优点是:
采用了预先设计、预先测试、预定特性的标准单元库,设计人员可省时、省钱、减小风险。
另外,可对每个标准单元进行优化。
例如,设计单元库时,可选择标准单元中的每个晶体管,使其速度最快或面积最小。
CBIC的缺点是花较多的时间和费用来设计或购买标准单元库,此外,要花费较多的时间为新的ASIC设计制作所有掩膜层。
§1.2.4基于门阵列的ASIC(MGA)
在门阵列或基于门阵列的ASIC中,晶体管在硅圆片上是预先确定的。
门阵列上预先确定的晶体管图案即为基本单元。
只有上面几层用做晶体管间互连的金属层由设计人员用全定制掩膜方式确定。
为了区别于其他类型的门阵列,这种门阵列称掩膜式门阵列(MGA)。
设计人员可从门阵列单元库中选择预先设计和预定特性的逻辑单元。
门阵列库中的逻辑单元常称为宏单元,因为每个逻辑单元的基本单元的版图是一样的,只有互连(单元内以及单元之间)是定制的,所以门阵列宏单元类似于软件中的宏指令。
对于MGA,只有金属互连是各不相同的,因此可把储备的硅圆片用于不同需求的客户。
采用金属化之前的预制硅圆片可使制备MGA所需的时间(制造周期)减少到几天~两周。
与全定制或基于单元的ASIC设计相比,由于各个客户分担了MAG所有初始制造步骤的费用,因此减小了MGA的成本。
§1.3ASIC工艺比较
选择ASIC类型时,最显然的经济因素是元件成本。
元件成本差异非常大---对于一个ASIC可以花几美元至几百美元。
但一般而言,FPGA(现场可编程门阵列)的每门费用比MGA(掩膜门阵列)的贵,而MGA比CBIC(基于单元的ASIC)的贵。
例如,1个
m的两万门的门阵列成本可能是0.01~0.02美分/门(1万个元件以上)或每个元件2~4美元,但用等效的FPGA则可能是20美元。
实现相同功能的FPGA的每门价格一般是MGA或CBIC的2~5倍。
既然FPGA比MGA贵,而MGA又比CBIC贵,那么什么时候、为什么要选择更贵的元件呢?
FPGA的灵活性增强是否值得每个元件增加费用?
假定MGA或CBIC特别适合于各种客户,就应考虑一些与其相关的其它隐含的费用。
要确切比较各种ASIC工艺,还需要对某些成本进行量化。
§1.4数字ASIC设计
目前数字ASIC系统设计人员很少有必要去进行全定制的版图设计,因此可以说数字ASIC的设计工作量一大半是电路级的设计以及更高的系统级设计。
数字ASIC的设计不像模拟ASIC那么繁琐,它与分立元件的设计具有较多的共性,允许在更高的系统级层次上用高级文本语言进行设计。
§1.5ASIC设计流程
集成电路的设计方法可以分为自底向上和自顶向下两种基本方法。
自底向上的方法是充分利用工艺特性和电特性都相当成熟的典型基本电路单元,自底向上地综合设计出各种芯片产品的过程。
而自顶向下的方法是从系统级开始,然后通过各种EDA工具,实现逻辑级的设计,最后直到物理级的设计,并生成相应的版图。
一个典型的给予模块的自顶向下的ASIC设计流程一般可以分为四部分:
算法建模、RTL编码、综合和版图设计。
设计框图如图1-1所示,如果把设计流程看成一个黑盒子,那么它的输入就是规格的制定,而
图1-1ASIC设计流程图
输出就是GDSⅡ文件,其中流程图的右边列举出了每个过程常用的语言和EDA工具。
ASIC设计的第一步是给出一个清晰的系统规范。
该规范应写明系统的功能、性能、费用、和开发时间等。
接下来就要创建一个系统行为模型。
该模型实现了规范要求的功能,并且可以用来初步验证设计的性能。
建立完模型之后,需要对这个模型进行细化,即进行算法设计。
算法包括浮点数算法和定点数算法。
算法确定以后,要进行详细的架构设计。
最后要进行软硬件的划分。
在建立模型的时候,需要一系列激励作为测试向量,实现对整个流程的所有功能验证;同时,还要考虑到模型与实际硬件之间可能产生的不匹配情况。
RTL编码是将设计思想转换为电路实现的步骤。
在现阶段,设计者主要用VerilogHDL与VHDL进行RTL实现。
一般而言,在业界VerilogHDL更常用,在学术界VHDL更流行。
进行RTL设计时,要考虑到性能、面积、可复用性、易读性、可测性、功耗等诸多因素。
在RTL编码完成后,要对RTL代码实现的功能进行验证,这就需要构建测试平台,并通过添加测试向量来对其进行验证。
在RTL验证通过以后,就可以利用逻辑综合工具生成门级网表。
综合可以分为逻辑综合和物理综合。
逻辑综合的结果没有芯片规划(Floorplan)的信息,而物理综合是在芯片规划之后重新进行综合的。
综合完成之后,在版图设计之前要对设计进行验证和时序分析,此时的验证主要是比较综合后的电路功能和综合前的电路功能是否一致,可以通过等价性验证的方法来完成。
除了验证综合后的功能外,还要对设计进行时序分析,检查设计是否满足时序要求,静态时序分析是检查IC系统时序的重要手段。
以往时序的验证依赖于仿真。
采用仿真的方法,需要对设计施加激励才能完成,并且不能达到比较高的测试覆盖率,有些时序违例会被忽略掉,此外,仿真的方法效率非常低,会被大地延长产品的开发周期。
在版图设计前的验证完成之后,就要开始进行芯片规划和布局布线的工作。
在布局布线完成之后,要对设计进行布版后的验证和时序分析等工作,因为此时进行的验证包含了更多的物理信息,所以具有更高的验证精确度,这个阶段的验证主要完成的工作包括串扰分析、电源网络分析、DRC、LVS、ANT等。
对于布版后进行的静态时序分析,由于电路中的每个物理连线的拓扑结构已经确定,连线上的寄生参数也就确定了,可以通过参数提取工具提取出寄生参数文件,加上此时物理级时钟网络的引人,静态时序分析工具就可以根据寄生参数文件和时钟树的物理信息准确地进行时序分析。
当版图设计完成之后,就可以生成GDSⅡ文件了,最后将此文件送到工厂进行生产。
§1.6ASIC版图设计技术
§1.6.1版图设计流程
当一个设计完成了综合,生成门级网表后,接下来的任务就是网表的物理实现,即把门级网表转成版图,这个过程通常称为后端(backend)。
后端设计的主要任务是将门级网表实现成版图(APR),检查所实现的版图满足时序要求、符合设计规则(DRC),layout与网表一致(LVS),并提取版图的延时信息,供前端做后仿真和静态时序分析(STA)。
后端用到的工具较多,将门级网表实现版图的工具有Cadence的SE、SoCEncounter和Av
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- fifo 论文