首页> 中国专利> 集成的仿真器与分析和优化引擎

集成的仿真器与分析和优化引擎

摘要

一种签核方法包括:访问电路的电路信息;使用分析和优化引擎对电路进行功率分析和优化以生成经优化的电路,所述功率分析和优化需要使用仿真器依据输入模式产生的电路行为文件来执行。对整个电路进行全面仿真,通常需要很长的时间。通过将仿真器与优化器集成在一起并且允许增量仿真和局部仿真,仿真处理本身以及整个签核处理的速度都将极大地加快。使用仿真器对经优化的电路的至少一部分进行仿真,该仿真使用同一输入模式来进行;向分析和优化引擎输出仿真结果。

著录项

  • 公开/公告号CN112560374A

    专利类型发明专利

  • 公开/公告日2021-03-26

    原文格式PDF

  • 申请/专利权人 深圳鸿芯微纳技术有限公司;

    申请/专利号CN202010863548.4

  • 申请日2020-08-25

  • 分类号G06F30/3308(20200101);

  • 代理机构11227 北京集佳知识产权代理有限公司;

  • 代理人李泽艳

  • 地址 518055 广东省深圳市南山区粤海街道高新区社区沙河西路1801号国实大厦16C

  • 入库时间 2023-06-19 10:24:22

说明书

相关申请的交叉引用

本申请要求于2020年6月3日提交的题为GLITCH POWER ANALYSIS ANDOPTIMIZATION ENGINE的美国临时专利申请第63/034,329号的优先权,该美国临时专利申请出于所有目的通过引用并入本文。

技术领域

本申请涉及半导体电路的功率分析、优化和仿真。

背景技术

随着诸如FinFET的半导体技术的新进展,电路泄漏功率大大降低。因此,动态功率成为电路总功耗中更重要的部分。

为了实现低功率设计,诸如布局布线(P&R)工具的实现工具应当在其优化流程期间考虑动态功率。动态功率是在电路部件(例如,逻辑门)激活时(例如,在上升或下降翻转期间)消耗的功率。由于逻辑门和互连线具有非零延迟,因此许多逻辑门在每个时钟周期内在逻辑门达到稳定逻辑状态之前可能会有多次翻转。由这些非功能性翻转触发的动态功率被称为毛刺功率(glitch power)。

为了降低动态功率(包括毛刺功率),现有的布局布线系统通常会对电路进行全面仿真并且将值更改转储(VCD)文件做为输出提供至分析和优化工具,对电路进行更改和优化。设计更改通常是迭代地进行的。因此,对优化的电路重新运行全面仿真,以对VCD进行更新,这样优化器可以对更改进行进一步的优化。

由于大规模的现代半导体设计,可能要对数十亿个逻辑部件进行全面仿真而且在计算上非常密集。仿真优化的迭代有时可能会花费若干天。因此,一种更有效的、并且支持分析和优化过程的仿真方法就显得非常必要。

发明内容

本发明的一个方面提供了一种签核系统,包括:一个或更多个处理器,被配置成:访问电路的电路信息;使用分析和优化引擎对所述电路进行功率分析和优化以生成经优化的电路,所述功率分析和优化使用输入模式来进行;使用仿真器对经优化的电路的至少一部分进行仿真,所述仿真使用同一输入模式来进行;以及向所述分析和优化引擎输出仿真结果,其中,所述分析和优化引擎与所述仿真器集成在一起;以及一个或更多个存储器,耦接至所述一个或更多个处理器,所述一个或更多个存储器被配置成向所述一个或更多个处理器提供指令。

所述分析和优化引擎经可以由应用编程接口(API)与所述仿真器进行通信。

所述输入模式可以从与所述电路相关联的初始项目数据中提取;所述输入模式从与所述电路相关联的所述初始项目数据中导出;或者所述输入模式由随机方式生成。

所述输入模式可以是随机模式,所述输入模式的特征基于与所述电路相关联的电路类型来确定。

所述输入模式可以是随机模式,所述输入模式的特征基于与所述电路相关联的电路类型来确定;以及所述电路类型通过分析所述电路来确定,或者所述电路类型由用户经由用户接口来指定。

所述仿真可以在时间、面积或者时间和面积两者上以增量方式进行。

进行所述仿真可以包括:限定与多个优化转变中的相应优化转变对应的多个局部窗区域;以及进行与所述多个局部区域对应的多个仿真;基于所述仿真的结果在所述多个优化转变中选择一个或更多个优化转变。

所述仿真可以是事件驱动的。

