深亚微米SoC晶体管级静态时序分析与建模

更新时间:2024-04-05 05:13:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

深亚微米SoC晶体管级静态时序分析与建模

唐培松

叶 晨 pstang@icdc.org.cn 国家高性能集成电路(上海)设计中心

National High Performance IC (Shanghai) Design Center

ABSTRACT

With the steady advance of integrated circuit chip technology to ever-smaller features, ever-more complex design, ever-larger chip area, and ever-higher operating frequencies, Static timing analysis of SoC faces many new challenges. In this paper, the characteristic of NanoTime was introduced in brief, and the analysis precision of several static timing analysis tools was compared with HSPICE in detail. The advantage of NanoTime was provided according to the application of NanoTime in a project of SoC. Finally, this paper gave a brief introduction on the questions and corresponding solutions in the process of timing analysis of SoC.

Key words PathMill,NanoTime, PrimeTime, HSPICE, SoC, STA, P&R, hierarchy

摘要

摘要:随着芯片的制造工艺进入到深亚微米,SoC的设计日趋复杂、规模急剧膨胀、频率快速提升,这些因素都给芯片的静态时序分析带来前所未有的压力和挑战。本文简要介绍了NanoTime的特点并对当前主流静态时序分析工具与HSPICE的仿真精度作了对比,结合目前设计的SoC芯片全面介绍了NanoTime的应用流程及其优势,同时对遇到的问题及其解决方案做了说明。

1.0 概述

随着集成电路的制造工艺发展到90nm以及65nm,纳米级效应对时序的影响越来越显著。特别是对于定制数字逻辑,精确评估这些效应并分析出准确的时序信息显得尤为重要。对定制数字逻辑的传统分析方式是SPICE/FastSPICE仿真分析,但SPICE/FastSPICE需要大量的仿真激励以及长时间的仿真运行。而随着现在逻辑规模和设计复杂性的急剧增长,加上SPICE/FastSPICE动态仿真分析覆盖率较低的弱点,都会导致芯片良率的降低和开发周期的延长,寻求并推出新的分析方法显得尤为必要。

现代集成电路设计中,对某些特殊逻辑来说,完全定制流程会比通常的P&R流程可以获得更优时序和更小面积的回报。这对于我们目前设计的对性能、功耗、面积要求都比较高的SoC芯片来说尤其如此。另一方面,由于芯片的规模非常大,在选择设计流程的sign-off标准时都必须考虑服务器的运行时间和耦合噪声可能带来的影响。在之前的开发流程中,我们选择了PathMill作为时序分析工具。PathMill作为上一代标准的晶体管级的静态时序分析工具,很好满足了我们90nm工艺之前的芯片设计静态时序分析的需求。但是对于目前我们采用的65nm工艺的芯片来说,PathMill已经不能适应新工艺的要求,并且缺乏我们目前需要的分析噪声可能带来的潜在影响的能力,NanoTime的推出很好地弥补了这个需求。

1.1 NanoTime简介

NanoTime是PathMill面向90nm以及更高工艺水平的新一代替代工具。作为针对晶体管级电路的业内标准的静态时序分析工具,相比PathMill,NanoTime可以提供更高的精度、性能以及易用性,可以应对日益增

长的设计复杂性、RC互连影响、低电压和低功耗设计的需求,并致力于解决90nm及更高工艺带来的挑战。 作为PathMill的替代工具,NanoTime继承了PathMill的优点,但是在工具的使用方式上更类似于PrimeTime。NanoTime使用完全交互的shell环境,并且可以和PrimeTime进行SDC(Synopsys Design Constraints)命令共享。这使得有过PathMill和PrimeTime使用经验的工程师能快速地掌握NanoTime的使用方式。

尽管NanoTime和PathMill有着相似的功能,但是它们之间也有着显著的区别,主要体现在以下几个方面: l 能自动识别出更多更新的电路拓扑结构。 l 时钟的定义更加灵活,同时支持多种时钟定义。 l 对于未能正确识别的拓扑结构,提供更丰富的配置命令。 l 配置命令更加灵活,特别适合一些独特的电路结构。

