第4章 ASIC前端设计
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2 编码阶段的规范 在编码阶段需要遵循以下规范: (1)在每个模块实现代码文件的文件头中必须注明 作者的姓名、创建时间以及每次修改的时间以及内容, 同时必须注明功能模块的功能描述; (2)每个模块的输入和输出引脚的命名必须遵循相 应的命名规范,如从A模块输入到B模块的信号,必 须以a_fun_b的形式来命名,表示是从A模块输出到B 模块的信号,fun是对信号完成功能的描述; (3)在功能模块内部,必须对代码加上必要的注释, 描述实现的细节;
层次化设计除了能降低系统设计的复杂度,同 时还可以更容易地让设计和系统完成的功能概念化。 从层次化设计的更高层次上,很容易从行为级层面 上路径系统的功能,而不需要关心下一层的实现细 节。同时层次化设计能加强所设计模块的重用性, 而不需要或只需较少地对原来的设计进行修改。 采用层次化设计从某种意义上来说就是采用了 自上而下(top-down)的设计方法 。
4.3 设计思想
设计思想是整个设计的灵魂,它决定了系统设计 的架构,并直接影响到系统的效能。 1 层次化设计 层次化设计可以将一个复杂的系统分解为若干个 子系统,或者进一步将子系统分解为现行的技术可以 实现的功能模块。这样一个不断分解的过程可以将一 个复杂的问题用递归的方式不断分解,直到问题的复 杂程度降低到可以很容易实现。芯片设计同样可以运 用这样一个层次化设计思想将芯片层次化为若干模块 或是子模块的组合。 下图是一个层次化设计的例子,这个例子说明了 如何用4个1bit的全加器来实现一个4bit的加法器。
4 流水线(Pipeline)设计 流水线处理的思想来源于工业界,基本思想如 下:一件事可以分为n个步骤完成,并且每一个步 骤的处理时间相同。如果采用串行处理,需要n个 单位处理时间,那么这件事同样可以用N级的流水 线来完成。每一级流水线完成相应的处理步骤,当 这一级流水线处理完后就将处理结果交给下一级流 水线,并开始处理上一级流水线的处理结果。采用 这样的流水线设计从宏观上来看平均每一个事件的 处理时间为一个单位时间。流水线的设计要求事件 所分成的这n个步骤的处理时间是相同的,以保证 流水线不会因为处理时间的不同而发生阻塞,如下 图所示。
3 并行设计 并行处理顾名思义是采用几个处理流程同时处 理到达的负载,提高处理的效率。并行处理要求这 些处理之间是不相关的,彼此之间是不相互依赖的。 如下图所示,理想的情况下,这几个并行处理流程 对于负载的处理时间是相同的,如果这几个处理流 程对于负载的处理时间不相同,那么还需要考虑处 理结果同步的问题。
同步系统的优缺点 同步系统具有很好的可控性,这是因为系统时 钟提供了一种时间窗的机制保证了有足够的时间让 信号咱逻辑门以及逻辑门之间的连线上传播,并最 后成功所存于寄存器。在设计相同和选择正确的时 钟周期时,要满足以下这两矛盾的需求:首先希望 相同的时钟周期尽可能短,这样在固定的时间那运 算逻辑电路可以进行更多次的运算;另一方面,又 需要保证时钟定义的时间窗足够长以保证组合逻辑 的输出信号都能在当前时钟周期结束前以及下一个 时钟周期开始前到达目标寄存器。
目前,计算机辅助设计工具诸如行为级综合工具等已 逐步引入到结构设计中,这些工具不但可以很方便地构建 不同的功能部件,完成不同功能部件之间的互连等工作, 而且可以直接将行为级的结构设计转化为寄存器传输级设 计。这样做的好处是在行为级的结构设计时可以比较容易 地对系统进行优化,而优化后的结构设计可以马上转化为 寄存器传输级设计。 随着设计的复杂度的增加,数字电路的可测试性得到 了越来越多的关注。芯片的可测试性是指芯片在制造过程 中能够发现制造中出现的不合格的芯片产品。在结构设计 中,设计者除了完成主电路的设计外,还需要特别考虑一 部分辅助测试电路的设计,以保证芯片在制造阶段的可测 性。现阶段普遍采用的是用可测性设计来保证电路的可测 试性。
1 文档阶段的规范 设计文档需要包含以下内容: (1)详细定义的ASIC功能需求,这一部分主要由系统设计工程 师完成,并要得到ASIC设计工程师的认可; (2)ASIC系统的模块划分,因为一个ASIC系统的设计需要几 个ASIC系统工程师共同完成,每个工程师只会负责其中的—个 或是多个模块,对模块的划分以及每个模块完成的子功能的定 义一定要清楚,这需要ASIC设计工程师共同协商完成; (3)在ASIC系统内部功能模块划分完毕后,需要ASIC工程师 将自己负责的模块的接口用表格的形式进行规范,以保证彼此 之间定义的模块接口的一致性: (4)ASIC工程师还需要将自己负责的模块需要完成的功能以及 实现的步骤用流程图、状态图以及时序图的方式在文档中阐述 清楚。 所有的设计文档都需要并发版本系统来管理,以保证文档 的统一性。
同步系统的缺点: (1)同步系统要求系统中的所有电路通路以其中最 慢的一条寄存器到寄存器通路的标准来工作(这也 就是说,同步系统中系统工作的速度取决于这些 通路上具有最大时延的组合逻辑,包含这样组合 逻辑的通路称为最坏情况下的关键路径)。 (2)同步系统中,很大一部分的面积以及耗散的电 能都被用于时钟分配网络。 (3)同步系统的可靠性依赖于对于系统时延要求 (包括组合逻辑以及由电路互连线产生)的正确估 计,如果系统不能满足时延的要求,将造成系统 的不稳定甚至是不可用。
3 验证阶段的规范 验证是保证ASIC前端设计以及实现正确性的 一个重要环节。首先需要用文档描述测试环境的架 构以及建立方式,同时根据设计阶段的设计文档确 定测试所需要覆盖的测试点,达到尽可能大的测试 覆盖率,然后用文档描述具体测试步骤以及不同的 测试向量所测试的功能点,最后需要在测试的过程 中记录测试的结果,便于以后对整个测试过程进行 复查。一般情况下,负责测试的工程师不同于负责 该模块的ASIC设计工程师本人,为减小主观因素 带来的测试不充分性,测试工程师和ASIC设计工 程师之间应该以设计文档作为衡量代码实现正确与 否的惟一标准。
第4章 ASIC前端设计
4.1 4.2 4.3 4.4 4.5 4.6 4.7 ASIC前端设计概念 ASIC前端设计的过程规范 设计思想 结构设计 同步电路 时钟划分和设计 典型设计实例 —— 简单电子表控制芯片
4.1 ASIC前端设计概念
专用集成电路相对于通用集成电路而言可分为模 拟电路和数字电路两大类,我们主要讨论的是数字 集成电路。从目前的制造方法来看,数字专用集成 电路可分为全定制、半定制、可编程。本章主要针 对半定制ASIC的电路设计。 下图是ASIC设计流程从概念上分为4各阶段: 前期设计:根据客户需要,提出功能需求,并建立项目设计文档; 前端设计:依据设计文档,完成电路设计、仿真综合,网表文件; 后端设计:对设计电路进行布局布线,时序分析,逻辑优化等; 物理设计:硅片设计,生产等 。
4.4 结构设计
在系统设计文档完成后,系统被划分为模块,每 个模块都有明确的功能以及与其他模块接口的定义, 这时系统已经被结构化了,称为结构设计。 结构设计除了要完成模块的划分外,还需要决定 系统中有多少种功能模块、它们的个数以及它们之间 的互连关系,这些模块的种类包括:加法器、乘法器、 算术逻辑运算单元和总线等。同时结构设计还需要决 定系统处理结构:是否采用流水线的结构,流水线的 级数采用多少以及每一级流水线的操作等。
2 串行设计 串行设计是最常见的一种设计。当一个功能模 块对输入的处理是分步骤进行的,而且后一步骤只 依赖于前一步骤的结果时,功能模块的设计就需要 采用串行设计的思想。如下图所示,由于模块处理 过程所花费的时间是不同的,所以串行模块之间一 般用FIFO来缓冲由于处理时间不定带来的负载波动, 到达宏观上的负载均衡。FIFO深度将直接影响串行 处理模块宏观上的处理效率。
4.5 同步/异步电路
1、同步电路 通常的情况下,同步电路采用的都是全同步, 下图所示是一个全同步的例子, 第一部分是由逻辑门组成的组合逻辑部分; 第二部分称为时钟驱动存储单元,简单的说就 是寄存器,用于存储组合逻辑的输出结果; 第三部分是时钟分配网络,这一部分特殊的电 路不参与实际的运算,而是产生并分配参考时钟, 这一部分电路关心的是如何产生控制整个同步电路 的时钟并将时钟正确地分配到每一个寄存器。
同步系统的优点: (1)同步系统宜于理解,并且同步系统中的各个参 数以及变量都十分明确。 (2)同步系统可以减少非确定因素诸如组合逻辑的 时延对系统的影响,保证相同按照确定的行为运 行,并保证系统正确执行设计的算法。 (3)相同系统中不需要关心组合逻辑的输出毛刺, 因为寄存器只有在时钟的有效沿上才对组合逻辑 的输出进行采样,而同步系统可以确保这时组合 逻辑的输出已经没有毛刺。 (4)同步系统的状态完全由存储单元中所存储的数 据所决定,这大大简化了系统的设计、调试以及 测试。
(6)在ASIC芯片内部模块之间的输入输出可以采用组 合逻辑输入和输出,因为芯片内部的时延比较小(在不 影响性能的情况下采用寄存器锁存输入和输出会更好), 对于不向ASIC芯片之间的输入和输出信号必须采用寄 存器输入和输出,因为芯片之间的板间时延往往比较 大,如果不采用寄存器输入和输出将会大大增加后端 实现的难度; (7)考虑到芯片内布局布线的难度。 遵循良好的编码阶段的规范,能大大降低后端实现 的难度,减少因为达不到后端实现的要求而修改前端 代码实现的次数,同时也便于在仿真验证阶段对于代 码的调试,大大加快开发速度。
采用流水线设计的好处是在不提高系统运行频率 的情况下,能够获得更好的处理效率。受制造上艺的 影响,提高系统频率将会增加后端制造的难度。
在系统设计文档完成后,系统被划分为模块,每个模 块都有明确的功能以及与其他模块接口的定义,这时系统 已经被结构化了,称为结构设计。结构设计除了要完成模 块的划分外,还需要决定系统中有多少种功能模块、它们 的个数以及它们之间的互连关系,这些模块的种类包括: 加法器、乘法器、算术逻辑运算单元和总线等。同时结构 设计还需要决定系统处理结构:是否采用流水线的结构, 流水线的级数采用多少以及每一级流水线的操作等。目前, 计算机辅助设计工具诸如行为级综合工具等已逐步引入到 结构设计中,这些工具不但可以很方便地构建不同的功能 部件,完成不同功能部件之间的互连等工作,而且可以直 接将行为级的结构设计转化为寄存器传输级设计。这样做 的好处是在行为级的结构设计时可以比较容易地对系统进 行优化,而优化后的结构设计可以马上转化为寄存器传输 级设计。
4.2 ASIC前端设计的过程规范
ASIC前端设计一般大致可以分为3个阶段: 文档阶段 编码阶段 验证阶段 与一般的FPGA设计有所不同,因为ASIC设计 一般逻辑规模都比较大,往往需要多个设计工程师 来共同完成,并且ASIC流片的周期长,成本高,流 片对于前端设计中的逻辑错误不具有可修复性,所 以在ASIC前端设计中,每个阶段都必须严格遵守相 应的工程规范,以保证工程的顺利进行。
(4)注意组合逻辑带来的时延对后端实现的影响,必 要的时候需要用时序逻辑来改善组合逻辑,常用的 一种方法是将大的组合逻辑划分为几组较小的组合 逻辑,这些逻辑之间用寄存器进行锁存; (5)在顶层模块,最好用专用的连线工具将功能子模 块的连线相连,采用连线工具相连既使于检查连线 的完整性,也能避免因为手动相连带来的错连和漏 连;
2、异步电路 在一般的ASIC教程中介绍的大都是同步时序的 设计,即单时钟的设计。但在实际工作过程中,纯 粹单时钟电路设计的情况很少,把包含两个以上互 不相关的时钟信号的电路称为异步电路。比如在设 计模块与外围芯片的通信电路中,如果对跨时钟域 的时序产生的问题估计不足,则会导致在设计的后 期不得不对设计进行返工。 异步时序的定义 异步时序设计指的是在设计中有两个或两个以 上的时钟,且时钟之间是不同频率或同频不同相的 关系。而异步时序设计的关键就是把数据或控制信 号正确地进行跨时钟域传输。