首页 > 新闻中心 > > 正文

复杂芯片设计的分而胜之之道

更新时间: 2006-04-06 13:31:20来源: 粤嵌教育浏览量:1703

几乎很少有设计师会考虑使用分级设计方法来开发复杂芯片的种种好处。

从历史上看,设计师都使用一种芯片分级设计法——把芯片分成几个区或功能块——来扩展设计自动化工具的能力。使用分级设计法的优点是能实现并行的 RTL(寄存器传输级)和物理设计,因为物理设计可以在网表完成前就开始进行。分级设计还可以在一块芯片上使用多个电源区。此外,分级设计有助于对局部块进行一分钟的设计修改(见附文《术语表》)。然而,使用分级设计法也要付出代价,那就是项目复杂程度大为增加(多次进行布局布线)和设计结果欠佳(面积增大,定时性能下降)。虽然有这些不足,许多复杂芯片(诸如图形处理器和微处理器)的设计师通过采用一些程序和一套设计工具(它可以成功地进行一个复杂 SOC的功能块重组并完成设计),开发出了一些能充分利用分级设计的优点而将其缺陷减至少的方法。
分级设计方法及其使用的工具必须能支持定时和区域的优化。这些工具必须把设计看成一个“完整芯片”,以保证时序收敛比单独设计每一功能块时更佳。这种设计涉及到中继器的适当布局,还涉及到互连线和单元延迟的匹配,以满足信号建立与保持和时钟偏移规定。另外,一种分级设计物理实现工具应该尽量减少或消除顶层连线通道,因为这些通道会使芯片尺寸比平面设计的面积增加 20%以上。物理实现工具还必须能以适当快的速度运行,从而能根据需要进行迭代和重新优化,以满足设计规范。
      一套能同时处理一块完整芯片的分级设计和平面设计的工具使得分级设计对于任何SOC设计小组来说都是可行的。这些工具必须既能处理整个芯片的功能,如电源分配、顶层时钟分配和顶层信号中继器,又能处理在顶层下面的功能块、宏块与单元内的元件(见附文《分级设计类型》)。
分级设计的好处
分级设计的一个主要好处是:在处理几百万只晶体管的设计时,提升了 EDA 工具的处理能力的上限。对芯片上各个功能块并行地进行设计,就能使多台计算机和多位设计师同时设计一块芯片。
但是,分级设计的其它好处开始逐渐占据主导地位。分级设计法可以并行地进行RTL 与物理设计。并行设计能大大加快芯片的开发速度,因为你可以在设计早期发现物理设计的制约情况,而 RTL 小组就能予以纠正。在分级的情况下,有些功能块的网表一般要比另一些功能块完善得快。你可以对这些物理上完善的功能块进行平面规划,而对不太完善的功能块建模,以便更好地了解终的芯片性能。此外,你可以比平面设计流程更早地发现设计问题,因为平面设计流程要求你等到 RTL 开发结束后才能开始。
分级设计产生出的功能块网表较小,与大型网表相比还有一种好处:能提高EDA 工具布局布线的 QOR(成果质量)和可靠性,减少芯核转储(参考文献 1)。
分级设计法可提高可控制性。设计者可以更改设计约束条件、工具参数和网表,以便通过优化工具设置并将额外的时间用在功能块与芯片的物理平面规划上,来加速设计收敛。这一控制能力在出带阶段非常重要,因为系统验证会发现设计缺陷,出带阶段经常要更改“终”的网表。随着网表的完善,分级会产生一个芯片装配更具确定性的环境。例如,假设你要在出带前的时刻对某个块进行重新综合。在平面设计中这是不可能完成的任务,因为没有办法为这一功能块删除旧网表,插入新网表。在采用分级设计法时,你只要重新设计一个功能块,并保持相同的引脚位置和其它外部约束条件,就可以很方便地实现这种修改。这一方法可以使你在时刻对芯片的某个部分进行修改,而对设计其余部分的影响小。
,分级设计方法将一个设计分成一个个功能块也有利于设计重复利用。当你设计并验证功能块后,这些功能块可用于其它设计,因为你可以把它们看作是硬件 IP(知识产权)芯核。
成功实现分级设计的障碍是功能块设计方法会阻碍跨分级设计参数传播的“地平线效应”(horizon effect)。其后果是在芯片组装时存在欠佳的块设计,或产生不可接受的设计折衷,甚至两者兼而有之。传统的设计工具不能跨越块边界进行“查看”。如果没有这种跨边界的查看,传统设计工具就不能进行整个芯片的优化,或改正那些由 QOR 问题、结构问题以及流程引起的潜在问题。
QOR 问题包括:全局布线拥挤、全局或下层定时错误、由于全局连线通道而造成的面积增加、功能块分区不良,以及平面规划对功能块形状的限制等。结构问题包括功能块边界处的 DRC(设计规则校验)问题、全局电源和时钟分配网络的产生问题、全局信号中继器插入问题以及定时和可布线性对功能块分区或形状的制约问题。流程问题则包括整个芯片整合、涉及到全球各设计部门人员的多功能块设计与校验的数据管理,以及处理满足规范要求的设计迭代问题。
使用合适的工具
用一种真正邻接(true-abutment)方法实现一个设计需要能用多个独特属性进行平面规划和物理实现的设计工具。支持分级芯片设计的一套设计工具必须能既检查芯片的分级设计,又检查芯片的平面设计,并成功地处理与这种设计方法有关的结构问题、流程问题和整合问题。这类工具必须能够支持优化(消除连线通道并将顶层信号中继器数量和连线长度减至小),支持快速建立(快速获得有关设计决策的布局布线反馈信息),支持对网表、IP、平面规划和焊盘元件的不可避免修改等,从而处理分级设计引起的各种问题。