所述仿真可以是事件驱动的,并且仿真事件被存储在分层的时间轮集上。

响应于反事件,所述仿真器可以被配置成使由所述反事件指定的先前事件无效。

所述仿真由多个线程来进行。

本发明的另一方面提供了一种签核方法,包括:访问电路的电路信息;使用分析和优化引擎对所述电路进行功率分析和优化以生成经优化的电路,所述功率分析和优化使用输入模式来进行;使用仿真器对经优化的电路的至少一部分进行仿真,所述仿真使用同一输入模式来进行;以及向所述分析和优化引擎输出仿真结果,其中,所述分析和优化引擎与所述仿真器集成在一起。

所述分析和优化引擎可以经由应用编程接口(API)与所述仿真器进行通信。

所述输入模式可以从与所述电路相关联的初始项目数据中提取;所述输入模式从与所述电路相关联的所述初始项目数据中导出;或者所述输入模式被生成为随机模式。

所述输入模式可以是随机模式,所述输入模式的特征基于与所述电路相关联的电路类型来确定。

所述输入模式可以是随机模式,所述输入模式的特征基于与所述电路相关联的电路类型来确定;并且所述电路类型通过分析所述电路来确定,或者所述电路类型由用户经由用户接口来指定。

所述仿真可以在时间、面积或者时间和面积两者上以增量方式进行。

进行所述仿真可以包括:限定与多个优化转变中的相应优化转变对应的多个局部窗区域;以及进行与所述多个局部区域对应的多个仿真;基于所述仿真的结果在所述多个优化转变中选择一个或更多个优化转变。

所述仿真可以是事件驱动的。

所述仿真可以是事件驱动的,并且仿真事件被存储在分层的时间轮集上。

响应于反事件,所述仿真器可以被配置成使由所述反事件指定的先前事件无效。

所述仿真可以由多个线程来进行。

本发明的另一方面提供了一种非暂态计算机可读介质,包括计算机程序产品,所述计算机程序产品包括用于进行下述操作的计算机指令:访问电路的电路信息;使用分析和优化引擎对所述电路进行功率分析和优化以生成经优化的电路,所述功率分析和优化使用输入模式来进行;使用仿真器对经优化的电路的至少一部分进行仿真,所述仿真使用同一输入模式来进行;以及向所述分析和优化引擎输出仿真结果,其中,所述分析和优化引擎与所述仿真器集成在一起。

附图说明

在下面的详细描述和附图中公开了本发明的各种实施方式。

图1是示出用于提供针对半导体电路的功率分析、优化和仿真的系统的实施方式的框图。

图2是示出具有集成的仿真器与分析和优化引擎的系统的实施方式的框图。

图3是示出签核方法的实施方式的流程图。

图4描述了生成输入模式的处理的实施方式。

图5是示出局部部分仿真示例的图。

图6是示出用于维护仿真事件的分层时间轮实现方式的实施方式的图。

具体实施方式

本发明可以多种方式实现,包括如进程;设备;系统;物质的组合;包括在计算机可读存储介质上的计算机程序产品;和/或处理器,诸如被配置成执行存储在和/或由耦和的存储器提供的指令的处理器。在本说明书中,这些实现方式或本发明可以采取的任何其他形式可以被称为技术。通常,在本发明的范围内,所公开的处理的步骤的顺序可以更改。除非另有说明,否则被描述为被配置成执行任务的诸如处理器或存储器的部件可以被实现为下述部件:临时被配置成在给定时间执行任务的通用部件;或者被制造成执行任务的特定部件。如本文所使用的,术语“处理器”是指被配置成处理诸如计算机程序指令的数据的一个或更多个装置、电路和/或处理核。

下面提供了对本发明的一个或更多个实施方式的详细描述以及示出本发明的原理的附图。结合这样的实施方式描述本发明,但是本发明不限于任何实施方式。本发明的范围仅由权利要求书限制,并且本发明涵盖许多替换、修改和等效内容。为了提供对本发明的透彻理解,在下面的描述中阐述了许多具体细节。提供这些细节的目的是出于示例,在没有其中一些或全部具体细节的情况下,本发明仍然可以根据权利要求进行实践。出于清楚的目的,本文未详细描述在本技术领域中已知的与本发明有关的技术材料,防止本发明的重点被不必要地模糊。