l 可以识别更多类型的动态电路以及门控时钟逻辑,并支持多时钟动态电路的分析。

l 提供更多路径搜索时用户可控制的选项,譬如:只搜寻以某个点为终点的路径,或者只搜寻时钟路径而不管数据路径。

l 时序检查基于pin,而不是net。基于pin的时序检查精度更高,因为用户可以在指定的pin上定义时序检查而不是在一条net上最差的任意pin上。

l 产生.lib或者.db格式的静态时序模型,和其它时序分析工具有更好的兼容性;产生的时序模型不只携带了输入到输出的延迟信息,而且还携带了PathMill模型(.modeldb)中不包含的cap信息。

1.2 NanoTime基本分析流程

NanoTime分析流程包含五个的阶段(phase),每个阶段都以一个命令作为结束,该命令报告该阶段正确完成或者执行错误。所有的阶段都必须以特定的顺序完成,每一个阶段都必须成功结束才能进入下一个阶段。

NanoTime的基本分析流程如图1.1所示:

图1.1 NanoTime基本时序分析流程

Netlist阶段:设置搜寻路径和链接路径,使用register_netlist命令读入网表文件。在该阶段使用link_design命令读入设计数据并作为该阶段的结束。

Clock propagation and topology recognition阶段:在该阶段需要指定时钟类型以及任何NanoTime不能自动识别的拓扑结构。该阶段以check_topology命令结束,该命令对定义的时钟信号进行传播并识别电路包含的拓扑结构。

Timing constraint specification阶段:在该阶段需要指定输入/输出时序约束、时序期望、运行条件以及读入寄生参数数据。该阶段以check_design命令结束,该命令检查时序的要求和一致性。

Path tracing and simulation阶段:在该阶段, trace_paths命令用来运行正常的时序分析,extract_model命令用来创建时序模型,characterize_context命令用来提取设计的特征内容。

Analysis reporting阶段:NanoTime在该阶段报告时序分析的结果,用户可以使用report_paths / report_constraint等命令产生结果报告文件。

1.3 和HSPICE以及PrimeTime的仿真精度对比

在早期试用NanoTime的过程中,为了验证其仿真精度,我们搭建了一个简单的14级BUFFER串联的仿真电路,如图1.2所示。

图1.2 14级BUFFER串联电路示意图

在Chartered 65nm TT工艺条件下,我们分别采用HSPICE/PrimeTime/NanoTime三种分析工具对该电路进行了仿真分析,其中NanoTime分析分别采取了晶体管级分析和门级分析两种方式,分析结果见表1。 Path Delay

HSPICE

PrimeTim

e

Gate level

FàF(ps) RàR(ps)

292 268

334 304

326 293

Transistor level

319 285

NanoTime

表1 HSPICE/PrimeTime/NanoTime仿真分析精度对比

由表1中的对比分析可以得出以下两点结论:

l NanoTime工具的晶体管级分析比门级仿真分析更接近HSPICE的结果;

l 无论是门级还是晶体管级分析的结果,NanoTime的分析结果都要比PrimeTime的分析结果更加接近SPICE的结果;

在实际的电路对比仿真过程中,NanoTime的分析运行时间要比PrimeTime的分析运行时间稍长,但是无论是PrimeTime还是NanoTime,分析运行的时间都远远小于HSPICE仿真运行时间。

2.0 NanoTime在SoC时序分析中的应用

2.1 SoC的设计与分析概述

在我们的SoC芯片中,从时序分析的角度来看,主要包含了三大类逻辑:定制与综合逻辑、存储器阵列、IP模块。对于这三种类型的逻辑,我们采用了不同的时序分析方法。定制与综合逻辑是SoC中应用最广泛的,主要使用NanoTime进行时序分析并建模。存储器阵列采用HSPICE仿真并在确保时序满足要求后创建时序模型。在最后的SoC级全局时序分析时采用NanoTime进行层次化的分析,并将该分析结果作为最后的时序sign-off标准。