图 1,采用真正邻接的分级后端芯片设计可消除顶层布线通道,从而芯片面积比8块基准芯片面积平均减小15%。

在传统分级设计中,功能块之间的连线通道不仅会增加芯片面积和信号完整性风险,而且还会增加信号等待时间,从而降低芯片上的时钟速率。设计师需要能制造由一个个功能块组成的、没有通道的顶层芯片的工具。这样的工具必须进行资源分配优化,其中包括定时预算以及跨功能块边界的建立与保持定时,使终的芯片有与平面设计相同的面积和信号流特性(图 1)。另外,这样的工具还应该能并行地执行多个布局布线任务与商用布局布线工具一起使用,从而使设计师在合理的时间内完成整个芯片的布局布线工作。
确定引脚位置的高质量全局布线是尽量减少功能块拥挤和优化定时与电源分配所必需的。一套用于分级设计的工具采用一个多项一次通过的设计范例,并使用一个可以同时打开设计新旧版本的全局布线程序。由于初的引脚位置对功能块的布局有很大影响,因此精心进行全局布线可以防止布线工具成为布放位置很小。采用一种依据布局反馈而依次制作然后再形成方案的方法,既减少了全局资源,又可以产生的功能块布放。功能块将在整个生产环境中“感觉”到的定时与拥挤问题反馈回来,我们就可以再次进行优化,解决这些问题(图 2)。这种方法类似于一位设计师所用的方法,即对近制作的芯片进行核查,作出变更,从而在下一次制作时改进设计。