诸如电路毛刺功率的动态功率很大程度上取决于输入模式。为了获得所有逻辑门的准确翻转信息,电路会经历数千到数百万次周期的以不同输入模式进行的仿真。可以将产生的仿真开关行为信息(例如,引脚上的翻转信息)进行保存以用作描述电路的“黄金值”。用于保存这种文件的一种流行格式被称为VCD(值更改转储)文件。目前,大多数签核(sign-off)功率分析工具都是通过读取VCD文件以进行功率分析。在现有的系统中,统计技术也经常被用来分析动态功率。然后,优化器使用分析结果来确定会降低功耗的电路更改(也称为优化转变),例如删除缓冲门、更改门的大小等。然而,统计技术可能会对引脚翻转黄金值引入不准确性。在多次优化转变之后,开关行为信息的不精确性会累积。为了使不准确性降低,在一定数目的优化转变之后,可以再次运行仿真以重新生成黄金值。考虑到现代半导体电路中门和状态的庞大数量,对经过优化转变的全电路重新运行仿真工具是非常耗时的并且会显著减慢整个签核处理。

公开了改进的签核系统。该系统包括分析和优化引擎以及集成的仿真器,所述系统被配置具有彼此通信的能力。仿真器被配置成进行全面仿真以及增量式仿真。

图1是示出用于提供针对半导体电路的功率分析、优化和仿真的系统的实施方式的框图。

明显地是,其他计算机系统架构和配置也可以用于进行功率分析、优化和仿真。包括如下所述的各种子系统的计算机系统100包括至少一个微处理器子系统(也被称为处理器或中央处理单元(CPU))102。例如,处理器102可以由单芯片处理器或者由多个处理器实现。在一些实施方式中,处理器102是控制计算机系统100的操作的通用数字处理器。使用从存储器110检索到的指令,处理器102控制输入数据的接收和操纵以及控制在输出装置(例如,显示器118)上的数据的输出和显示。在一些实施方式中,处理器102包括和/或用于提供功率分析功能、优化功能和仿真功能。

处理器102与存储器110双向耦合,存储器110可以包括:第一主存储装置,通常为随机存取存储器(RAM);以及第二主存储区域,通常为只读存储器(ROM)。如本领域所公知的,主存储装置可以用作通用存储区域和暂时存储器,并且主存储装置还可以用于存储输入数据和经处理的数据。除了用于在处理器102上操作的进程的其他数据和指令之外,主存储装置还可以以数据对象和文本对象的形式存储编程指令和数据。另外,如本领域所公知的,主存储装置通常包括基本操作指令、程序代码、数据和由处理器102使用的用于执行其功能的对象(例如,编程指令)。例如,存储器110可以包括下面描述的任何合适的计算机可读存储介质,这取决于数据访问需要是双向的还是单向的。例如,处理器102还可以直接且非常快速地检索经常需要的数据并且将经常需要的数据存储在缓存存储器(未示出)中。

可移动大容量存储装置112提供用于计算机系统100的附加的数据存储容量,并且可移动大容量存储装置112双向(读/写)或单向(只读)耦接至处理器102。例如,存储装置112还可以包括计算机可读介质,诸如磁带、闪存、PC卡、便携式大容量存储装置、全息存储装置和其他存储装置。例如,固定的大容量存储装置120还可以提供附加的数据存储容量。大容量存储装置120的最常见示例是硬盘驱动器。大容量存储装置112、120通常存储通常不被处理器102活跃使用的附加编程指令、数据等。应当理解,如果需要,可以将保留在大容量存储装置112和120中的信息以标准方式并入为作为虚拟存储器的存储器110(例如,RAM)的一部分。

除了提供处理器102对存储子系统的访问之外,还是使用总线114用于提供对其他子系统和装置的访问。如所示出的,这些可以包括显示监视器118、网络接口116、键盘104和指向装置106,以及辅助输入/输出装置接口、声卡、扬声器和根据需要的其他子系统。例如,指向装置106可以为鼠标、触控笔、轨迹球或平板电脑,并且指向装置106对于与图形用户接口进行交互是有用的。

网络接口116使得处理器102能够使用如所示出的网络连接耦合至另外的计算机、计算机网络或电信网络。例如,处理器102可以在执行方法/处理步骤的过程中通过网络接口116从另外的网络接收信息(例如,数据对象或程序指令)或者向另外的网络输出信息。通常表示为要在处理器上执行的一系列指令的信息可以从另外的网络接收以及向另外的网络输出。可以使用接口卡或类似装置以及由处理器102实现(例如,在处理器102上执行/进行)的适当软件用于将计算机系统100连接至外部网络以及根据标准协议来传送数据。例如,本文公开的各种处理实施方式可以在处理器102上执行,或者可以与共享处理的一部分的远程处理器一起在诸如因特网、内联网或局域网的网络上执行。附加的大容量存储装置(未示出)也可以通过网络接口116连接至处理器102。