图2.1概括地显示了SoC的设计及时序分析的流程。在整个分析流程中,定制和综合逻辑执行的是纯粹的NanoTime的时序分析,包括pre /post-layout两个主要的分析阶段,并进行正常的时序分析和NanoTime SI的分析。而对于存储器阵列这类不适合进行NanoTime分析的模块,我们采用的是FastSPICE/SPICE仿真分析,并在确保时序结果满足要求的情况下创建时序模型。

图2.1 SoC设计分析流程示意图

在进行SoC全局级时序分析时,虽然PrimeTime在运行时间上有较大的优势,但基于NanoTime分析精度更高的考虑,我们仍然采用了NanoTime而不是PrimeTime进行分析。在全局分析时,底层的模块经过不同方式的时序分析,满足时序要求后被创建成同一格式的时序模型(.db),最后连同IP的时序模型一起提交到顶层进行NanoTime或者NanoTime SI的层次化分析。

2.2 NanoTime的应用流程

在NanoTime分析实际应用时,考虑到我们的SoC项目设计涉及到多个部门和众多设计人员的联合开发,为保证在NanoTime的分析过程保持相同的设置和检查标准,我们对NanoTime分析进行了流程化开发。 对NanoTime的流程化开发工作基于对各种时序分析需求的深入了解,并建立在对大量库单元进行电路实

验并配置的基础上的。在流程开发的早期,对SoC设计所使用的各种类型的库单元进行电路识别实验。对大部分NanoTime能自动识别的拓扑结构,并不需要配置命令,但我们在实验中也发现,NanoTime不能自动识别DFF结构,这就需要我们使用mark_*类的命令帮助NanoTime进行识别。同时,在我们的设计中还存在着很多定制的特殊单元,譬如动态电路单元,需要我们进行大量的配置实验以保证NanoTime能正确识别其拓扑结构并进行相应的检查。

除对库单元的进行电路实验配置外,对时钟系统的处理也是NanoTime分析流程化的重点工作。与通常的自动布局布线的时钟系统不同,为了满足高频率低偏斜时钟信号的要求,我们采用了分级全定制的时钟系统,通过HSPICE仿真给出时钟系统的network latency、clock skew等指标。在对NanoTime分析流程化时,我们并没有让NanoTime去分析计算时钟系统的真正延迟,而是把整个时钟系统作为一个理想的时钟系统,并设定时钟信号的延时等特性参数进行分析。这样就大大缩短了NanoTime处理时钟系统带来的时间消耗。

在完成电路图设计后,就可以进行前仿(pre-layout)分析,前仿分析结果并不能真正反映最终的时序状况,其价值在于可以在早期发现潜在的时序问题并加以解决,从而可以避免完成版图后发现严重的时序问题需要推倒重来的情况。在完成版图设计后,使用Star-RCXT进行RC和晶体管寄生参数的抽取,在我们的分析流程中,寄生参数文件采用的是DSPF格式,NanoTime通过使用read_parasitics命令来读取寄生参数文件并进行反标分析。

在对NanoTime分析进行流程化后,最终会产生一个简单的两步走的分析流程:prent和runnt,其中prent根据所加参数完成相应的分析环境建立和全局变量设置,runnt根据所加参数生成相应的运行脚本后运行NanoTime分析并对报告的进行处理。该流程可以根据不同的参数配置可以大致分为:pre-layout分析,post-layout分析,模块级分析,层次化分析几种分析模式,示例如下: n 模块级pre-layout和post-layout分析流程 prent –b BlockName [-post] runnt –b BlockName [-post]

n 层次化pre-layout和post-layout分析流程 prent –b BlockName –mkmodel [-post] runnt –b BlockName –mkmodel [-post] prent –b BlockName –usemodel [-post] runnt –b BlockName –usemodel [-post]

