![]() |
|
||||||||||||||
| . 网站首页 . 新闻 . 新品 . 方案 . 专访 . 活动 . DSP . EDA . 评测室 . 技术文库 . 会员区 . 商城 . 服务导航 . 邮购 . 资源 . | ||
|
||
|
|||||
| 用抽象方法加快IC设计流程 | |||||
作者:61IC 文章来源:本站原创 点击数: 更新时间:2006-9-29 ![]() |
|||||
|
新的硅工艺技术节点每18个月更新一次。每个工艺节点都使芯片内门的数量翻倍。除此之外,具有7.2 ps门延迟和10层互连的新90 nm技术提供了集成超过1亿逻辑门的容量。这个技术在设计方法方面具有深远的影响。 传统上采用分治法(divide and conquer)进行复杂的IC设计管理。但是采用该方法十多年之后,片的数量提高了其自身的复杂性。解决这个问题有两种方法:使用更大的片或者使用更多抽象。 第一个方法需要基于全新方法的新一代寄存器传输级(RTL)综合工具来综合问题。应用于这些新解决方案的案的不断增加的修订和补丁尚未跟上硅技术的发展。 其中一个比较严重的方法问题与使用综合工具有关,这些工具的容量和运行时相关限制尚未跟上工艺技术的前进步伐。使用旧综合技术的大多数设计工程师为设计创建了超过必需数量的子块。如果我们观察一下高性能设计流程,使用旧综合工具的具有50兆个门的设计,我们就会期望设计被细分成大约500个具有50至100k个门的模块(图1)。 当然,创建这500个芯片分区需要花费时间和工程支出。然而更加严重的是,这个增加的分区成本在整个设计流程中持续上涨。实际上,在整个设计流程和设计数据复用的过程中还引起了管理过多块的额外复杂性的支出。这些成本包括: 设计工程师必须编写比编译设计所需的更长的综合脚本。对于一个仅仅几百万门的设计,超过3000行的脚本不足为奇。当编译脚本比RTL代码更复杂时,是重新考虑设计策略和工具的时候了。
脚本一旦编写出来,就必须进行调试。显而易见,调试几千行脚本比调试几十行脚本复杂。设计错误和项目延迟通常源于这些复杂问题。这个晦涩难懂的脚本编制语言绝非自文档化。 这些脚本必须在项目的整个生命期以及设计数据的有用生命期里得到维护。过期并且过于复杂的编译脚本会妨碍设计和脚本复用。这已成为专业综合脚本编制的工具操作员的家庭手工业中的巨大优势。 初级工程师面临着艰巨的学习任务,他们需要精通进行超分区设计策略工作所需的晦涩难懂的工具知识。这意味着经验最丰富的工程师的注意将以工具为中心,而不是以设计为中心。这种注意力的转移是微妙的,但是很明显,这是个很大的潜在问题。 第二种方法是增加抽象来防止复杂性逐渐升级。但它已出现一些障碍和风险,必须解决这些问题,它才能真正被视为是可行的。 开始演化 由于体系结构综合代表着通往较高级抽象的发展途径,因此它已成为RTL设计工程师迫切需要使用的工具。达到抽象能力所需要的新知识量相当少,并且范围有限。但是为了利用其能力,设计工程师必须了解体系结构综合的三个主要领域。这些领域按从难到易排序如下:HDL入门差异:需要新的设计概念化;运行综合和分析结果:要使用的新分析抽象;设计流程差异:对现有流程的递增式增加。 采用更高级抽象时,经验丰富的RTL设计工程师所面临的最大挑战之一就是需要改变设计问题的概念化。几年来,RTL设计工程师学会了形象化寄存器库及其之间的逻辑。实际上,这样直接建立微体系结构已经成为基于RTL设计的特点。 要采用体系结构综合,设计工程师必须从硬件声明方法的观点和硬件描述语言(HDL)编码向I/O操作算法样式转变。如果设计工程师无法从概念上作这样转变,他们会发现体系结构设计效率不高而且难度很大。 进行这种概念化突破的最简单方法是着手设计特别适合体系结构设计样式的特定模块,然后推广至整个设计中。由于RTL和体系结构样式的分区条件不同,所以仅仅选取一个模块对于RTL设计工程师来讲是一个挑战。 在RTL中,分区是通过逻辑综合限制推动的,这些限制规定了寄存器线路的边界。因此,关键线路尽可能多地包含在单个模块内。 相比之下,体系结构综合分区是基于聚合的算法线程或者计算线程的?D?D即使这些线程最终可能在时间轴上被分解。因此,为第一次尝试进行体系结构综合选择一个模块可能涉及一些设计结构改造。但这个工作是物有所值的。 基于体系结构综合的设计方法可以取代每个案例中的RTL方法。但是优势可能微乎其微,甚至起反作用,这取决于设计类型、设计环境和目标技术。八个决定性因素支持基于体系结构综合的设计流程(而非基于RTL的设计流程)。 算法复杂性 当体系结构综合的算法复杂性由于复杂的控制流程或者复杂的算术运算而相当大时,设计是体系结构综合的理想选择。这里,体系结构综合将设计工程师从详细地编码有限状态机器(FSM)的繁杂任务中解放出来。这是因为体系结构综合接受隐式包含隐藏在循环、条件分支和其它高级结构内的FSM的过程描述。 因此,设计的控制流程越复杂,使用体系结构综合的好处就越多。与RTL综合不同,体系结构综合不需要对任何复杂算术运算的全面描述,如算法逻辑单元(ALU)或者循环冗余检查器(CRC)。因此,包括大量算术运算的设计会受益于体系结构综合流程。包括复杂的算术运算的设计例子有数字信号处理器和微处理器。 内存访问控制的设计 所有RTL设计工程师都会承认,编写代码来管理内存及其接口并非一件琐碎的任务。内存接口的复杂性越高,建模工作的要求也就越高。 通过指定内存端口数和读/写协议,体系结构综合完全自动化实现任意内存块的接口逻辑的过程。具有多端口的内存以及复合读/写方案是体系结构综合的理想选择。实际上,不同的内存类型可以被换入和换出综合流程,而无需记录HDL。 带流水线的设计 流水线处理改进了性能(吞吐量更高)和/或设计的制作成本(硬件资源更少)。它将逻辑分解成更小的片,然后插入寄存器以保存这些片之间的中间数据。上游片可以在下游片的数据处理完成之前开始处理数据。好处包括吞吐量更高和/或面积更小。流水线处理是否是一个理想选择视设计的特点而定。即使设计涉及操作的并行计算,流水线处理也可以获得好的结果。 在RTL流程中,设计工程师必须手动实现流水线,这可能是一个容易陷入困境和出错的复杂任务。仅仅通过指定等待时间和设计面积,体系结构综合就可以自动化实现流水线的过程。 有限的元件时序知识 编写RTL代码的开发者必须估计构成设计的结构块的传播延迟,并且必须确保它满足顶级定时限制。除了像门这样的简单逻辑之外,这个任务是特别具有挑战性的。设计工程师一般都会“根据推测估算”比门更复杂的任何逻辑的传输延迟,如复用器、ALU、RAM、CRC和FSM。估算是根据相似设计的经验或者根据大致尺度进行的。 错误的计算经常发生,同时产生不满足定时目标的综合门级排线表列。为了纠正不匹配情况,设计工程师必须重写部分(或者所有)RTL代码。因此,在定时聚合之前需要使用RTL综合工具的多个迭代。 相比之下,通过映射RTL和门结构,然后对那些结构执行定时分析,体系结构综合可以自动化每个元素(不管是复杂结构还是简单逻辑,包括硬件元素之间的互连)的传播延迟计算。这样自动化计算工艺准确定时也对缺乏经验的设计工程师进行设计有所帮助,并且排除了错误的假设。 需要进行体系结构探索 任何设计都可以通过几个不同的硬件结构之一来实现,并且仍能满足设计目标。但是,考虑到在竞争激烈的电子工业中,通常指定给制造复杂器件的团队的时间表非常紧,因此在RTL级别找到合适的体系结构可能是不可能的。 在RTL流中,通过显式对机器状态、要在那些状态中执行的操作、存储临时值的寄存器以及构成设计的任何其它结构细节进行编码,开发团队可以确定以HDL描述的设计体系结构。因此,改变体系结构需要设计的整个RTL描述,以便重写。由于设计的吞吐量可能已经改变,因此它还可能强制重写测试平台。 在体系结构综合流程中,设计团队可以通过切换目标库来探索各种性能和成本的不同结构。他们也可以修改面积、资源数量和类型、状态数、时钟周期或者设计等待时间等设计目标,并且再综合相同体系结构HDL代码。只要设计的I/O协议不改变,就可以重复地使用同一测试平台。 转换工艺技术 进行体系结构探索的注意事项同样适用于转至不同的工艺库。用一种工艺技术执行得最好的微体系结构可能在使用另一工艺时产生很差的结果。当更改RTL流程中的目标库时,工艺技术优化的微体系结构可能需要重写,以获得最佳结果。在体系结构综合流程中,设计团队可以再综合目标为不同工艺库的同一体系结构HDL代码,并且生成一个为新库优化的新排线表列。 规范并非完全不变 在编码阶段开始之前,RTL设计方法需要对设计体系结构有完全而深入的定义。由于设计规范的所有细节都必须明确地确定,因此RTL开发者可以制订出最终的体系结构并完成编码。如果在RTL开发团队得知规范更改时编码已经开始,项目时间表将出现极大的混乱,并且会发生代价惨重的失误。 体系结构设计流程不需要完整而详细的设计体系结构来执行实现任务。因此,开发团队可以通过只对设计的功能性HDL描述进行较小更新即可作最后的更改。 IP的创建 体系结构综合是创建软知识产权(IP)宏库并且推进其普及的理想技术。两个问题减缓了软IP宏的使用速度。首先,不像在设计中无需定制的“即插即用”的硬宏,以RTL编写的软IP宏需要对主机电路进行部分的重新设计。这给开发团队带来了无法预见的负担,从而延迟项目进度。相比之下,称为POCA功能模型的软IP宏仅在I/O协议级别上受限制,并且通过较小的编辑即可参与设计。 其次,以RTL编写的软IP宏在转向使用不同的工艺技术时需要对其代码进行部分重写。但是,在结构级描述的软IP宏不需要定制。它可以通过综合将新库作为目标来适应不同的工艺技术。对于支持从任意给定设计的变体中创建的系列,在结构级描述的软IP宏是理想选择。 POCA编码 如上所述,用于体系结构综合的HDL编码样式被称为Pin输出周期精确法POCA(pins-out-cycle-accurate)。这种编码样式可以使用任意一种流行HDL来编写,包括Verilog、VHDL、SystemVerilog、Superlog、SystemC和CoWare C。 POCA的基本前提是要创建的模块的输入和输出事务(读和写)被明确固定在时钟周期时间内,而所有的相关计算可以在优化期间移动。因此,模块的I/O协议在优化前后是相同的。这就克服了行为综合中出现的主要难题――模块之间的I/O协议不断变化,总是不一致。 用于POCA样式HDL编码的语言结构与用于基于RTL设计的语言结构基本上相同。虽然POCA中循环较为常用,但是关键差异在于POCA中时钟边沿较常用。RTL代码受每个工艺一个时钟边沿的限制,并且时钟边沿必须位于工艺的开头。 相反,POCA允许的时钟边沿不受限制。它们可以分散在整个工艺中。以POCA样式Verilog编码的简单滤波器设计使用许多常见的RTL结构(图2)。随附的控制流程图(CFG)已提供循环和数据操作的注解。设计工程师将实现这个图形视图来了解由体系结构综合建立的自动微体系结构。 运行综合 体系结构综合工具与RTL综合工具的操作方式和控制方式基本相同。它们可以使用相同的技术库和定时限制类型并且生成相同类型的结果报告。本论述将仅集中在差异上,但是大多数环境几乎与基于RTL的环境完全相同。
体系结构综合所作的设计变换比RTL综合所作的要“大”,这是因为前者不受单个微体系结构解决方案空间的限制。体系结构综合所执行的两种优化变换包括调度和资源分配。 调度过程将每个操作指定给一个时钟周期。它执行定时分析、查看时钟周期和时钟树,然后将操作分布在各个时钟周期中。如果某个值超过了周期边界,则该值会被保存在寄存器中。为了避免多周期操作,它将复杂的操作分割成多个周期。调度过程检查定时违例并且通过重新调度操作来修正这些违例。 另一方面,资源分配过程确定可用于给定实现的资源数量和类型。它建立FSM来控制这些资源的使用,并且生成一组寄存器或者内存块来存储中间值。如果可能的话,它会复用寄存器、功能和操作器等硬件资源。 此外,体系结构综合工具还提供几个RTL综合无法提供的功能,如链接、流水线处理、内存推断、资源共享和寄存器共享。这些优化变换在许多主题为高级综合的书籍中都有说明。 在基于RTL的设计中,设计工程师必须执行调度和资源分配任务。通过体系结构综合所提供的自动化,这些任务的结果必须传递给想要或者需要了解模块实现细节的设计工程师。说明结果的最简单方法是使用设计抽象或者设计视图,但是可能并非所有设计工程师都熟悉这些抽象或者视图。这些视图包括控制流程图和数据流程图(DFG)。 查看设计的一个方法是将该设计看成由三条信息组成:what、when和where。一个设计的特性是通过想要的行为(what)描述的,设计可映射至时间(when),并且通过特定结构(where)来实现。DFG压缩了想要的行为,而控制流程图精简了定时信息。在设计细化期间,体系结构综合从高级HDL代码中抽取CFG和DFG。在体系结构综合的调度阶段,这两个图被链接起来,并且设计优化得以执行。在分配阶段,体系结构综合最终将硬件资源分配给各个操作。 体系结构综合工具提供用来图示设计的CFG和DFG视图的用户界面以及较常见的源代码、层次结构和门级视图。这些视图全部超链接在一起,以便它们的关系容易被理解。 体系结构综合工具的处理步骤是以通常连续的方式进行的,并且在不同的优化步骤中隐藏了许多迭代(图3)。输入包括POCA样式HDL代码、实现限制以及工艺库(与用于RTL综合的相同)。输出可以在多个抽象级别生成,包括优化的POCA样式调度设计、RTL或者门级。
|
|||||
| 欢迎点击进入:TI德州中文网 (国内唯一针对TI应用的中文技术网站) 文章录入:admin 责任编辑:admin | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| Low Power CTS using Astro |
| 网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | 网站公告 | 管理登录 | | |||
|
|