辅助I/O装置接口(未示出)可以与计算机系统100一起使用。辅助I/O装置接口可以包括使得处理器102能够发送以及更典型地从其他装置接收数据的通用接口和定制接口,其他装置诸如麦克风、触敏显示器、换能器卡读取器、磁带读取器、语音或手写识别器、生物特征识别读取器、摄像装置、便携式大容量存储装置和其他计算机。

另外,本文公开的各种实施方式还涉及具有计算机可读介质的计算机存储产品,该计算机可读介质包括用于执行各种计算机实现的操作的程序代码。计算机可读介质是可以存储其后可以由计算机系统读取的数据的任何数据存储装置。计算机可读介质的示例包括但不限于上面提及的所有介质:磁性介质,例如,硬盘、软盘和磁带;光学介质,例如,CD-ROM磁盘;磁光介质,例如,光盘;以及特殊配置的硬件装置,例如,专用集成电路(ASIC)、可编程逻辑器件(PLD)、以及ROM装置和RAM装置。程序代码的示例包括例如由编译器生成的机器代码,或者包含可以使用解释器执行的更高级别代码(例如脚本)的文件。

图1所示的计算机系统只是适用于与本文公开的各种实施方式一起使用的计算机系统的示例。适用于这种用途的其他计算机系统可以包括附加的或更少的子系统。另外,总线114示出了用于链接子系统的任何互连方案。也可以利用具有不同配置的子系统的其他计算机架构。例如,在一些实施方式中可以使用基于云的架构,其中分析功能、优化功能和仿真功能由云平台提供,并且显示接口和交互接口由客户端提供。

图2是示出具有集成的仿真器与分析和优化引擎的系统的实施方式的框图。分析和优化引擎有时被称为优化引擎或OPT引擎。在该示例中,系统200被使用于其中半导体设计经历分析、优化和仿真的多次迭代以减少功耗的签核过程中。该系统包括优化引擎202和仿真器204。优化引擎202对电路进行功率分析并且基于分析结果对电路进行优化转变(optimization move),以改善电路的功耗。优化引擎202的示例是鸿芯微纳技术有限公司(Giga Design Automation Inc.)的AgudaTM系统。也可以使用其他优化工具。

初始项目206可以包括初始电路的逻辑结构的电路信息,例如具有逻辑部件的网表。在各种实施方式中,初始项目还可以包括开关行为信息,例如:时序信息、输入模式、输出波形、设置信息(例如,运行时配置信息、延迟模型、时序约束等)。出于讨论的目的,在下面的示例中,初始开关行为信息以VCD文件的形式提供。VCD是由设计工具生成的用于转储文件的基于ASCII的格式,并且在IEEE标准1364-1995和IEEE标准1364-2001中限定。在替选实施方式中,可以不受限制地使用FSDB(快速信号数据库)、WLF(波形日志文件)、SHM(激励文件)、VPD(二进制值转储)、SAIF(开关行为接口格式)文件或者任何其他信号/开关行为报告。签核功率分析工具可以读取VCD文件或者其他文件中进以进行功率分析。还可以基于针对仿真器的直接输出进行功率分析,而无需依赖VCD文件。基于初始项目206,优化引擎可以进行分析和优化,以生成其中初始电路的逻辑和/或布局被调整成降低功耗的经优化的项目208。

仿真器被配置成对电路的行为进行仿真,给定的仿真设置信息包括电路信息(例如,电路的网表)、输入模式(也被称为输入激励或输入向量)和设置信息(例如,运行时环境、延迟模型、时序约束等)。在一些实施方式中,仿真器被实现为基于Verilog的仿真器。该仿真器实现下述标准的仿真功能:例如,仿真给定一组输入的电路操作;以及有助于优化引擎操作并且提高仿真器效率的附加功能。在该示例中,仿真器支持多种操作模式。在全面模式下,仿真器生成关于电路的仿真开关行为信息(例如,数十亿个事件),并且对仿真的开关行为信息进行存储(例如,作为VCD文件)。该模式创建大量仿真数据,所述仿真数据可以用于由下游工具执行的进一步功率分析(例如,毛刺翻转分析)。在增量模式下,仿真器与优化引擎通信并且以增量方式(例如,以时间和/或面积的增量)进行仿真,以生成输入模式并且收集输出波形数据。如将在下面更详细地描述,仿真器和优化引擎可以通过应用编程接口(API)进行通信和交互。可以使用API交换控制消息和仿真结果。增量仿真比全面仿真快得多,这是因为增量仿真需要的仿真计算集要少得多。在该示例中,仿真器在全面模式下进行一次预优化仿真环节,并且在增量模式下进行一次或多次附加的后优化仿真环节。