NanoTime分析流程化极大地提高了设计人员的时序分析工作效率,它使得设计人员不必花大量时间熟悉NanoTime分析的运行机制,而只需对常用的配置命令稍加掌握,然后输入流程命令并根据具体需要配上相应参数即可非常便捷地进行时序分析。在提供时序分析效率的同时,它也降低了因设计人员对NanoTime理解程度的差异带来的分析结果标准不一致的风险。

2.3 动态电路组合分析

NanoTime具备强大的动态电路分析能力,由于我们的SoC芯片内包含了相当数量的动态电路,所以这也是我们选择NanoTime作为SoC芯片主要的时序分析工具的重要原因之一。

图2.2是我们对常见的动态电路组合做的NanoTime时序分析模型,以确保在这种动态电路组合中不会漏报时序检查路径。如图2.2所示,该类动态电路组合的方式是ELATàDynamic(CK)àCATCHà Dynamic(NCK)àDFF/ELAT。

图2.2 常用动态电路组合时序分析示意图

在完成该动态组合的时序分析后,我把每一种时序检查都在图上作了标示。需要做特别说明的是:对应相同类型的时序检查只标示了其中的一条。通过对照NanoTime使用指南上对多米诺动态电路的分析说明,我们可以确保图2.2所示的动态电路组合的时序检查是完备的。

2.4 NanoTime SI分析

对于90nm工艺及以下的设计而言,噪声是一个不得不考虑的严重问题。而使用HSPICE之类的工具来分析大规模电路中的偶合噪声影响是不现实的。NanoTime Ultra版提供了分析耦合噪声对时序影响的强大功能。在进行NanoTime SI分析之前,需要在抽取寄生参数文件时保留耦合电容的信息。在进行耦合噪声对信号延时影响的分析时,NanoTime综合评估入侵线和受侵线之间的耦合电容、两者的驱动强度以及互相施加影响的窗口重叠程度等因素,然后经过多次的反复迭代分析,保证最后计算出耦合噪声对受侵线的延时影响是最悲观的情况。

我们用一个简单的反相器级联模型进行post-layout分析来说明NanoTime SI的分析结果。在时序报告中,可以使用report_paths –crosstalk_delta命令报出耦合噪声对每一级路径延时的影响,如图2.3所示:

图2.3 NanoTime SI分析结果示例

在图2.3所示的时序路径报告中,我们可以明显看到:对整条路径来说,NanoTime SI的分析结果比正常分析多了3ps的时序延时。当然,这只是一个很小的实验例子,而且其版图中也没有很长的互连线,所以耦

合噪声对该时序路径的影响相对比较小。但是在我们正常的时序分析中,对于规模大的模块,耦合噪声的影响会急剧增大。

在进行NanoTime SI分析时,分析运行的时间并不会比正常的时序分析增加很多。和增加的运行时间相比,基于NanoTime SI的分析结果而进行的风险评估无疑将会在产品的良率方面带来相当可观的收益。

2.5 常见的问题及解决方案

我们使用NanoTime经历了多个芯片的时序分析,在日常使用的过程,也遇到了大量的问题,以下举出一些问题和解决经验和大家分享。 1) 对模块的分析时间过长

随着电路规模的越来越大,我们经常遇到一些复杂的模块在进行NanoTime时序分析时运行时间长得不可接受。遇到这种情况,首先检查是否模块的规模过大,如果规模过大请考虑进行层次化的建模分析。如果模块的规模比较适中,请检查模块内的时钟信号数量和时钟类型是否过多。在NanoTime进行时序分析时,会对每一条时钟的路径进行搜索分析,模块内时钟信号过多会导致时序分析运行时间急剧增加。

总的来说,为了将NanoTime运行分析的时间保持在合理的范围内,我们建议对规模过大的模块进行拆分,并进行层次化的建模分析。同时应尽量减少时钟信号种类和数量,如果存在多个时钟器件并联驱动时钟信号的情况,建议通过配置命令只保留一条时钟通路上,这样既不影响路径搜寻的完备性,也可以使得运行分析的时间大大缩短。

