




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第一章 引言 王 增 第1章 引言 芯片容量已经达到几亿晶体管 以此工艺,可以实现一块芯片内集成一个系统。(SoC) 现代工艺所提供的巨大集成能力,使得片上系统的设计从过去的世界尖端技术发展成为当今的一种主流技术。 第1章 引言 在这些SoC芯片中一般集成有一个或几个处理器,还有大容量内存、总线结构、外部设备、协处理器和I/O通道等。 现在复杂芯片设计中最常用的方法:可重可重用设计用设计 第1章 引言 可重用设计已成为设计巨大容量芯片的必选方法,因为: 有效的控制设计费用、缩短设计周期、提高产品质量。 1.1 本课程的目标 设计师在设计复杂芯片时所面临的一些同样的问题: 上市时间的压力,要求采
2、用快速的开发方法 产品的性能、面积、功耗成为在市场上能否成功的关键 芯片的复杂度增加,使得验证更加困难 1.1 本课程的目标 设计师在设计复杂芯片时所面临的一些同样的问题:(续) 深亚微米设计带来的问题,使得设计中保证时序收敛更加困难 各个开发团队的水平不同,专业方向不同,而且常常分布在世界各地。 1.1 本课程的目标 设计师在设计复杂芯片时所面临的一些同样的问题:(续) 设计团队中的成员可能以前做过相似的设计,现在的设计流程、采用的工具和设计中的指导原则已经发生变化。 在SoC设计中,一般包括一个嵌入式的处理器内核。因此也就包含了很大一部分的软件功能。这将使原有的设计方法、设计过程和组织方法
3、都面临新的挑战。 1.1 本课程的目标 可重用设计所遇到的重大问题:1.以前设计的可重用模块很少2.以前设计的模块根本就不能被重新用于新的设计中3.以前的设计模块不能提供全面的描述、文档和功能定义,则将这些模块集成到新的设计中所花的代价也是非常巨大的。 1.1 本课程的目标 设计可重用且方便于SoC集成的核,需要的技术:1.如何在SoC开发中使用可重用的核2.如何设计可重用软核3.如何创建来自于软核的可重用硬核4.如何将软、硬核集成到SoC设计中5.如何在一个大型SoC设计中验证时序和功能的正确性。 1.1 本课程的目标 两种SoC设计工程师及其任务:可重用核设计师设计可重用核,设计软核和如何
4、实现硬核。核集成设计师使用可重用核进行芯片设计,查找和使用可重用核进行系统集成设计。 1.1.1 预备知识设计者需要的知识基础: 用HDL(硬件描述语言)进行设计和综合 可测性设计,包括全扫描技术 布局、物理综合、布线技术 1.1.2 定义本课程将使用下列可互换术语: 宏核(macro) 核(core) 模块(block) IP(知识产权核) 1.1.2 定义其他的一些术语 子模块(subblock)子模块是一个宏核(核、块或IP)的一部分,它是一个较小的或功能单一的元件。 软核(soft macro)软核(块或IP)是一种以可综合的RTL代码交付的核。 硬核(hard macro)硬核(块或
5、IP)是一种以GDSII文件形式进行集成的核,它是已经经过全部设计、布局、布线的核。 1.1.3 虚拟插件接口联盟 定义:虚拟插件接口联盟(VSIA)是一个工业界的标准化组织,她通过制定一些电子设计自动化(EDA)中用于工具接口、设计和文档的标准,规范集成电路设计中的可重用设计方法。 虚拟元件(Virtual component):VSIA用“虚拟元件”一词表示可重用核。在大多数场合,我们把它简写为宏核(macro) 1.1.3 虚拟插件接口联盟 固核(firm macro):VSIA在软核和硬核之间定义了一种固核,它所指的范围比较广。固核可以以RTL或网表的形式提交,或者是带有部分布局信息和
6、物理设计信息的RTL编码。 1.2 可重用设计中的挑战 可重用设计方法学基于以下原则: 核必须能够非常容易集成到整个芯片的设计中 核必须足够强壮,以允许集成者对核内部进行必要的非功能性验证 1.2.1 可用性设计 除了设计的可重用性外,一个设计首先是可用的设计,强壮又正确的设计。同时,很多已有先进的设计技术也被用于可重用设计中,例如: 完整的设计文档 规范的编码 详细的注释 完备的验证环境和方法 强壮的脚本 1.2.2 可重用设计 面向一般性问题设计。这就意味着该核必须容易进行重新配置,以适用于不同的应用。 面向多种工艺设计。对于软核,这意味着它必须能够面向不同的工艺库进行综合,从而产生令用户
7、满意的结果。对于硬核,则必须有有效的策略将其映射到其他工艺上。 1.2.2 可重用设计 如果一个核或测试向量只能在某一模拟器上运行,那么它将是不合格的。一些新的模拟器同时支持Verilog和VHDL代码模拟。然而,对于好的可重用设计而言,需要既有Verilog代码版本,又有VHDL代码版本,验证和测试向量完备,而且能够运行在多个主流商用模拟器上。 1.2.2 可重用设计 面向标准的接口设计。只有在没有标准可遵循的时候才设计一些特殊、定制的接口。 提供独立的验证。通常情况下,设计好的核在集成到芯片中之前只是被部分验证,这就节约了整个设计做全面测试的时间。可重用设计必须经过全面、独立的测试核验证,
8、需要保持很高的测试覆盖率。 1.2.2 可重用设计 验证要达到高度可信。这意味着可重用核需要进行及其严格的验证,甚至要建立一个物理原型,并且加上一些具实际可运行的软件进行测试。 对于核的应用和限制给予全面说明。任何配置中的限制和参数选取,需要清楚地说明。特别是,配置方法和参数必须详细说明。可重用核使用中的接口要求核限制也必须说明。 1.3 可重用设计方法所带来的新商业模式 可重用模式下商业经济的变化和半导体工艺的变化一样快。几年前,还存在许多不同的疑问: 是否所有设计师都有必要把代码设计成可重用的 如何推动公司内部设计团队的设计成果可互相利用 什么是偶然可重用的价值?指那些不是明确为可重用而设
9、计的代码,最终被再次使用了。 什么样的模块应该自己开发?什么样的模块需要从IP提供商处购买? 1.3 可重用设计方法所带来的新商业模式 三个结论:1.偶然的重用可以带来2到3倍的效益。在使用原先设计的代码或使用原先设计的模块时,费用只是正常情况下的1/2到1/3.这种利益还不足以满足大多数SoC设计的需要。多数SoC设计要求所采用的模块必须是明确为可重用而设计的。 1.3 可重用设计方法所带来的新商业模式 三个结论:2.明确的可重用设计需要专门的团队。为某个专用芯片进行设计的设计师,他不会去考虑如何使他的设计变得可重用。可重用的设计需要花费比一般设计更多的时间。因为芯片设计师总面临着非常紧迫的
10、时间进度,他不可能花时间去使他的设计将来还可重用。所以,公司内部必须设立专门的小组,负责可重用模块的开发。 1.3 可重用设计方法所带来的新商业模式 三个结论:3.开发可重用模块的费用是巨大的。为了完成可重用模块的功能验证、完备的文档并使它能有广泛的可重用性,需要付出3倍以上普通模块开发费用的代价。对一些小模块,可能需要付出10倍以上的代价;而对于像处理器这样复杂的模块,需要付出更高的代价。 1.3 可重用设计方法所带来的新商业模式 三个结论:3.开发可重用模块的费用是巨大的。为了完成可重用模块的功能验证、完备的文档并使它能有广泛的可重用性,需要付出3倍以上普通模块开发费用的代价。对一些小模块
11、,可能需要付出10倍以上的代价;而对于像处理器这样复杂的模块,需要付出更高的代价。第2章 片上系统设计过程 本章内容: SoC设计范例 系统设计流程 项目实施过程中规范的作用 系统设计的步骤2.1 SoC设计范例 SoC设计的一般形式: 微处理器和存储器子系统 提供数据路径的片上总线(高速和低速部分) 外部存储器控制器 通信控制器 视频解码器定时和中断控制器 通用I/O(GPIO )接口 UART(通用异步收发器)接口2.1 SoC设计范例2.1 SoC设计范例 该设计包含着一个SoC设计完整的结构和必然会遇到的问题: 微处理器可能采用的是从8位的8051到64位的RISC处理器中的任意一种。
12、 存储子系统采用的可能是单级和多级,可能包括SRAM和DRAM。 外部存储器可能采用的是DRAM、SRAM或Flash形式。 I/O控制器可能包括PCI、PCI-X、Ethernet、USB、IEEE1394、A/D、D/A或光电转换器等。 视频解码器可能采用MPEG、ASF或AVI标准。 GPIO接口可能使用LED或采样数据线。2.2 系统设计流程 为了迎接SoC设计带来的挑战,芯片设计师正在把他们的设计方法转移到两种主要的设计方法上: 从瀑布模式转移到螺旋模式上 从自顶向下的方法转变为自顶向下和自底向上混合的方法上2.2.1 瀑布模式和螺旋模式 传统的ASIC开发模式为瀑布模式。在瀑布模式
13、中项目开发从一个阶段到另一个阶段按步骤推进,后一个阶段完成后不会再返到前一个阶段。这样的模式中,设计项目通常是由一个团队移交到下一个团队,团队之间没有交流。2.2.1 瀑布模式和螺旋模式 大多数项目开发中软件设计总是紧跟着硬件设计后就开始了。然而,由于没有硬件平台供软件进行调试,软件开发团队只能等待。因此,软硬件开发总是顺序进行。 这种设计流程,设计规模不超过100k门,制造工艺大于0.5um。 这种流程的问题:因为项目从一个团队交到另一个团队的时候,很少有绝对不需要返工的。 对于一个大型深亚微米的设计,瀑布式设计方法根本就无法工作。2.2.1 瀑布模式和螺旋模式 螺旋式SoC设计流程特征:
14、软件和硬件的开发并行 验证和综合的过程并行 规划和布局、布线包含在综合过程中 只有当以前设计的软、硬核不可用时,才开发新模块 整个过程中有多次迭代。 许多大型项目中,工程师同时开发顶层系统级规范、关键子模块算法、系统级验证方案和时序分配方案。2.2.2 自顶向下和自底向上的开发流程 经典自顶向下的设计流程是设计中常采用的,它开始于规范制定、功能划分,结束于系统集成和验证:1.为系统和子系统制定全面的设计规范2.精简设计中的结构和算法。若有必要,包括软件设计和软硬件协同仿真。3.将芯片功能划分为定义好了的核。4.设计或者选择合适的核。5.把核进行集成,进行功能验证和时序验证。6.将子系统或系统提
15、交给下一级更高层次的集成;如果是顶层,则可以投片(tapeout)7.验证设计的所有方面(功能、时序等)2.2.3 边设计、边修改的方法 Sun公司在开发UltraSPARC处理器时,采用了一种叫做“边设计、边修改”的方法。 UltraSPARC的设计师认为,在结构设计阶段就完全考虑到最终物理设计将会遇到的所有问题是不可能做到的。 UltraSPARC开发项目是Sun公司历史上最成功的项目之一。开发团队将他们的成功归功于“边设计、边修改”的设计方法。2.2.4 小结 迭代是一个开发过程中不可避免的部分。 要将迭代次数减到最少,特别是将主循环的迭代次数降到最低。 宁可迭代发生得更紧密更局部化,这
16、样可使迭代更快更有效率。 警告:迭代过程虽然不可避免,但不应该成为不认真制订设计规范的借口。花费时间在详细、认真地做好设计规划上,是一种减少迭代次数、减少迭代周期的最好方法。2.3 规范的制定 设计过程第一部分通常包括开发、验证、细化一整套设计规范,直至详细到了可以开始RTL编码。 一个成功的设计,规范设计阶段是最关键、最具挑战性、最耗时的阶段。 项目进展中确定什么是你所想要实现的,可以很容易发现设计中隐藏的错误。 设计早期制定完整的规范要比项目完成后在书写花费要少的多。2.3.1 规范中的要求 规范:描述了一个系统的行为,更深一步,它描述了如何操作系统接口,从而产生需要的行为。 结构规范:描
17、述的是各个元件之间的接口和各模块之间的接口转换,以创建需要的系统级行为。 功能规范:描述了一个系统或模块的接口是给系统用户看的,它们描述管脚、总线、寄存器以及如何操作数据。2.3.1 规范中的要求 在SoC设计中,软硬件部分需要设计规范。设计规范必须全面描述设计与环境之间的接口,它们包括: 硬件: 功能 与其他硬件的外部接口(如管脚、总线、如何使用等) 与软件接口(寄存器定义) 时序 性能指标 物理设计问题,如面积、功耗等2.3.1 规范中的要求 软件 功能 时序 性能指标 与硬件接口 软件结构、内核2.3.2设计规范类型 形式化规范:在形式化规范中,设计所需的特征被以一种与任何实现都不相关的
18、形式定义下来。一旦某个设计采用了形式化规范,就可以利用形式化方法(如利用属性检查)来证实某个实现方法是否满足规范的要求。已有许多形式化规范语言出现,其中包括VHDL开发的VSPEC。这些语言都提供了一种机制,不仅能够描述行为功能,还能描述时序、功耗和面积需求。虽然直到今天,形式化规范还没有被广泛应用于商业设计中;但是在未来很长时间,它仍然是一个重要的研究方向。2.3.2设计规范类型 可执行规范:可执行规范对于描述大多数设计中的功能行为更加有用。可执行规范实际是对某个软件或硬件的一种抽象模型。对一些高层次的规范,典型的可用C、C+或C+的变种,如System C或HVL来书写。在低层次时,硬件通
19、常用Verilog或VHDL语言描述。 在设计过程的早期开发出这些模型,使设计团队在具体设计出来之前,就可以对系统感动基本功能和软件、硬件接口进行验证。2.4 系统设计过程 为了决定一个性价比最优的架构,需要作出大量复杂的决定和折中性的考虑,例如: 哪些功能在软件中完成,哪些功能由硬件完成? 用什么样的处理器,用多少个? 选用什么样的总线结构,已达到系统要求的性能? 选用什么样的存储器构架,从而在功耗、面积和速度之间达到平衡?2.4 系统设计过程 系统设计过程包括可执行规范、规范的书写和系统构架的精选。该过程包括以下步骤: 1.创建系统设计规范。系统设计过程的最开始是了解设计对象,也就是系统的
20、需求分析:需求的功能、性能、费用和开发时间。这些需求被写入一个“基本需求说明”中,通常是由工程师和市场分析师共同完成的。2.4 系统设计过程 2.开发行为级模型 接下来是去开发初步的高层次设计,为了整个系统创建一个高层次的行为级模型。该模型被用于测试系统设计中的基本算法,也被用于展示它们是否满足规范中规定的需求 对于系统中的关键功能,这种高层次模型提供了一种可执行规范。它可以被用来作为将来系统设计变化的参照。2.4 系统设计过程 3.细化和测试行为级模型 高层次模型验证环境的开发可用于算法的细化和测试。该环境提供一种机制,可以对高层次设计进行改进、功能验证和算法的性能验证。如果已经完成了某种设
21、计,它可以被用于后来的软、硬件模型的验证。 最后一个周期精确且位精确的模型被开发出来,提供了用于实现的非常现实的模型。在许多系统设计中,由浮点到定点版本的细化是设计过程中的一个关键挑战。2.4 系统设计过程 4.确定软、硬件划分 在高层次模型改进时,系统构架需要确定软、硬件划分;也就是说,将系统功能划分为软件部分和硬件部分。这在很大程度上依靠人工去完成。需要系统设计师有着非常丰富的经验,能够对不同的构架在性价比上有深刻的了解。一个包含有可重用核和可重用软件的库,将有助于设计更精确的、评价不同软硬件模块的性价比。软硬件划分的最后一步是定义软硬件接口,明确软硬件之间的通信协议。2.4 系统设计过程
22、 5.硬件构架模型的详细设计 一旦硬件部分的需求明确定义,就有必要着手进行硬件构架的详细设计。这些工作包括设计中将来使用哪些子模块以及如何保证子模块之间的通信。其中,存储器构架、总线结构和总线带宽时关键问题。 在RTL设计上运行大量的应用代码通常太耗费时间。为解决这个问题,设计人员正在采用一种基于传输级模型的接口和总线行为模型。通过减少一些行为模型中的细节部分如总线接口上的管脚和信号,使得它们可以比RTL模型运 行得快得多,且仍可以进行精确的性能估计。System C语言中许多方法可以用来构造传输级模型。2.4 系统设计过程 6.细化和测试构架模型 系统开发中常遇到的一个经典问题,就是软件总是
23、在硬件建成之后才进行开发。这种硬件、软件顺序开发的方法,将导致项目的延期,甚至失败。 系统构架模型可用于软硬件的协同仿真。可以提供足够的精度,让软件在模型上进行开发和调试,就像实际的硬件一样。 随着系统开发中软件部分比重不断地增长,软硬件协同开发、协同仿真,已经成为SoC开发项目中能否成功的关键 因素之一。构造快速、精确的硬件模型,将成为SoC设计中的关键部分。2.4 系统设计过程 7.功能块的实现 构架设计完成后,将给出“硬件设计规范”。其中详细描述了硬件设计中的功能、性能和接口部分。还有一些元件模块。 硬件设计规范中应该包括:基本功能描述、时序、面积、功耗要求、物理和软件接口、I/O管脚的
24、详细描述、寄存器定义等。 硬件构架模型的功能可以在可执行规范中体现出来。第3章 系统级设计问题:规则和工具 本章主要内容 可重用设计的标准模型 可验证设计 系统内互连和片上总线 可启动和可调试设计 低功耗设计 可测性设计 可重用的先决条件3.1 标准模型 标准模型中的基本原则:经过良好设计的IP核是SoC设计成功的关键。不论SoC集成流程多好,如果所使用的模块设计得不好,那么整个投片过程会变得漫长艰辛。另一方面,设计良好的IP核将加快SoC集成进度,并产生出好的结果。3.1 标准模型 标准模型中的基本原则:经过良好设计的IP核是SoC设计成功的关键。不论SoC集成流程多好,如果所使用的模块设计
25、得不好,那么整个投片过程会变得漫长艰辛。另一方面,设计良好的IP核将加快SoC集成进度,并产生出好的结果。3.1 标准模型 整个课程所有准则包含的一些基本假定: 规范化规范化(discipline)构建一个大系统(在片上或其他)需要严格的限制设计范围,从而保证产品之间的一致性、可支持性和易集成性 简单化简单化(simplicity)越简单的设计越容易分析;越容易用不同的工具处理、验证;越容易达到时序收敛,所有的设计都会存在问题,在简单设计中,问题更易被发现并被修正。3.1 标准模型 整个课程所有准则包含的一些基本假定: 局部化局部化(locality)当你知道到哪里去寻找问题的时候,问题最容易
26、被发现和解决。应该使时序、验证问题局部化,而不是全局化。对于一个大型设计,可以更好的减少设计时间,提高设计质量。认真进行模块和接口设计,对于把问题局部化是非常关键的。3.1 标准模型 在进行大型芯片设计时,可以通过仔细地设计模块之间的接口,把各模块的问题局部化。良好的设计接口,应该能将模块内部的时序和功能尽可能地与外部模块的时序和功能隔离,当然也能够和其他模块之间隔离。因此每个模块都可以在隔离的状态下设计和验证。如果接口一致,那么模块就应该能够即插即用。所以系统级的设计问题应该不会影响到内部模块。3.1 标准模型 SoC设计过程中有两个关键问题: 1.达到时序收敛(就是使得物理设计的结果满足时
27、序要求) 2.功能验证 软件同样要面对这两个问题,基本设计原则仍是遵循规范化、简单化和局部化。3.1.1 软核和硬核 早期的可重用设计中,常常对哪些模块应该从RTL进行设计,哪些模块应该从晶体管级进行设计,存在着不同的看法。甚至有人提出处理器全定制设计。但是在基于可重用的SoC设计方法中,已经有了成熟的解决方案,就是采用软核或硬核的设计方法。3.1.1 软核和硬核 存储器单元都是人工在晶体管级设计完成的。 存储器阵列是使用硅编译器的方法把它们集成到一起的。 模拟模块包括A/D、D/A转换器、锁相环等,至少其中部分电路是在晶体管级设计的。3.1.1 软核和硬核 数字电路设计:通过综合、布局、布线
28、,然后将RTL级映射到门级,门级在形成GDSII文件。从RTL到GDSII的过程叫硬化(hardening)。可将硬化的模块集成到芯片中,就像任何一个硬IP一样,如存储器模块。3.1.1 软核和硬核 在SoC设计中,一些模块需要事先硬化,一些模块需要和芯片整体一起综合。但所有数字模块基本设计流程是基本相同的。3.1.1 软核和硬核 事先硬化了的模块优点在于,它们已经通过了一次物理设计,然后就可以重复使用多次。例如,对于那些图像处理器模块,它们可以不经修改地用于多种不同的芯片中。这样做带来的好处很大,因为时序收敛使完全可预料的。3.1.1 软核和硬核 可综合的设计相对于全定制设计的优势在于,对于
29、一个新设计,前者提供了更快的实现途径。全定制的数字系统设计可能更适合于诸如最新的Intel处理器设计。然而,对于大多数嵌入式设计,经费上的限制要求它必须找别的方法。全定制设计花费太大,而且并不是每一个设计都有必要使用全定制方法进行设计。3.1.2全定制设计在可重用设计中的作用 对于任何设计,基于标准单元的可综合设计方法都是一种可选的方法。具体采用哪种设计方法是由该设计预算费用决定的。许多采用全定制设计提高的性能并没有被市场所接受。在采用基于标准单元的可综合设计方法时,要考虑的是到底损失了多少性能。3.1.2全定制设计在可重用设计中的作用 半定制和基于标准单元设计方法带来的性能损失很小。与全定制
30、处理器设计方法相比: 最大时钟频率和全定制方法一样。 功耗约为全定制方法的两倍,但设计中没有使用门控时钟(原设计中使用了门控时钟)。在使用功耗综合工具插入门控时钟后,该设计的功耗比全定制设计还少。使用功耗综合工具而不是人 工插入门控时钟,这样的做法不仅实现了更低功耗,而且也实现了设计的可重用3.1.2全定制设计在可重用设计中的作用 实现面积比全定制设计大7%。所有的不同主要出现在算术操作单元。在把算术操作单元用全定制设计替换后,整个处理器面积与全定制面积相同 以上这些结果表明:为什么大多数处理器中,只有少部分是采用全定制设计技术的。许多处理器设计师在设计控制逻辑时采用综合的方法,而在设计数据通
31、路时采用全定制方法。以上结果还表明:数据通路设计中,只要部分采用全定制方法,就能达到同样的设计效果。3.1.2全定制设计在可重用设计中的作用 在IP设计和集成中,希望设计不包括处理器,以避免采用全定制设计方式。对于处理器设计,集成者可以采用RTL版的处理器,以提高新工艺下的实现进度。因此,在大多数复杂设计中选择用全定制方法替代其中的两个关键模块。这种方式,可以让集成者在性能和上市时间之间保持某种平衡,而不必花费全定制设计的全部费用。3.2时序收敛设计:逻辑设计问题 3.2.1 接口设计和时序收敛 内部互连延迟的不确定性是进行大型芯片设计时的一个主要时序收敛问题。 现在的物理综合方法把综合和时序
32、驱动布局一起考虑,在解决深亚微米工艺时序收敛问题上,取得了比较大的进步。但是这些工具不能更正结构设计中的根本错误,如流水级数不够之类的错误像大多数优化工具一样,他们对于那些同一、局部化设计,具有最好的综合效果。3.2.1 接口设计和时序收敛 核接口 核的输入、输出接口都应该是寄存器的。 此时序定义对大型芯片设计非常有用,对可重用SoC设计也是非常重要的。3.2.1 接口设计和时序收敛 这种时序定义对大型芯片设计非常有用,对可重用SoC设计也是非常重要的。通常IP模块设计者并不知道该模块周围的时序状况。它的输出线可能很短也可能很长。对时序设计的定义一定要确保时序问题不会限制IP核在多个设计中的使
33、用。3.2.1 接口设计和时序收敛 这种接口设计策略不适用于处理器和Cache存储器之间连接。接口部分通常是高性能设计的关键,需要特殊设计。在这里假设处理器和Cache已经集成为一个核。系统中核与核之间接口,应该遵循以上的设计原则。如图所示3.2.1 接口设计和时序收敛 子模块接口设计中会遇到的问题:什么时候块大到要我们必须采用寄存器输出?什么时候块大到要我们必须采用寄存器输入和输出?什么时候可以不遵守这些规则。当这样做时,如何将设计中的时序风险降到最低?3.2.1 接口设计和时序收敛 问题一答案:任何一个模块作为单元进行综合时,都应该采用寄存器输出。在开始进行时序综合时,就要考虑时序分配。用
34、这种方法,可以将设计中的时序分配局部化。 问题二答案:任何一个作为单元进行规划的模块应该采用寄存器输入、输出。对于模块,特别是可重用模块,当在设计中被作为一个独立单元使用时,我们没有必要知道它的输入、输出连线有多长。采用寄存器接口的设计方法,有利于芯片设计时的布局规划。3.2.1 接口设计和时序收敛 在设计视频解码模块时都采用寄存器接口 设计中主要模块采用寄存器接口,是保证设计时序收敛的非常好的技术。通过将时序收敛问题局部化,使得综合、时序分析和时序驱动的布局、布线工具发挥更高的工作效率。3.2.1 接口设计和时序收敛 举例:PCI和PCI-X 原来的PCI规范要求输入管脚与第一个寄存器之间有
35、众多的组合逻辑。在33MHz频率时还可以满足要求,但在66MHz下,很难满足时序要求。有了以上经验,在PCI-X设计规范中,进入模块内立即采用寄存器输入。结果PCI-X在66MHz时的时序很容易达到要求,甚至可以工作在133MHz频率下。3.2.2 同步和异步设计方式 规则系统设计应该是基于同步和寄存器的。锁存器(latch)应该只是出现在小的存储器或FIFO中。这些存储器和FIFO应该是同步和边沿触发的。违反这一规则以外的设计方法,应该更为仔细,并建立更全面的文档。 基于锁存器设计复杂度增加的费用大大超过了可重用设计中面积增加的费用。3.2.2 同步和异步设计方式 锁存器时序难以控制,设计者
36、希望锁存器的D输入端数据在时钟上升沿到达以前建立(setup),在该设计中数据是在上升沿由输入传递到输出的。或希望输入数据在时钟边沿尾部建立,该数据还可以有效地传递到输出。3.2.2 同步和异步设计方式 设计者可以利用这种特性提高速度,通过“时间借用”方式缩短一些延迟: 保证一个阶段内在时钟上升沿以前数据能够建立 允许在下一阶段的时钟末尾到达,但必须留有建立时间 锁存器的时序分析很难准确估计。大型设计中,这样的时序分析几乎不可能,只有原来的设计者自己知道自己的设计意图,所以基于锁存器的设计是与可重用仿真相违背的3.2.2 同步和异步设计方式 举例:Zycad加速器 芯片使用了基于锁存器设计、4
37、相非重叠时钟技术。流水级很长,扩展到5个芯片上。为了满足时序要求,在有些模块中设计者采用了许多高级技术 ,在时钟上升沿以前到达触发器。如果下一阶段中有大量的组合逻辑,将允许数据继续向下级传递,知道时钟末尾。因此,虽然系统有固定的时钟,但是每一流水级的时间可以在一个范围内变化: clock_cycle + (2 * clock_width) 到 clock_cycle (2 * clock_width)3.2.2 同步和异步设计方式 另外,设计者加长了第二相时钟(给一些较慢的流水级更多时间),借用了第三相时钟的时间。当然这种设计规范,定义着哪一级需要时间扩展,只会保留在设计者手中,并不会记录下来
38、。 这种处境使管理者认识到,由于生产工艺上的差别,基于锁存器的设计就有可能毁掉公司的全部产品。 此例显示出基于锁存器设计的弊端,特别是在可重用设计方面。3.2.3 时钟 SoC设计总是需要多时钟域。 时钟规划 规则规则系统时钟的产生和控制逻辑部分应该与系统中其他功能模块分离。保证时钟逻辑在一个独立的模块中,设计者可以对不同的实现工艺和工具进行修改,而不会影响其他功能单元。3.2.3 时钟 规则规则时钟域数目和时钟频率必须记录,这是档案中的重要部分: 所需的时钟频率和相应的锁相环 外部时序要求(建立/保持时间和输出时序) 不同但是相关的时钟域的时钟偏移要求(时钟1和时钟2之间的时钟延迟)3.2.
39、3 时钟 指南指南使用尽可能少的时钟域。如果两个异步时钟域互相有关系,它们应该在一个单独的模块中相汇,该模块应该尽量小。理想的处理方式是,采用单一的触发器将数据从一个时钟域传输到另一个时钟域。两个时域之间的接口应该避免存在不稳定的状态。 指南指南如果片上时钟产生单元使用了PLL,那么应该提供一种方法可以取消或者旁路PLL。旁路使芯片测试和调试更容易,也有利于系统仿真中使用硬件模型。3.2.3 时钟 硬模块的时钟延迟 硬核时钟存在特殊问题:通常在插入时钟时,会产生较大延迟,这一点需要考虑。 硬核应该在一个独立的时钟域内,有其自己的时钟网络,可用于补偿插入延迟。 一旦确定了插入延迟,就可以用两种方
40、法描述它: 1.用PLL消除延迟 2.通过给硬核输入一个早到的时钟,来平衡时钟插入延迟和其他逻辑延迟。3.2.4 Reset(复位)规则规则芯片采用的基本Reset策略必须记录,以便解决如下问题: 是采用同步设计,还是采用异步设计? 是使用内部的上电Reset电路,还是外部的上电Reset电路? 是否有多个Reset(硬Reset、软Reset)? 在调试时,是否每个核可以单独被复位?3.2.4 Reset(复位)同步同步Reset: 优点:容易综合Reset信号对设计来说仅仅是同步输入信号。 缺点:需要时钟,特别是当上电Reset电路存在时。异步异步Reset 优点1:不需要时钟。 优点2:
41、使用触发器独立输入端,不影响数据时序。 缺点1:难以实现Reset信号是个像时钟信号一样的特殊信号。通常在布局布线时会需要插入缓冲树。 缺点2:在做静态时序分析和基于同期的仿真更困难,在做自动测试结构插入时更困难。3.2.4 Reset(复位) 注意注意不论是采用同步Reset,还是异步Reset,Reset信号必须同步于时钟解除。否则,状态机可能被复位到一个无效状态。 指南指南选择异步Reset更好。不论在优、缺点方面存在什么样的争论,异步Reset是更为常用的使用方法,特别是在可重用设计中,使用得更为广泛。最终,在实现时可互操作性比其他更重要。3.2.5时序中的例外和多周期通路 标准可重用
42、模块时为全同步系统设计的。异步信号和其他时序例外应该避免,它们给芯片集成带来很多困难。 综合和物理综合的优化工具对于全同步设计优化的更好。 一旦时钟频率确定下来,这些工具可以确保每条从寄存器到寄存器的通路满足时序约束。 任何例外,例如异步信号、多周期通路,或者不需要满足时序约束的测试信号都应该标识出来。否则优化工具将集中于优化这些长路径,而不是优化那些真正的关键路径。 区别这些例外是一个手工任务。我们的经验表明例外越少,综合和物理设计结果越好。3.3.1 规划 3.3.1 规划 规则规则规划必须在设计过程的早期开始。芯片面积是决定芯片能否满足时序、性能和费用目标的关键。一些初期规划应该和初期规
43、范制定同步进行。 RTL规划规划 RTL规划,就是通过预综合RTL产生一个规划。它对于定义物理级划分和时序约束都非常重要。3.3 时序收敛设计:物理设计问题划分策略如下: 尽可能早的定义逻辑层 基于物理关系定义物理层 把一套全局约束分为多套局部约束 划分扫描链并定义I/O管脚3.3.2 综合策略和时序分配 规则在核设计或选择之前,整个设计时序、面积和功耗要达到目标都应该已在文档中明确描述。特别是在设计开发过程的早期就应该计划好整个芯片综合的方法。 推荐用自底向上的综合方法。每个核应该有它自己的综合脚本,以确保核内部时序满足设计工艺要求。 核应该以一个单独的单元进行规划,且确保线负载模型满足要求
44、。3.3.2 综合策略和时序分配 芯片级综合就是组织那些单独的核,重新设置输出驱动,以满足实际线负载模型和扇出能力。为达到这个目的,顶层的核应该分为两个部分:内部核和输出缓冲器。 对于大型设计,每个模块的物理单元规划不可能都完善。模块有可能只是顶层的一部分,特别是带有I/O单元的通信模块。相应的案例包括PCI和PCI-X。3.3.3 硬核 在硬核1与硬核3之间,由于线延迟需要,加入一个缓冲器。硬核2已经占据了缓冲器的合适位置,所以我们只能把缓冲器从硬核2的一边连到另一边。这样做就可能不满足时序要求。3.3.4 时钟分配 规则规则在芯片设计的早期,设计者必须确定基本的时钟分配结构。 大多数团队在
45、分配一个时钟(或多个时钟)时,使用插入平衡时钟树的方法。他们希望芯片中的时钟偏斜足够小,以消除保持时间错误。 对于一个大型、高速芯片设计而言,这种方式可能需要巨大的功耗大的时钟缓冲器。这些缓冲器可能消耗芯片的一般功耗,占用芯片面积的相当一部分。3.4可验证设计:验证策略 设计中的主要问题:时序收敛和验证 验证的目的:为了确保验证过的模块或芯片,具有100%的功能正确性。实际上很少能达到或几乎达不到100%。 最好的验证策略是自底向上的验证。 芯片级的主要验证任务是测试核之间的互连性。3.4可验证设计:验证策略 规则在挑选核和设计之前,必须已经开发出系统级的验证策略,形成文档。挑选或设计了不能提
46、供系统级验证的核,可能导致在SoC设计中不能完全保证时序正确。 规则在芯片的核设计和主要模块设计之前,核级的验证策略必须开发并形成文档。验证策略应该基于自底向上的验证。清晰的目标、测试平台创建方法等,都应该已经定义。3.5系统内部互连和片上总线 早期可重用设计中,使用各种不同类型总线是主要问题。 解决方案:使用标准总线。 采用第三方处理器和总线可以得到丰富的外设并且容易连接、功能正确。导致越来越多的团队采用同样的方法设计,因此产生很多事实上的标准,最成功的标准来自ARM、MIPS和IBM。3.5系统内部互连和片上总线 无线通信市场,ARM成为主要标准 处理器,MIPS成为主要标准 IBM的Po
47、werPC也成为了标准 片上处理器自然涉及片上互连。ARM处理器和ARM的AMBA总线一起工作。许多来自ARM或第三方外设都支持这种总线结构。MIPS有自己的EC总线;IBM开发自己的CoreConnect总线和大量支持该总线的IP。但是CoreConnect只支持IBM用户。3.5系统内部互连和片上总线 举例:第三方AGP核的集成 3.5.1 基本的接口问题 该设计采用AMBA总线,使用不同层次的总线可以减少功耗,同时满足系统中不同模块对带宽的需求。3.5.1基本的接口问题 IBM的CoreConnect总线,在概念上类似于AMBA,但是支持某些带有PLB(处理器局部总线)、OPB(片上外设
48、总线)和DCR(设备控制寄存器总线)等更复杂协议的模块。在非常高性能的设计中,有可能需要采用分层的总线结构,以满足带宽的需要。3.5.2 三态和多选总线 当总线结构从板上迁移到片上时,出现了是使用三态总线还是使用多选总线的争论 。 三态总线:流行于电路板设计,因为可以减少设计中的连线数。 三态总线在片上互连方面存在许多问题。 三态总线不允许悬空,如果信号浮动到门限电压,可能引起接收端高电流,减少芯片寿命。 规则我们认为只有多选总线才是片上互连可接受的结构。三态总线在片上不宜使用。3.5.3 总线的同步设计 除了要满足性能要求外,片上总线必须为不同来源的可重用模块提供良好的定义环境。因为我们的指
49、南中对可重用设计要求采用同步设计方式,保证使用单沿时钟和寄存器。因此,总线的设计也必须采用相同方式,才能够方便集成。 规则规则片上总线必须是使用单时钟沿,而且是基于寄存器构架设计的。3.5.4 小结除了满足以上两个规则外,商业化总线还需要遵守其他一些优秀的总线特征: 地址总线和数据总线分离。 控制总线分离,用于定义控制用信号。 支持多个主控器。3.5.5 IP核与IP核之间的接口 早期可重用设计的挑战是模块之间点对点连接问题。在如图所示设计中,设计者决定第一条数据传输路径由I/O模块到数据处理模块应该是直接的,点对点的连接,以保证最大性能。问题:想重用数据处理模块1,就必须有I/O模块。可以从
50、第三方得到IP核,但是需自己开发I/O模块与处理模块之间接口。或设计一个新I/O模块。3.5.5 IP核与IP核之间的接口 解决方案:采用一种非常规范的方法处理所有的片上连接。无论在什么情况下,数据要在模块之间传递必须通过片上总线,如图所示。如果需更大带宽,可以采用层式结构。3.5.5 IP核与IP核之间的接口 在如图3.12所示的例子中,例如在PHY(物理层接口)中,可以使用点对点的方式设计。3.5.5 IP核与IP核之间的接口 设计指南在芯片设计中,设计团队应该选择工业标准的总线。无论如何,模块都应该连接到总线或芯片管脚上。模块之间点对点的连接,只有在绝对必要时才使用,一般使用时用工业标准
51、接口。只有在没有标准存在时,才使用定制的接口。 设计指南在芯片设计选择可重用核时,可以从公司内部或第三方IP提供商处获得。设计团队应该只接受那些能够直接连到总线上的可重用核。3.5.6可启动和可调式设计:片上调试结构 规则规则设计团队必须在设计过程的开始阶段,就开发出针对SoC设计和调试所应该遵守的策略。最高效的调试策略通常需要在芯片中设计相应的调试单元。在设计过程早期就加入调试特征单元,可以极大地减少由调试而带来的费用增加,也有利于减低设计难度、加快设计进展。如果基本功能设计完成后再加调试单元功能,可能会非常困难耗时,有时根本就不可能加入。然而,如果没有有效的调试结构,在SoC设计时,可能连
52、最简单的bug,设计人员也难以消除。3.5.6可启动和可调式设计:片上调试结构 指南指南可控性和可观性是调试过程的关键。 可控性是核自身设计特征的最好体现。在系统设计中,最好能够实现每一个核都可以被关闭、开启,或者在大多数基本功能仍可操作的前提下,可以进入调试模式。这种可控性,可以通过片上处理器、微控制器或芯片测试控制器实现。 可观性是SoC设计中的一个主要问题。我们希望能够把逻辑分析仪探头深入到芯片内部的测试结点上,像按照调试电路板的方法进行调试。3.5.6可启动和可调式设计:片上调试结构 对于SoC设计,我们可以在尽可能近的地方增加附加电路,以利于实现片上的可观性。可以增加监控电路来监视总
53、线,检查总线上的数据,看是否有不合适的传输发生。 另外一种有效方法是通过芯片的I/O管脚提供一种用于观测片上总线的机制。由于I/O管脚通常非常珍贵,所以这种方法往往采用管脚复用的方式实现。3.7 低功耗设计 在CMOS电路中,功耗由静态功耗和动态功耗两部分组成 静态功耗静态功耗主要取决于制造工艺水平和库单元功耗水平,而不是设计所能决定的。良好设计的标准单元库避免采用动态单元,而采用全静态设计。设计中可以实现0静态功耗3.7 低功耗设计 低电压设计低电压设计:为了保持高性能,库提供商必须在提供低电压Vt库的同时,提供高电压Vt库。低电压Vt库提供更快的单元,但是静态电流大。一些好的芯片设计中同时
54、采用低电压Vt库和高电压Vt库,以便获得高性能与低功耗之间最优的设计。 采用低电压Vt库达到非常低的功耗,设计难度很大。有一种技术,在电路不工作时切断低电压Vt单元的供电。3.7 低功耗设计 3.7 低功耗设计 低功耗设计基本方法是尽量减小、C和V;f是由系统性能所确定的。 低功耗技术可分为两个部分: 在高性能设计中,低功耗设计是次要的,但同样是设计中的关键部分(例如,台式计算机的CPU芯片设计) 在极低功耗设计中,低功耗设计是首要问题(例如,电池供电的设备)3.7.1 低供电电压 将低供电电压对于降低功耗最有效,因为功耗与电压之间将低供电电压对于降低功耗最有效,因为功耗与电压之间是平方关系。
55、半导体提供上是平方关系。半导体提供上0.5um后的每一次推出的新工后的每一次推出的新工艺中,都采用了更低的供电电压。保持芯片内核工作在最艺中,都采用了更低的供电电压。保持芯片内核工作在最低电压下(必须保证功能正确),是达到极低功耗设计的低电压下(必须保证功能正确),是达到极低功耗设计的第一步。第一步。 在低电压供电的情况下,首先问题是,它降低了芯片的性在低电压供电的情况下,首先问题是,它降低了芯片的性能。为了补偿这一因素,设计者可以增加流水和并行的方能。为了补偿这一因素,设计者可以增加流水和并行的方法,来提高设计性能。虽然这种方法增加法,来提高设计性能。虽然这种方法增加了了设计的面积和设计的面
56、积和整个设计的电容值,但是最终结果还是可以明显降低功耗整个设计的电容值,但是最终结果还是可以明显降低功耗的。的。I/O电压必须满足电压必须满足电路电路板设计需要,它通常比工艺所能提供的板设计需要,它通常比工艺所能提供的最最小电压小电压更高,一般是更高,一般是3.3V-5V。大多数设计者为。大多数设计者为I/O部分单独供电,而在核心逻部分单独供电,而在核心逻辑部分采用低电压供电。辑部分采用低电压供电。3.7.2 减少电容和开关频率 我们选择好低电压库后,还可以使用特定的构架和设计技我们选择好低电压库后,还可以使用特定的构架和设计技术来减少功耗术来减少功耗。在在芯芯片中,存储器设计,片中,存储器设
57、计,I/O单元、单元、时钟时钟网网络等都常常涉及到整体的功耗。络等都常常涉及到整体的功耗。 为为了减少了减少I/O单元功耗,可以通过减少内部的短路开关电流单元功耗,可以通过减少内部的短路开关电流(从库中选择正确的(从库中选择正确的I/O单元)来实现,还可以通过减少外单元)来实现,还可以通过减少外部负载的电容来实现。部负载的电容来实现。3.7.2 减少电容和开关频率 存储器构架存储器构架 存储器功耗本身也可以很大程度的降低功耗。例如可以将存储器分成不同的存储器模块,使用时通过译码器输出的地址高位区分,而不是采用整块的存储器。工作中,只有被访问的存储器才工作,其他的几块存储器不工作。这种方法需要增
58、加其他逻辑,如译码逻辑部分,所以在减少功耗的同时增加了少量面积。采用此法将RAM功耗电量减少为八分之一3.7.2 减少电容和开关频率 时钟分配时钟分配 在多级流水的设计中,整个芯片的功耗很大一部分来在时钟,所以减少时钟分配网络的功耗是非常重要的。应该尽可能少的使用不同的时钟。采用单时钟、基于寄存器的设计方法要比采用基于锁存器的、非折叠的双时钟电路功耗降低50%。通过门控时钟关闭通向部分电路的时钟通路,可以很大程度的减少芯片功耗。然而,门控时钟与工艺相关性非常大,在进行可重用设计师,需要非常仔细。3.7.2 减少电容和开关频率 门控时钟有两种: 门控到达逻辑模块的时钟和门控到达每个触发器的时钟。
59、 如图3.15所示,中心模块提供给模块A和模块B不同的门控时钟。当模块不工作时,可以关闭该模块,从而达到减低功耗的目的。因为在时钟分配网络中经常使用大的缓冲器,关闭输入到这些缓冲器的时钟,就可以极大减少功耗。3.7.2 减少电容和开关频率 门控电路本身就是设计中的关键。用这种方法控制时钟,需要仔细设计,避免在时钟线上产生毛刺,还需要对门控时钟的时序有深入的了解。因此,门控时钟电路本身通常是与工艺相关密切的,也是不可重用的。 把门控时钟电路封装在单独的时钟产生电路中后,模块A和模块B就可以设计为完全可重用模块了。时钟模块应该设计的尽量小,与工艺相关部分尽量少,以方便最后的人工验证和修改。3.7.
60、2 减少电容和开关频率 在某些情况下,不可能对整个模块式中进行门控,这是设计者可能希望只是对那些寄存器进行门控。这种情况通常存在于我们希望有选择的保持数据时,如图所示 在图(a)中,寄存器A通过多选保持数据。在(b)中实现相同功能时,使用了门控时钟,减少了功耗。 图(a)是由RTL级直接综合得到的电路。(b)由功耗综合工具综合产生的电路。3.7.2 减少电容和开关频率 指南指南上图(b)采用的方法是可重用设计不推荐的。因为,门控时钟与制造工艺密切相关。我们推荐是图(a)的设计方法。当前,先进的功耗综合工具可以检查出这种配置,如果再和物理级的时钟树综合工具一起使用,就可以自动地将这种配置变换到如
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论