仿真器被配置成使用初始项目来获得仿真设置信息。如果初始项目不具有运行仿真所需的所有输入信息(例如,输入模式丢失),则仿真器可以确定完整的输入数据(例如,通过从原始种子VCD中提取或导出输入模式,或者通过使用随机产生输入模式)。

一旦获得设置信息,仿真器将对全电路进行预优化仿真。在运行预优化仿真环节时,仿真器和原始VCD使用的设置信息的差异将导致仿真器的输出与初始项目中包括的输出不同。基于输出的差异,仿真器可以导出设置信息,保存所导出的设置信息,并且在后续仿真中一致地使用相同的设置信息。由于预优化仿真是针对全电路进行的,因此预优化仿真往往是漫长的过程(例如,10小时至20小时)。

一旦优化器运行了其分析和优化,该优化器就会通知仿真器经受优化的区域。此后,仿真器可以以增量方式运行后优化仿真,以在指定的时间段内提供关于电路的子部分的更新的仿真信息。因为仅针对电路的一部分运行增量仿真并且通常仅持续较短的时间段,所以运行增量仿真所需的计算量要少得多并且计算可以立即完成。这是对其中每次优化器进行更新时都需要运行全面仿真的现有系统的巨大改进。

在该示例中,优化引擎202和仿真器204被集成在一起。换句话说,优化引擎202和仿真器204被配置成具有彼此通信的能力。具体地,仿真器被配置成向优化引擎发送仿真结果,并且优化引擎被配置成控制仿真器执行某些动作,例如,启动、停止、暂停、恢复、生成输入激励、输出仿真结果、获得仿真结果等。控制功能可以在不需要VCD文件的情况下执行。在一些实施方式中,仿真器通过提供应用编程接口(API)来支持通信。可以使用编程语言功能调用以及基于事件/消息的各种通信协议和/或库(例如,Tcl/Tk)来实现API。如下面将更详细描述的,响应于API调用,仿真器允许以逐步的方式对优化引擎进行增量仿真(例如,以指定的时间周期仿真电路的状态),而无需从逻辑时间0开始重新运行仿真会话。仿真器还允许针对局部变化进行局部仿真以及对优化电路中针对局部窗区域的功率进行评估。换句话说,优化引擎可以进行一些优化转变(例如,在一个区域中改变几个门),然后请求仿真器返回几个时间步长至在时间Tg处较早的事件并且基于被改变的电路在时间Tg处开始再次运行仿真。仿真还可以仅对电路中包括变化的局部区域运行。

图3是示出签核方法的实施方式的流程图。可以由诸如200的系统来进行处理300作为预优化仿真或后优化仿真。

在302处,访问电路的电路信息。电路信息包括:高级别逻辑信息诸如网表;以及任何可能的情况下可以用于计算电路时序的低级别布局信息和/或其他相关信息。在一些实施方式中,可选地包括经仿真的开关行为(例如具有输入波形的VCD文件)。可以通过从文件读取、从数据流读取、从数据源输入或其他适当的技术来访问电路信息。

在304处,使用分析和优化引擎对初始电路进行功率分析和优化,以生成经优化的电路。使用输入模式(也被称为输入向量)来执行功率分析和优化。图4描述了生成输入模式的处理的实施方式。可以通过诸如Aguda

在306处,使用仿真器使用同一输入模式对经优化的电路的至少一部分进行仿真。可以对整个电路进行仿真,例如,在仿真为预优化仿真的情况下。也可以以增量方式(例如,针对有限数目的时间步长和/或对经优化的电路的局部区域)进行仿真,以减少计算量。在一些实施方式中,使用全面仿真用于预优化仿真,而使用增量仿真用于后优化仿真。可以基于不同的优化场景进行多个仿真。

在308处,输出一个或更多个仿真结果。在一些实施方式中,将仿真结果输出至OPT引擎。仿真结果可以用于初始优化,或者仿真结果可以在优化完成后用作对某些优化转变是否有效以及/或者确定是否接受一个或更多个优化转变的组的验证。例如,可以仿真多个优化场景以获得多个仿真结果,所述多个仿真结果被发送至优化引擎。OPT引擎对仿真结果进行比较并且选择用于提供最佳仿真结果的优化转变的组。可替选地,仿真器可以进行结果的比较并且向OPT引擎发送关于比较的信息。保留选定的优化转变的组并且丢弃其他的优化转变。