2) 如何合理地进行层次化分析

众所周知,层次化时序分析能带来分析速度上的收益,但是也会带来分析精度上的损失。根据我们的经验,层次化分析带来的精度损失大约在5%左右。所以,如何进行合理的层次化时序分析是我们每个芯片进行分析前就要考虑的问题。

时序分析层次化的划分需要考虑以下几个主要因素:芯片的架构及设计人员分工,服务器的运算能力,各个层次设计的并行度。只有综合考虑这些因素,制定出合理的分析层次,才能取得分析时间和分析精度上折中平衡,才能保证整个芯片各个层次时序分析的顺利进行,才能使得时序分析在整个芯片设计过程起到推动作用而不是牵制作用。

3) 如何处理芯片的多种模式时序分析

现在的芯片往往都存在多种运行模块,在芯片的时序分析中,往往要求对每一种运行模式都要时序的评估和分析。以最常见的例子来说,一般的芯片中都会存在正常运行模式和扫描测试模式。在芯片中,这两种电路逻辑通常会有相当大部分互相交叠的情况,譬如共用时钟信号通路和时序器件等等。通常情况下扫描测试电路的频率都比较低,这样对扫描测试逻辑的时序分析检查标准也比较低。虽然也可以使用NanoTime支持的多模式分析方法,但是由于正常运行模式和扫描测试模式有着不同的时序要求,所以我们建议对这两种模块还是要分别进行时序分析和检查。

就我们的SoC芯片的时序分析来说,我们在进行正常运行模式的时序分析时,会通过配置命令屏蔽掉扫描测试部分的逻辑通路,使得正常运行模式的分析结果可以使用同一种时序检查标准。而在进行扫描逻辑时序分析时,我们也会通过配置命令屏蔽掉正常运行模式的逻辑,对分析的结果采用扫描模式的检查标准。这样,对两种运行模式逻辑的时序检查可以做到互不干扰。同时,由于对正常逻辑的时序分析是频繁的,是和设计进行交互迭代进行的,而对扫描逻辑的时序分析一般并不频繁,所以这种分模式进行时序分析的方法实际上是降低了时序检查的甄别难度,同时减少了整体的分析时间的。

3.0 结论及建议

在我们使用NanoTime进行时序分析两年多来,我们越来越认识到NanoTime是一款优秀的晶体管级静态时序分析工具。NanoTime继承了PathMill的优点并结合了PrimeTime交互式使用的方式,使其具有良好的易用性和兼容性,使得有过PathMill和PrimeTime使用经验的设计人员可以很快地掌握NanoTime的使

用方法。而NanoTime中的配置命令和产生的文件格式和Synopsys的其它系列工具保持了良好的兼容性。 更重要的是,NanoTime提供了强大的信号完整性(SI)的分析能力,使得90nm及以下工艺的用户可以比较容易的评估耦合噪声对时序带来的影响。对与采用定制流程的用户来说,NanoTime可以提供比较接近HSPICE的分析精度,同时具备高度智能的拓扑结构识别能力、并提供灵活的配置以及强大的动态电路分析能力,同时也能保证对最差时序路径全覆盖分析。

最后,从分析的精度来说,无论在前期的实验中,还是从我们的流片结果来看,NanoTime的时序分析结果无疑都是值得信赖的。

4.0 致谢

感谢Synopsys公司提供的这次交流机会! 感谢叶晨在日常工作中给予的理解、关怀和指导!

感谢钟晓林老师给予的殷切的督促和指导,否则我无法在繁忙的工作之余完成此文!

5.0 参考文献

1、《NanoTime and NanoTime Ultra User Guide》 Version 1.0, August 2009.

2、Lin Wei, Yao Gang, Ji Bingwu, Zhao Tanfu, 《Transistor Level STA and SI Analysis with NanoTime on Custom Digital Blocks》, SNUG 2009

本文来源:https://www.bwwdw.com/article/975r.html

Top