时钟定时约束条件的分配和信号中继器的插入是后端分级设计工具的附加属性。设计师规定全局(引脚级)定时规范,设计工具根据这些规范为静态定时分析和布局布线产生功能块级定时约束条件。每次构成完整芯片后,工具应该更新这些约束条件,以确保全芯片时序收敛。在整体布局布线过程中,工具还必须判断何时插入能满足定时规范的全局信号中继器。定时信号中继器的插入是一件具有挑战性的工作,因为一个设计可能需要几千个信号中继器才能满足定时约束条件。
只有使用正确的工具和设计方法,产生一个真正的毗邻设计,分级芯片设计才能成功。这样的设计不仅在性能上优于平面设计,而且由分散在各地、其成员具备不同技能的设计小组来实现更为方便。
参考文献
Cong, J, et al, "Optimal Scalability Study of Existing Placement Algorithms," Asia South Pacific DAC, January 2003.
术语表
块(Block):用来表示芯片顶层以下的一级层次,块由硅核和各类相邻的标准单元(宏块)组成,每个标准单元完成各自的功能。EDA 工具获取芯片的物理数据库,自动完成块的布局布线,
单元库(Cell library):不同功能的标准单元、硬 IP(知识产权)芯核,以及其它宏单元块的汇编,布局工具使用它们来构造芯片。
通道(Channel):在各排标准单元块之间的间隙,其中包含单元间的互连线。
硬 IP(Hard IP):一个可以被布局布线、表示一种功能的块,如微处理器芯核、RAM、PLL 或 ADC 等。不增加平面规划运作,今天的 EDA 工具无法自动完成硬 IP 块的布放并获得良好的返回质量。
宏块(Macro block):已经自动布局布线完毕的一组标准单元和硬 IP,因此宏块也是一种更别的硬 IP 块,可以放进单元库里。
纯馈通(Pure feedthrough):穿过一个块的一条信号线,不需要信号增强器或其它逻辑来保持信号完整性。
信号中继器(Repeater):为克服长连线阻抗而增加的一个缓冲器,保证了连线上信号的完整性。使用 0.13 微米工艺时,一个长的网络上大约每 1.5 mm 就需要一个中继器。
信号中继器馈通(Repeater feedthrough):穿过一个块的一条信号线,信号线很长,该块的网表中要包含一个连线信号中继器。
标准单元(Standard cell):低复杂度的逻辑单元,完成如 NAND 门、触发器和缓冲器等功能。一个设计的所有标准都有相同高度,在每个单元的上、下端进行 I/O 连接。公共电源连接在单元的两侧,这样 EDA 工具可以自动地布放单元,确保单元相邻处电源、地的连接性。单元之间由连线连接,连线穿过各排单元之间的通道。
网表(Top-level netlist):物理设计的网表。
附文:层次设计类型
经对构成芯片的几种物理方式进行检查发现,在使用正确的设计工具情况下,有一种方法(真正毗邻式)适合处理先进 SOC(系统芯片)物理与性能的复杂性。
概念上讲,平面设计是芯片设计者采用的简单类型。整个网表都在一个单一层次级上(顶层)。所有的库单元均处于这个顶层中,布局与布线是整体一起完成的。设计人员和设计工具不需要处理任何涉及不同设计块之间的边界问题,因此也不需要应对时序分隔问题。然而,随着布局布线工作中多种 EDA 工具的运行,平面设计会产生一系列问题,如工具收敛的可重复性、局部 QOR(结果质量)以及不完整的网表等。
在传统的通道式设计中,顶层的网表一般包含了进入芯片焊盘环的单元,以及一些其它的库单元。完全传统的通道式设计在通道中不含逻辑,通道中使用优先的布线方向。当设计者拥有不到四层金属可用于芯片上块与单元的互连时,这种类型的设计是一个可行的方法。你可以把焊盘环(pad ring)当作一个大型宏块覆盖,可以为芯片的每侧使用多个宏块,或者做一些其它的焊盘单元分区。今天的设计人员很少采用传统的通道式设计,因为它的结构问题非常突出,而采用六层或更多的金属层工艺没有必要。
顶层平面设计是今天常见的层次设计类型。工程师们总是沿标准的走线方向在连线通道内布线。这种设计可以包含大量的标准单元。但如果标准单元数量过大, EDA 工具的工作时间会过长。在这种情况下,设计者可以建立单元块,增加另外的层次,以此来减少顶层上单元与块的总数量。块与其它硬 IP(知识产权)在顶层的布放采用顶层标准单元布放方法。
对只有两三个块的小型网表可以采用近乎毗邻(almost-abutment)的芯片设计,其设计连接性与分区方式可以避免出现大量的馈通(即得到一个“友好的网表”)。含 10 个以上块的网表要使用特殊 EDA 工具,并对网表进行修改,在块中增加更多的信号中继器,以实现更多的单元毗邻。这样,网表顶层的所有(或大多数)连接都是从块至块的连接,整个网表对平面规划更友好。
布局布线工具使用小型通道在块之间传送一些“不太友好的”信号。时钟分配一般较困难。工程师要在各个通道中分配时钟,或者通过更改所有的块网表来完成时钟分配。除信号中继器和时钟分配硬件以外,用户还必须对其它全局结构进行分割,或确保它们都在顶层上。
在针对多个块的复杂芯片的真正毗邻下,所有的块都是完全毗邻的,层次的顶层上不存在逻辑或布局。由于所有功能都在这些块内,这种方法简化了芯片的整合。只存在各个块,而没有顶层胶合逻辑。所有的块与块间互连都采用通过块之间的信号中继器馈通、纯馈通,或者两者兼而有之。合适的工具会自动为局部和全局布线共享所有的金属资源,如时钟树和电源网。关键信号可以跨芯片直接处理,象平面设计那样在各个块之间重复其路径。
在其它层次方法中,块分割是很难处理的,而用真正毗邻方法就很容易处理。使用这种方法,即使这些块有极多端子和数千个馈通,设计的芯片也不会出现明显的问题。


 

免费预约试听课