在该示例中,分析和优化引擎与仿真器被集成在一起,因此它们可以以上面结合图2描述的方式彼此交互地通信。除了执行预优化仿真和后优化仿真之外,还可以在优化处理期间运行仿真,从而响应优化引擎查询并且对可能的转变选择提供反馈。

304至306可以同时进行。例如,仿真器不需要等待全优化完成。相反,优化器可以提供优化转变的组,调用仿真器以对优化电路的部分进行增量仿真,基于仿真结果对要保留哪些优化转变进行评估,并且继续进行进一步的优化。处理300可以重复多次。

仿真器被配置成能够利用各种类型的输入数据进行仿真。使用输入数据用于生成用于运行仿真所使用的输入模式(也被称为输入激励、输入向量、仿真事件或翻转数据)。优选地,输入模式表示设计的典型功率特性。

图4是示出生成输入模式的处理的实施方式的流程图。可以由诸如204的仿真器执行处理400以获得仿真设置信息。

在402处,确定输入数据(例如,初始项目中包括的原始种子VCD)是否包括模仿实际应用中的使用场景的预定义输入模式。如果输入数据包括模仿实际应用中的使用场景的预定义输入模式,则在406处仿真器从输入数据中提取输入模式数据,并且在412处仿真器提供用于运行仿真的输入模式。来自使用这种类型的输入数据的仿真运行的输出应当与初始设计的输出匹配。然而,一旦优化器进行了优化转变,仿真器的输出就会偏离原始的VCD输出。

如果输入数据不包括来自初始设计的原始种子VCD的输入模式,则在404处确定是否可以导出输入模式信息。如果可以导出输入模式信息,则在408处从输入数据导出输入模式信息。特别地,如果原始种子VCD仅具有输出数据(例如,原始种子VCD输出逻辑值序列),则可以使用这样的输出数据以通过诸如针对组合逻辑的回溯和反向传播的约束满足技术来导出输入逻辑值序列。在一些实施方式中,可以使用BBD引擎和/或SAT引擎来实现约束满足技术并且导出输入逻辑值序列。在一些实施方式中,应用诸如快速符号仿真或部分状态机展开的形式验证方法,以基于原始种子VCD输出逻辑值序列来重新生成输入模式的序列。

在一些情况下,不存在可用的输入数据/VCD数据,或者无法从输入数据中提取输入模式信息,或者无法从输入数据/VCD数据导出输入模式信息(例如,由于缺少输出数据或者因为用于推导的技术需要复杂的计算)。在这种情况下,在410处生成随机输入向量,并且在412处提供随机输入向量作为输入模式。优先地选择符合电路的特性的随机生成的输入向量以。例如,在功能级别,USB电路的随机输入和PCIe电路的随机输入实际上将由于设计的不同特性而具有不同的数据模式。在实现方式级别,数据路径引脚和时钟路径引脚实际上也将具有不同的数据模式。为了促进随机模式的生成,在一些实施方式中,存储了数据模式和对应电路类型的预定义映射。在一些实施方式中,仿真器分析电路架构并且预测数据分布,确定与设计相关联的电路类型,然后基于所确定的电路类型来选择相应的数据模式。在一些实施方式中,向用户提供用户接口,以输入电路类型和/或期望的输入模式。在一些实施方式中,使用所述技术的组合。

当生成针对仿真器的随机输入模式时,仿真继续运行,只要输入模式为非零即可。仿真运行越长,在生成VCD时的精度就越高。然而,有时仿真不需要长时间运行以达到所期望的精度。因此,在一些实施方式中,使用自动翻转率收敛检查器来监视翻转率,并且在确定每个观察到的引脚的翻转率正在收敛和稳定时停止仿真。

对于给定的引脚,翻转率R被测量为:

R=TG

翻转率R应当随时间收敛。换句话说,仿真运行越长,翻转率被估计的越准确。自动翻转率收敛检查器测试翻转率随时间的变化。当翻转率在特定时间段内的变化满足阈值时,确定已经达到收敛,并且仿真可以停止。在一些实施方式中,通过API调用从优化工具内部停止仿真。

在一方面,仿真被配置成以增量方式对最新的设计变更的功率而不是对全面设计的功率进行评估。增量仿真能力加速了仿真以及功率分析,这是因为可以将任何优化更改应用于设计,然后立即将仿真恢复到优化步骤。在一些实施方式中,仿真引擎被配置成允许仿真运行停止、暂停和恢复。这可以通过使用具有回调函数的特定API(例如,基于消息和/或事件)来实现,所述回调函数提供仿真约束(例如,增量时间步长、所选择的逻辑门的评估窗等)并且使仿真代码停止、暂停或恢复。在一些实施方式中,仿真引擎被配置成能够返回至先前状态(例如,先前的仿真时钟时间或先前事件)。这可以通过下述来实现:保持对时间和/或事件以及电路的相应状态的跟踪;以及提供具有使仿真代码返回至期望的先前状态的回调函数的API。

在一些实施方式中,仿真器被实现成进行事件驱动的仿真(也被称为离散仿真)。事件与时间、状态和位置(例如,设计中的哪个引脚)关联。仿真被配置成响应控制事件并且根据控制事件指定的时间、状态和位置来进行仿真。在一些实施方式中,实现反事件,以指定要被无效的先前事件。仿真器还被配置成响应反事件并且选择性地擦除先前事件。例如,反事件可以指定时间t3、引脚4、状态0。响应于该反事件,仿真器将返回至时间t3,擦除引脚4处的先前指定的事件,并且将引脚4的状态设置为当前已知值,然后在时间t3在引脚4处开始以更新的状态继续运行仿真。

在一些实施方式中,反事件终止了在预测未来事件时做出的不正确仿真。例如,当空闲线程正在等待其他线程时,所述空闲线程可以通过向门输入两个可能的输入值(1和0)来运行针对未来的额外仿真并且获得导致未来结果的两个可能路径。当先前的依赖线程完成其处理并且将实际结果(例如,实际输入值为1)提供至空闲线程时,空闲线程将针对由正确的实际输入产生的路径继续运行仿真,但是使用反事件来终止针对由不正确输入产生的路径(例如,由输入值0生成的路径)的仿真。

在另一方面中,仿真器被配置成以增量方式对电路设计上的局部区域的功率进行评估。OPT引擎可以进行许多优化转变,例如移动门的位置、调整门的大小、删除缓冲门等。每个更改都会影响电路中的其他门。对每个更改或更改的组合运行全仿真在计算上将是非常昂贵的。为了减少所需的计算量,对于优化转变,将受影响的门的小区域指定为局部窗区域。该规范是基于对哪些门受到影响的初步猜测并且不需要精确性。仿真器对局部窗区域进行仿真,并且将得到的功率与预仿真值的功率进行比较。如果转变没有导致功率改善或改善的量低于阈值,则该转变被丢弃。反事件可以被生成为使仿真状态回到优化转变进行之前的点。如果该转变致使了改善,则该转变被保留并可以被并入至对较大区域的另外仿真中。可以通过对局部区域中的优化转变进行增量评估来削减大量的转变,而不必运行昂贵的大规模仿真或全面仿真。

图5是示出局部部分仿真示例的图。在该示例中,多个OPT转变是可能的。例如,U1可以增大尺寸,以及U2可以缩小尺寸。因此,指定了多个局部窗区域。局部窗区域402被指定成包括U1和受影响的门U3。局部窗区域404被指定成包括U2和受影响的门U3。在这两种情况下,局部窗区域都维持在很小的范围,因此即使U4可能受到更改的影响,在初始窗选择中也不考虑U4。从局部窗内生成的事件可以通过扇出锥进行进一步传播。因此,只有当U4在其输入之一处接收到将导致延迟或在其输出处的值更改的传播事件时才会对U4进行评估。在局部窗区域以交互处理的方式运行仿真,并且选择一个或更多个优化转变。具体地,选择致使期望的功率改善量的一个或更多个优化转变,而其余的优化转变被丢弃。在一些实施方式中,如果两个优化转变致使功率改善,则对改善的相对量进行比较,并且致使较大改善的转变将被保留。下一优化仿真迭代可以包括更大的窗区域。

仿真是事件驱动的。仿真器对事件进行调度并且对所述事件进行评估直到所有事件都被处理为止。事件被定时和排序。例如,假设在t=4处,在门G1的输入引脚1处发生事件e1。门具有为3的延迟。因此,在时间t=4+3处,在同一门的输出引脚2处发生另外事件e2。此外,在t=5处,在门G2的引脚1处存在事件e3。这些事件需要进行排序,以便它们在正确的时间以正确的顺序(即,按照e1、e3、e2的顺序)发生。仿真器的典型实现方式使用事件列表,这会因为可能存在要排序和维护的数十亿个事件而是昂贵的。

图6是示出用于维护仿真事件的分层时间轮实现方式的实施方式的图。

时间轮602至606是以分层结构来组织的。最低级别是主轮602,下一级别是超级时间轮604,并且最高级别是未来轮606。在其他实施方式中可以使用其他结构/附加结构。主时间轮602上的每个时隙对应于一个时间单位并且用于存储在该时间发生的事件。超级时间轮604上的每个时隙代表整个主轮。未来轮606上的每个时隙代表整个超级时间轮。例如,主时间轮可以具有表示时间单位1至1000的1000个时隙。每个时隙用于存储将在相应时间周期期间发生的事件。超级时间轮也具有1000个时隙,并且具有对应于针对在时间单位1至1,000,000期间发生的事件的1000个主时间轮的存储。未来时间轮也具有1000个时隙,并且具有对应于针对在时间单位1至1,000,000,000期间发生的事件的1000个超级时间轮的存储。在其他实施方式中可以使用不同数目的时隙和不同数目的分层级别。

当仿真器运行时,主轮转动,并且从主轮上表示当前时间的时隙中拉出事件并且对事件进行处理。在当前时隙中的所有事件都进行了处理的情况下,主轮再次转动以使下一个时隙成为当前时隙。事件可以导致未来事件,并且这样的未来事件被放置在主轮上相应的时隙处。例如,主时间轮当前在时隙100(100个时间单位)处,并且正在处理的事件对应于门的具有2个时间单位的延迟的输入。该事件可以在时间102处导致两个附加事件。因此,这些事件在时隙102(时间102)处被添加至主时间轮。如果事件是针对到主时间轮不具有可以存储该事件的时隙(例如,在时间单元1100处)的未来为止的时间生成的,则主时间轮将该事件传递至超级时间轮,以放置在适当的时隙中(例如,与时间单元1001至时间单元2000对应的时隙)。以这样的方式,超级时间轮用作主时间轮的溢出。类似地,未来轮用作超级时间轮的溢出。当主轮完成转动时,所有事件都应当被处理。当主时间轮上的所有事件都被处理并且时隙为空时,存储在超级时间轮上的下一时隙中的事件被传送至主时间轮上,放置在主时间轮上要被处理的适当时隙中。通过使用分层时间轮,可以存储事件而不必进行排序,并且实际上保证了存在用于所有事件的足够的存储空间。可以使用两个多线程缓存来处理传入的事件和传出的事件。

在另一方面,仿真器实现了多线程仿真事件调度器。电路被划分成由多个线程进行处理。划分是以使分区间通信和同步最小化的方式完成的。特别地,电路被划分为子模块,其中,每个子模块可以由单独的线程来处理。针对同步关系和依赖关系检查子模块中的电路。在一些实施方式中,这是通过检查每个元素的扇出并且确定该元素如何影响其他模块来完成的。如果存在过多的依赖关系,则对一个子模块的处理可能会延迟,这是因为需要等待另外的依赖子模块完成处理。如果依赖关系的数目超过预先指定的阈值,则将子模块重新分组。

一些依赖关系和同步可能是不可避免的。例如,假设线程1和线程2在时间周期t处正在处理针对单独子模块的事件。线程2已经完成处理其当前事件并且准备好处理时间周期t+1中的事件,而线程1仍正在处理时间周期t中的事件。因为线程2需要来自线程1的输入,因此线程2需要等待线程1完成处理。

在一些实施方式中,仿真器以同步模式操作,其中,管理器线程控制仿真时钟,不断地检查线程的状态,并且在适当时转动时间轮以获得事件。以上面的示例为例,当所有线程都在时间t1处完成处理事件时,管理器线程将主时间轮转动至与t+1对应的时隙。当t+1时隙中的所有事件都被处理时,管理器线程将主时间轮再次转动至t+2,依此类推。

在一些实施方式中,仿真器以异步模式操作,其中,任何线程都可以执行管理任务。例如,当线程2在t中完成处理事件时,线程2将与其他线程一起检查以确定是否仍存在处理针对时间t的事件的线程,如果不存在处理针对时间t的事件的线程,则线程2将时间轮转动至t+1,以使事件可用于处理;如果存在处理针对时间t的事件的线程,线程2将等待其他线程完成处理。

描述了集成的签核工具。通过将仿真器与优化器集成在一起并且允许增量仿真和局部仿真,仿真处理本身以及整个签核处理的速度都将极大地加快。

虽然出于清楚理解的目的,已经详细描述了前述实施方式,但是本发明不限于所提供的细节。存在实现本发明的许多替代方法。所公开的实施方式是说明性的而非限制性的。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号