CN112100952A - 一种集成电路后仿真方法、装置、电子设备及存储介质 - Google Patents
一种集成电路后仿真方法、装置、电子设备及存储介质 Download PDFInfo
- Publication number
- CN112100952A CN112100952A CN202010963765.0A CN202010963765A CN112100952A CN 112100952 A CN112100952 A CN 112100952A CN 202010963765 A CN202010963765 A CN 202010963765A CN 112100952 A CN112100952 A CN 112100952A
- Authority
- CN
- China
- Prior art keywords
- simulation
- module
- file
- sub
- top layer
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/327—Logic synthesis; Behaviour synthesis, e.g. mapping logic, HDL to netlist, high-level language to RTL or netlist
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/32—Circuit design at the digital level
- G06F30/33—Design verification, e.g. functional simulation or model checking
- G06F30/3308—Design verification, e.g. functional simulation or model checking using simulation
- G06F30/3312—Timing analysis
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
本申请涉及一种集成电路后仿真方法、装置、电子设备及存储介质,属于集成电路设计技术领域。该方法包括:获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数,其中,顶层和各个子模块各自对应的网表彼此独立且相互不同;针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果,以及利用顶层对应的仿真参数对顶层进行后仿真,得到顶层的仿真结果。由于顶层和各个子模块在进行后仿真时是基于各自独立的网表进行的,通过将原有整体仿真进行拆分,拆分后各部分可以并行进行仿真,显著提升芯片的后仿真速度,使得可以在芯片流片前充分验证时序功能正确性,从而降低芯片成本。
Description
技术领域
本申请属于集成电路技术领域,具体涉及一种集成电路后仿真方法、装置、电子设备及存储介质。
背景技术
随着微电子设计技术的发展,其电路设计的规模与逻辑复杂度也日益增加,导致集成电路设计工具所花费的时间越来越长,使得层次化设计流程应运而生。所谓层次化设计流程是指将整个设计对象划分为多个子模块来进行分层次设计,以便将庞大的工作量划分成几个部分同时展开设计,最后再将各个子模块的设计与顶层联合起来,以节省工具运行和修改所花费的时间。在设计的过程中,需要考虑各层次之间的关系,如顶层与各底层子模块的关系、层次内部的优化等等,使得最终各个模块达到其各自设计要求的同时,满足顶层设计的要求。
其中,在集成电路的设计过程中,仿真与验证是一个重要的环节,是检查所涉及的电路是否符合要求必不可少的一环。仿真可以分为功能前仿真和时序后仿真,一个完整的电路设计过程,应该包括功能前仿真和时序后仿真两个过程。功能前仿真是针对寄存器传输级(Register Transfer Level,RTL)的仿真,目标是分析电路的逻辑关系的正确性,仿真速度快。时序后仿真是门级网表的仿真,是将电路的门延迟参数和各种电路单元之间的连线情况考虑在内后进行仿真,其结果可以判断时序是否正确,仿真的结果直接影响功耗评估,电压降(IR drop)分析的准确性等。
针对时序后仿真,传统的做法是将整个门级网表放到片上系统(System On Chip,SOC)的仿真环境去做仿真,仿真的时候读入标准延时格式文件(Standard Delay Format,SDF),修改部分SOC的仿真环境,通过施加激励和监控网表的输出和内部信号来判断仿真是否正确。虽然该方法可以很好地处理中小规模的电路,但处理超大规模的仿真电路时,存在仿真时间长的问题,使得无法在芯片流片(Tape out)前提供快速信号数据库(Fast SignalDatabase,FSDB)文件,以便进行精确的功耗评估和IR drop的分析,导致后端在实现的时候需要留有足够的余量,间接影响到芯片的成本。
发明内容
鉴于此,本申请的目的在于提供一种集成电路后仿真方法、装置、电子设备及存储介质,以改善现有后仿真方法对大规模集成电路进行后仿真,存在仿真时间长的问题。
本申请的实施例是这样实现的:
第一方面,本申请实施例提供了一种集成电路后仿真方法,包括:获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数,其中,顶层和各个子模块各自对应的网表彼此独立且相互不同;针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和快速信号数据库FSDB文件,以及利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。本申请实施例中,在进行后仿真时,通过获取顶层仿真所需的包括网表在内的仿真参数对顶层进行后仿真,以及获取子模块仿真所需的包括网表在内的仿真参数对该子模块进行后仿真,由于顶层和各个子模块在进行后仿真时是基于各自独立的网表进行的(使得各子模块和顶层可以并行进行仿真),通过将原有整体仿真进行拆分,拆分后各部分可以并行进行仿真,显著提升芯片的后仿真速度,缩短后仿真时间,使得可以在芯片流片前充分验证时序功能正确性,并产生精确的FSDB文件用于后续流程分析,减少设计中预留的余量,从而降低芯片成本。
结合第一方面实施例的一种可能的实施方式,获取各个子模块各自仿真所需的包括网表在内的仿真参数的步骤,包括:针对每一个子模块,获取该子模块对应的模块测试文件、输入激励和输出参考值、模块网表以及模块标准延时格式SDF文件;相应地,利用该子模块对应的仿真参数对该子模块进行仿真,包括:对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;根据所述SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。本申请实施例中,通过获取各个子模块各自对应的模块测试文件、输入激励和输出参考值、模块网表以及模块SDF文件在内的仿真参数来进行仿真,在保证仿真能正常进行的同时,又能并行的对各个子模块进行仿真,相比于传统的整体仿真,由于仿真电路规模变小,显著缩短了仿真时间。
结合第一方面实施例的一种可能的实施方式,获取该子模块对应的模块测试文件、输入激励和输出参考值的步骤,包括:获取所述集成电路的网表、标准寄生参数交换格式SPEF文件、标准设计约束SDC约束文件、寄存器传输级RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件和用于抓取该子模块的输入激励和输出参考值的脚本;利用抓取该子模块的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块的所述输入激励和输出参考值。本申请实施例中,通过根据获取的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例,便可快速得到各个子模块各自对应的模块测试文件、输入激励和输出参考值,通过将各个子模块仿真时的所需的参数进行分离,使模块的仿真可以并行化,从而提高了仿真效率。
结合第一方面实施例的一种可能的实施方式,获取各个子模块各自仿真所需的包括网表在内的仿真参数的步骤,包括:针对每一个子模块,获取该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件,其中,所述寄存器扫描链信息包含将该子模块中的各个寄存器按照扫描测试链的顺序提取的指定时刻的寄存器值;相应地,利用该子模块对应的仿真参数对该子模块进行仿真,包括:对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;根据所述模块SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,以及根据所述寄存器扫描链信息对所述仿真电路中的寄存器进行赋值,并运行;在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。本申请实施例中,获取各个子模块各自仿真所需的模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件,在保证仿真能正常进行的同时,又能并行的对各个子模块进行仿真,同时,通过寄存器扫描链信息(包含将该子模块中的各个寄存器按照扫描测试链的顺序提取的指定时刻的寄存器值)对仿真电路中的寄存器进行赋值,以跳过初始化,可以节约进行初始化的时间,从而进一步提高了仿真效率。
结合第一方面实施例的一种可能的实施方式,获取该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值的步骤,包括:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件、用于抓取该子模块指定时刻的输入激励和输出参考值的脚本,以及根据所述集成电路的网表、所述SDC约束文件,得到用于抓取该子模块指定时刻的寄存器扫描链信息的脚本;利用抓取该子模块指定时刻的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块指定时刻的所述输入激励和输出参考值,以及利用所述抓取该子模块指定时刻的寄存器扫描链信息的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的指定时刻的寄存器值,得到该子模块指定时刻的寄存器扫描链信息。本申请实施例中,通过根据获取的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例,便可快速得到各个子模块各自对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值,通过获取各子模块仿真的参数,使仿真并行化,从而提高了仿真效率,同时利用该寄存器扫描链信息在仿真的时候对寄存器进行赋值,以跳过初始化,能进一步提高仿真效率。
结合第一方面实施例的一种可能的实施方式,获取所述顶层仿真所需的包括网表在内的仿真参数的步骤,包括:获取所述顶层的顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件;相应地,利用所述顶层对应的仿真参数对所述顶层进行后仿真,包括:对所述顶层网表、所述顶层测试文件进行编译生成仿真电路可执行文件;根据所述顶层SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;在运行的过程中,将所述所有子模块的输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。本申请实施例中,通过获取顶层仿真所需的顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件来对顶层进行后仿真,通过将各个子模块与顶层的关系也纳入了考虑内,保证了顶层仿真的正确性。
结合第一方面实施例的一种可能的实施方式,获取所述顶层的顶层测试文件、所有子模块的输入激励和输出参考值的步骤,包括:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到用于抓取所有子模块的输入激励和输出参考值的脚本以及各个子模块各自的输入输出IO延时信号和对应的时钟域信号;根据各个子模块各自的IO延时信号和对应的时钟域信号生成用于对仿真流程起控制作用的所述顶层测试文件;利用所述抓取所有子模块的输入激励和输出参考值的脚本去获取所述RTL代码以及运行所述前仿真测试用例时产生的数据,得到所述所有子模块的输入激励和输出参考值。本申请实施例中,根据获取的所述集成电路的网表、SPEF文件、SDC约束文件得到用于抓取所有子模块的输入激励和输出参考值的脚本以及各个子模块各自的IO延时信号和对应的时钟域信号,然后根据各个子模块各自的IO延时信号和对应的时钟域信号生成用于对仿真流程起控制作用的顶层测试文件,以及抓取所有子模块的输入激励和输出参考值的脚本去获取述RTL代码以及运行所述前仿真测试用例时产生的数据,便可得到所有子模块的输入激励和输出参考值,由于顶层仿真所需的参数是综合了各个子模块的各自的输入激励和输出参考值,以及各个子模块各自的IO延时信号和对应的时钟域信号而得到的,保证了顶层仿真的正确性,另外,在得到各个子模块各自的输入激励和输出参考值以及IO延时信号和对应的时钟域信号的同时,无需额外花时间便可得到顶层仿真所需的参数。
第二方面,本申请实施例还提供了一种集成电路后仿真装置,包括:获取模块以及仿真模块;获取模块,用于获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数,其中,顶层和各个子模块各自对应的网表彼此独立且相互不同;仿真模块,用于针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和FSDB文件,以及利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。
结合第二方面实施例的一种可能的实施方式,获取模块,用于针对每一个子模块,获取该子模块对应的模块测试文件、输入激励和输出参考值、模块网表以及模块SDF文件;相应地,仿真模块,用于:对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;根据所述模块SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
结合第二方面实施例的一种可能的实施方式,获取模块,具体用于:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件和用于抓取该子模块的输入激励和输出参考值的脚本;利用抓取该子模块的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块的所述输入激励和输出参考值。
结合第二方面实施例的一种可能的实施方式,获取模块,用于针对每一个子模块获取该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件;相应地,仿真模块用于:对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;根据所述模块SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,以及根据所述寄存器扫描链信息对所述仿真电路中的寄存器进行赋值,并运行;在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
结合第二方面实施例的一种可能的实施方式,获取模块,具体用于:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件、用于抓取该子模块指定时刻的输入激励和输出参考值的脚本,以及根据所述集成电路的网表、所述SDC约束文件用于抓取该子模块指定时刻的寄存器扫描链信息的脚本;利用抓取该子模块的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块指定时刻的所述输入激励和输出参考值,以及利用所述抓取该子模块的寄存器扫描链信息的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的指定时刻的寄存器值,得到该子模块指定时刻的寄存器扫描链信息。
结合第二方面实施例的一种可能的实施方式,获取模块,用于获取所述顶层的顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件;相应地,仿真模块,用于:对所述顶层网表、所述顶层测试文件进行编译生成仿真电路可执行文件;根据所述顶层SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;在运行的过程中,将所述所有子模块的输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
结合第二方面实施例的一种可能的实施方式,获取模块,具体用于:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到用于抓取所有子模块的输入激励和输出参考值的脚本以及各个子模块各自的IO延时信号和对应的时钟域信号;根据各个子模块各自的IO延时信号和对应的时钟域信号生成用于对仿真流程起控制作用的所述顶层测试文件;利用所述抓取所有子模块的输入激励和输出参考值的脚本去获取所述RTL代码以及运行所述前仿真测试用例时产生的数据,得到所述所有子模块的输入激励和输出参考值。
结合第二方面实施例的一种可能的实施方式,仿真模块,用于利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和FSDB文件。
结合第二方面实施例的一种可能的实施方式,仿真模块,用于利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。
第三方面,本申请实施例还提供了一种电子设备,包括:存储器和处理器,所述处理器与所述存储器连接;所述存储器,用于存储程序;所述处理器,用于调用存储于所述存储器中的程序,以执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
第四方面,本申请实施例还提供了一种存储介质,其上存储有计算机程序,所述计算机程序被处理器运行时,执行上述第一方面实施例和/或结合第一方面实施例的任一种可能的实施方式提供的方法。
本申请的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请的目的和其他优点可通过在所写的说明书以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。通过附图所示,本申请的上述及其它目的、特征和优势将更加清晰。在全部附图中相同的附图标记指示相同的部分。并未刻意按实际尺寸等比例缩放绘制附图,重点在于示出本申请的主旨。
图1示出了本申请实施例提供的一种集成电路后仿真方法的结构示意图。
图2示出了本申请实施例提供的一种获取测试文件、输入激励和输出参考值的原理示意图。
图3示出了本申请实施例提供的一种获取测试文件、寄存器扫描链信息、输入激励和输出参考值的原理示意图。
图4示出了本申请实施例提供的一种集成电路后仿真方法的原理示意图。
图5示出了本申请实施例提供的一种集成电路后仿真装置的模块示意图。
图6示出了本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行描述。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中诸如“第一”、“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
再者,本申请中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。
针对传统后仿真方法对大规模集成电路进行后仿真,存在仿真时间长的问题,使得无法在芯片流片(Tape out)前提供快速信号数据库(Fast Signal Database,FSDB)文件,以便进行精确的功耗评估和IR drop的分析,导致后端在实现的时候需要留有足够的余量,间接影响到芯片成本的问题。基于此,本申请实施例提供了一种集成电路后仿真方法,以加快仿真速度,解决了现有方法对大规模集成电路后仿真慢,难以对超大规模实现后仿真的问题,为了便于理解,下面将结合图1,对本申请实施例提供的集成电路后仿真方法进行说明。
步骤S101:获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数。
当需要对待进行后仿真的集成电路进行仿真时,获取待进行后仿真的集成电路中顶层和各子模块(Tile)各自仿真所需的包括网表在内的仿真参数。其中,后仿真是门级网表的仿真,是将电路的门延迟参数和各种电路单元之间的连线情况考虑在内后进行仿真,其结果可以判断时序是否正确,仿真的结果直接影响功耗评估,电压降(IR drop)分析的准确性等。
其中,需要说明的是,顶层和各个子模块各自对应的网表彼此独立且相互不同,也即顶层在进行后仿真时所需的网表与各个子模块各自在进行后仿真时所需的网表彼此独立且相互不同,各个子模块之间在进行后仿真时所需的网表也彼此独立且相互不同,如子模块A仿真时所需的网表与子模块B仿真时所需的网表是独立的,且不相同。由于顶层和各个子模块在进行后仿真时是基于各自独立的网表进行的,而不是基于整个集成电路的网表进行后仿真,使得顶层和各个子模块可以并行进行后仿真,加快了仿真速度。其中,鉴于集成电路的规模越来越大,整体做后端实现往往比较耗时甚至无法实现,因此目前的大规模芯片设计实现过程是一个先自上而下,再自下而上的过程,通常是将按功能划分的芯片依据物理位置自上而下进行Tile(瓦片)划分(也即依据数据流和功能将物理相近的模块组合成的一个物理上可以实现的大模块),从而将整个芯片划分为包含多个物理可实现的Tile和顶层,经划分后的每个Tile和顶层由于逻辑门变少,使物理实现变成可能,待各Tile和顶层分别完成物理实现得到各部分最终的网表,再自下而上组合到一起形成整个芯片的网表,最后在该网表上完成各项检查工作(包括时序验收,物理验证,门级网表后仿真等)后最终进行流片。
其中,一种实施方式下,每个子模块仿真所需的仿真参数除了包括对应该子模块的模块网表外,还包括对应的模块测试文件(test bench)、输入激励(输入pattern)和输出参考值(输出pattern)以及模块标准延时格式(Standard Delay Format,SDF)文件,也即针对每一个子模块,其仿真所需的仿真参数包括:该子模块对应的模块测试文件、输入激励和输出参考值、模块网表以及模块SDF文件。每个子模块仿真所需的仿真参数所包括的参数类型相同,其具体的参数值不同。
其中,各个子模块的模块网表以及模块SDF文件在分层次设计阶段,在完成子模块各自的物理实现时便可以得到。
其中,获取每个子模块对应的模块测试文件、输入激励和输出参考值的过程可以是:先获取该集成电路的网表、标准寄生参数交换格式(Standard Parasitic ExchangeForma,SPEF)文件(为集成电路设计流程中EDA工具间传递互连线寄生参数的标准媒介文件)、标准设计约束(Standard Design Constraints,SDC)文件(为设计中的约束文件,它对电路的时序,面积,功耗进行约束,决定了芯片是否满足设计要求的规范)、寄存器传输级(Register Transfer Level,RTL)代码以及前仿真测试用例,然后根据获取的集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例,便可得到每个子模块对应的模块测试文件、输入激励和输出参考值,也即,根据集成电路的网表、SPEF文件、SDC约束文件,得到该子模块对应的模块测试文件和用于抓取该子模块的输入激励和输出参考值的脚本;根据抓取该子模块的输入激励和输出参考值的脚本、RTL代码以及前仿真测试用例,得到该子模块的输入激励和输出参考值。
可选地,根据集成电路的网表、SPEF文件、SDC约束文件,得到该子模块对应的模块测试文件和用于抓取该子模块的输入激励和输出参考值的脚本的过程可以是:先根据集成电路的SPEF文件和SDC约束文件,计算集成电路的网表中各个子模块各自的IO(输入input,输出out)接口信号、对应的时钟域信号以及IO延时信号,然后根据每个子模块对应的IO延时信号和时钟域信号生成该子模块对应的用于对仿真流程起控制作用的模块测试文件,以及每个子模块对应的根据IO接口信号和时钟域信号生成用于抓取该子模块的输入激励和输出参考值的脚本。
根据抓取该子模块的输入激励和输出参考值的脚本、RTL代码以及前仿真测试用例,得到该子模块的输入激励和输出参考值的过程可以是:利用抓取该子模块的输入激励和输出参考值的脚本去获取RTL代码运行前仿真测试用例时产生的数据,便可得到该子模块的输入激励和输出参考值。
为了便于理解,结合图2对如何获取各个子模块各自对应的模块测试文件、输入激励和输出参考值的过程进行说明。该过程可以分为A、B两部分。在A部分,将集成电路的网表、SPEF文件、SDC约束文件输入电子设计自动化(Electronic Design Automation,EDA)工具(如prime time),配合脚本(该脚本通过工具内嵌命令找到顶层下面第一层次各个子模块的模块名,子模块的输入/输出端口以及该输入/输出端口对应的时钟和IO延时的信息,并根据这些信息逐一生成各子模块仿真所需的后续文件)处理后便可输出各个子模块各自对应的用于对仿真流程起控制作用的块测试文件(包括多个)、用于抓取各个子模块的输入激励和输出参考值的脚本以及各个子模块各自的IO延时信号和对应的时钟域信号(用于生成顶层仿真所需的顶层测试文件)。其中,利用EDA工具,读入集成电路的网表、SPEF文件、SDC约束文件后,该工具会自动计算网表中各子模块各自的输入输出pin,得到各个子模块的IO接口信号,以及计算各个子模块中的标准单元(cell)和标准单元间的连线(net)的延时信息,并提取当前环境中各个pin的延时信息,得到各个子模块各自对应的IO延时信号,以及还可以查询各输入输出pin所在的时钟域,得到各个子模块各自对应的时钟域信号。针对每一个子模块来说,在得到该子模块的IO接口信号、对应的时钟域信号以及IO延时信号后,然后根据对应的IO延时信号和时钟域信号生成用于对仿真流程起控制作用的模块测试文件,根据IO接口信号和时钟域信号生成用于抓取该子模块各自的输入激励和输出参考值的脚本。
在得到用于抓取各个子模块的输入输出pattern的脚本后,利用该脚本去获取RTL代码运行前仿真测试用例(即对集成电路进行前仿真时所使用过的测试用例)时产生的数据,便可得到各个子模块各自的输入激励和输出参考值。也即B部分中的顶层前仿真环境读取用于抓取各个子模块各自的输入激励和输出参考值的脚本文件、RTL代码和前仿真测试用例运行仿真,待仿真跑完后,便可得到各个子模块的输入激励和输出参考值。其中,该脚本在仿真时钟产生后即可在时钟的上升沿对输入输出端口信号进行采样输出到文件中,也即在时钟的上升沿正常运行时,将RTL代码运行前仿真测试用例时的所有子模块的输入输出端口信号抓取出来并存储为后仿pattern文件,得到输入pattern和输出pattern。
其中,模块测试文件(test bench)用于对仿真流程起控制作用,其中包括IO延时信号,输入激励,输出比对等指示信息,如在仿真时指示模块仿真环境需要做什么,如指示其需要对模块网表进行例化、需要打开输入激励,需要做输出比对(也即将仿真的输出与输出pattern进行比对)等。
作为另一种实施方式,每个子模块仿真所需的仿真参数除了包括对应该子模块的模块网表外,还包括对应的模块测试文件(test bench)、寄存器扫描链信息(包含将各个寄存器按照扫描测试的顺序提取出来的指定时刻的寄存器的值)、输入激励(输入pattern)和输出参考值(输出pattern)以及模块标准延时格式(Standard Delay Format,SDF)文件,也即针对每一个子模块,其仿真所需的仿真参数包括:该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件。
其中,获取该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值的步骤可以是:根据集成电路的网表、SPEF文件、SDC约束文件,得到该子模块对应的模块测试文件、用于抓取该子模块指定时刻的输入激励和输出参考值的脚本,以及根据所述集成电路的网表、所述SDC约束文件,得到用于抓取该子模块指定时刻的寄存器扫描链信息的脚本;根据抓取该子模块指定时刻的输入激励和输出参考值的脚本、RTL代码以及前仿真测试用例,得到该子模块指定时刻的输入激励和输出参考值(也即利用抓取该子模指定时刻块的输入激励和输出参考值的脚本去抓取RTL代码运行前仿真测试用例时产生的指定时刻数据,得到该子模块指定时刻的输入激励和输出参考值),以及根据抓取该子模块指定时刻的寄存器扫描链信息的脚本、RTL代码以及前仿真测试用例,得到该子模块指定时刻的寄存器扫描链信息(也即利用抓取该子模块指定时刻的寄存器扫描链信息的脚本去抓取RTL代码运行前仿真测试用例时产生的指定时刻的寄存器的值,并按照扫描测试的顺序提取出来,得到该子模块指定时刻的寄存器扫描链信息)。该实施方式的原理示意图如图3所示,与图2所示的实施方式相比,相当于在A部分原有基础上,额外输出用于抓取该子模块指定时刻的寄存器扫描链信息的脚本,并将该脚本输入B部分中,以便利用该脚本去获取RTL代码运行前仿真测试用例时指定时刻产生的(各个寄存器的值,便可得到各个子模块各自的寄存器扫描链信息,其中,EDA工具(如prime time)读入网表和SDC后,将芯片设置为测试模式,每个Tile有独立的扫描链,通过每个Tile已知的扫描链输入pin追踪该pin所驱动的下一级寄存器,然后从下一级驱动寄存器的输出pin追踪再下一级驱动寄存器,逐级追踪,直到到达该Tile的扫描链输出pin,然后将该扫描链的顺序记录下来,并以该顺序产生抓取扫描链信息的脚本。也即,在A部分,将集成电路的网表、SPEF文件、SDC约束文件输入EDA工具后,将芯片设置为测试模式,该EDA工具便可以自动生成用于抓取各个子模块指定时刻各自的寄存器扫描链信息(scan chain,芯片扫描测试的时候将寄存器串在一起形成的链)的脚本,该脚本用于将RTL运行前仿真测试用例时产生的指定时刻的寄存器的值按照扫描测试的顺序提取出来。在B部分,顶层前仿真环境读入用于抓取各个子模块各自指定时刻的输入激励和输出参考值的脚本文件、抓取各个子模块各自的寄存器扫描链信息的脚本、RTL代码和前仿真测试用例运行仿真,待仿真跑完后,便可得到各个子模块指定时刻后各自的输入激励和输出参考值,以及指定时刻的寄存器扫描链信息。其中,为了避免累赘,该实施例中未描述部分,请参照图2所示的实施方式中的相同部分。其中,寄存器扫描链信息用于在仿真时,在特定时刻(如在仿真过程中即将加载输入激励时)按scan chain的顺序对所有的寄存器进行赋值,以跳过初始化,从而加快仿真速度。其中,图2、图3中的模块测试文件、模块pattern(也即输入pattern、输出pattern),以及图3中的模块scan chain均用的虚线框表示,其表示数量为多个。
其中,顶层仿真所需的仿真参数除了包括顶层网表外,还包括:顶层测试文件、所有子模块的输入激励和输出参考值以及顶层SDF文件,也即顶层仿真所需的仿真参数包括:顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件。其中,顶层的顶层网表以及顶层SDF文件在集成电路分层次设计阶段,在完成顶层物理实现时便可以得到。
其中,获取顶层的顶层测试文件、所有子模块的输入激励和输出参考值的过程可以是获取集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例,再根据获取的集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例,便可得到顶层的顶层测试文件、所有子模块的输入激励和输出参考值,也即根据集成电路的网表、SPEF文件、SDC约束文件,得到用于抓取所有子模块的输入激励和输出参考值的脚本以及各个子模块各自的IO延时信号和对应的时钟域信号;根据各个子模块各自的IO延时信号和对应的时钟域信号生成用于对仿真流程起控制作用的顶层测试文件;根据抓取所有子模块的输入激励和输出参考值的脚本、RTL代码以及前仿真测试用例,得到所有子模块的输入激励和输出参考值。例如,根据集成电路的SPEF文件和SDC约束文件,计算集成电路的网表中各个子模块各自的IO接口信号、对应的时钟域信号以及IO延时信号,然后根据各个子模块各自的IO接口信号和对应的时钟域信号,生成用于抓取所有子模块的输入激励和输出参考值的抓取脚本,最后根据各个子模块各自的IO延时信号和对应的时钟域信号,生成用于对仿真流程起控制作用的顶层测试文件,以及利用抓取脚本获取RTL代码运行前仿真测试用例时产生的数据,便可得到所有子模块的输入激励和输出参考值。
结合上述的图2对获取顶层的顶层测试文件、所有子模块的输入激励和输出参考值的过程进行说明,在A部分,将集成电路的网表、SPEF文件、SDC约束文件输入EDA工具,配合脚本处理(该脚本通过工具内嵌命令找到顶层下面第一层次各个子模块的模块名,子模块的输入/输出端口以及该输入/输出端口对应的时钟和IO延时的信息,并根据这些信息逐一生成各子模块仿真所需的后续文件)便可输出各个子模块各自对应的用于对仿真流程起控制作用的模块测试文件(包括多个)、用于抓取各个子模块的输入激励和输出参考值的脚本以及各个子模块各自的IO延时信号和对应的时钟域信号(包括多个)。也即利用EDA工具,读入集成电路的网表SPEF文件、SDC约束文件后,该工具会自动计算网表中各个子模块各自的输入输出pin,得到各个子模块各自的IO接口信号,以及计算各个子模块各自中的标准单元(cell)和标准单元间的连线(net)的延时信息,并提取当前环境中各个pin的延时信息,得到各个子模块各自对应的IO延时信号,以及还可以查询各输入输出pin所在的时钟域,得到各个子模块各自对应的时钟域信号。针对每一个子模块来说,在得到该子模块的IO接口信号、对应的时钟域信号以及IO延时信号后,然后根据对应的IO延时信号和时钟域信号生成用于对仿真流程起控制作用的模块测试文件,根据IO接口信号和时钟域信号生成用于抓取该子模块各自的输入激励和输出参考值的脚本。在B部分,将用于抓取各个子模块的输入输出pattern的脚本、RTL代码和前仿真测试用例、以及各个子模块各自的IO接口信号和对应的时钟域信号,输入B部分中的顶层前仿真环境中进行仿真,便可得到各个子模块的输入输出pattern以及顶层测试文件。也即B部分中的顶层前仿真环境读取用于抓取各个子模块的输入激励和输出参考值的脚本文件、RTL代码和前仿真测试用例运行仿真,待仿真跑完后,便可得到各个子模块的输入激励和输出参考值。根据得到的各个子模块各自的IO延时信号和对应的时钟域信号生成用于对仿真流程起控制作用的顶层测试文件,例如,利用输入的各个子模块各自的IO接口信号和对应的时钟域信号,对顶层前仿真环境进行修改,加入pattern读入,输出信号比对等,生成顶层测试文件。
步骤S102:针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和FSDB文件,以及利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。
在获取到待进行后仿真的集成电路中顶层和各子模块各自对应的仿真参数后,针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,便可得到对应的仿真结果和FSDB文件,及利用顶层对应的仿真参数对所述顶层进行后仿真,便可得到所述顶层的仿真结果和FSDB文件。通过将原有整体仿真进行拆分,拆分后各部分可以并行进行仿真,显著提升芯片的后仿真速度,使得可以在芯片流片前充分验证时序功能正确性,同时产生准确的FSDB文件以便进行IR drop,功耗等分析,从而降低芯片成本。
其中,作为一种实施方式,针对每一个子模块,获取的该子模块对应的仿真所需的仿真参数,包括:模块测试文件、输入激励和输出参考值、模块网表以及模块SDF文件。相应地,利用该子模块对应的仿真参数对该子模块进行后仿真时,模块仿真环境读取该子模块对应的仿真参数模块测试文件、输入激励和输出参考值、模块网表以及模块SDF文件进行后仿真,得到仿真结果和FSDB文件。其过程可以是模块仿真环境对该子模块对应的模块网表、模块测试文件进行编译生成仿真电路可执行文件,然后根据模块SDF文件在仿真电路中反标标准单元(cell)和标准单元间的连线(net)的延时信息,并运行,在运行的过程中,将输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。其中,利用该子模块对应的仿真参数对该子模块进行后仿真,除了可以得到对应的仿真结果,还可以得到模块快速信号数据库(FSDB)文件,也即利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和模块FSDB文件。其中,FSDB文件是一种波形文件格式,用来记录信号随时间的变化情况,用于后续模块功耗分析和IR drop分析。
其中,作为又一种实施方式,针对每一个子模块,获取的该子模块对应的仿真所需的仿真参数,包括:模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件。相应地,利用该子模块对应的仿真参数对该子模块进行后仿真时,模块仿真环境读取该子模块对应的仿真参数模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件进行后仿真,得到仿真结果和FSDB文件。其过程可以是模块仿真环境对该子模块对应的模块网表、模块测试文件进行编译生成仿真电路可执行文件,然后根据模块SDF文件在仿真电路中反标标准单元(cell)和标准单元间的连线(net)的延时信息,以及根据所述寄存器扫描链信息对所述仿真电路中的寄存器进行赋值并运行,在运行的过程中,将输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。其中,通过根据寄存器扫描链信息对仿真电路中的寄存器进行赋值的方式可以跳过基于输入激励中的复位信息进行初始化的过程,提高仿真速度。其中,输入激励中的复位信息用于对该仿真电路进行复位(初始化),复位后各部分按正常运行。
获取的顶层仿真所需的仿真参数包括顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件。相应地,利用顶层对应的仿真参数对顶层进行后仿真,相当于,顶层仿真环境读取顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件进行后仿真,得到顶层仿真结果和FSDB文件。其过程可以是,顶层仿真环境对顶层网表、顶层测试文件进行编译生成仿真电路可执行文件,然后根据顶层SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行,在运行的过程中,将所有子模块的输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。其中,利用顶层对应的仿真参数对顶层进行后仿真,除了可以得到对应的顶层仿真结,还可以得到顶层快速信号数据库(FSDB)文件,也即利用顶层对应的仿真参数对顶层进行后仿真,得到对应的顶层仿真结果和顶层FSDB文件。
其整个仿真过程的流程图可以用图4进行说明,整个过程可以概括为A、B、C、D四部分。其中,A、B为仿真准备阶段,用于得到顶层和各个子模块在进行后仿真时所需的测试文件以及输入激励和输出参考值,也即用于得到各个子模块各自仿真时所需的模块测试文件、输入激励和输出参考值,以及得到顶层仿真时所需的顶层测试文件、所有子模块的输入激励和输出参考值。C部分表示的是各个子模块进行后仿真的过程,D部分表示的是顶层进行后仿真的部分。其中,不同子模块进行后仿真时对应的模块仿真环境不同。
由于顶层和各个子模块在进行后仿真时是基于各自独立的网表进行的,使得各子模块和顶层可以并行进行仿真,通过在寄存器传输级(RTL)仿真中提取各子模块各自的输入激励(输入pattern)和输出参考值(输出pattern)、然后利用每个子模块的输入pattern作为激励对该子模块进行后仿真,通过判断该子模块的输出和输出pattern的一致性来评价仿真是否通过,以及利用各个子模块的输入pattern作为激励对顶层进行后仿真,通过判断顶层的输出和对应的输出pattern的一致性来评价仿真是否通过,使得各子模块和顶层可以并行进行仿真,解决了大规模集成电路后仿真慢,超大规模难以实现后仿真的问题,并且能快速产生FSDB文件,用于功耗分析和IR drop分析。
本申请实施例还提供了一种集成电路后仿真装置100,如图5所示。该集成电路后仿真装置100包括:获取模块110、仿真模块120。
获取模块110,用于获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数,其中,顶层和各个子模块各自对应的网表彼此独立且相互不同。
仿真模块120,用于针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和FSDB文件,以及利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。
其中,可选地,获取模块110,用于针对每一个子模块,获取该子模块对应的模块测试文件、输入激励和输出参考值、模块网表以及模块SDF文件;相应地,仿真模块120,用于:对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;根据所述模块SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
可选地,获取模块110,具体用于:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件和用于抓取该子模块的输入激励和输出参考值的脚本;利用抓取该子模块的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块的所述输入激励和输出参考值。
可选地,获取模块110,用于针对每一个子模块获取该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件;相应地,仿真模块120用于:对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;根据所述模块SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,以及根据所述寄存器扫描链信息对所述仿真电路中的寄存器进行赋值,并运行;在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
可选地,获取模块110,具体用于:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件、用于抓取该子模块指定时刻的输入激励和输出参考值的脚本,以及根据所述集成电路的网表、所述SDC约束文件,得到用于抓取该子模块指定时刻的寄存器扫描链信息的脚本;利用抓取该子模块指定时刻的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块指定时刻的所述输入激励和输出参考值,以及利用所述抓取该子模块指定时刻的寄存器扫描链信息的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的指定时刻的寄存器值、,得到该子模块指定时刻的寄存器扫描链信息。
可选地,获取模块110,用于获取所述顶层的顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件;相应地,仿真模块120,用于:对所述顶层网表、所述顶层测试文件进行编译生成仿真电路可执行文件;根据所述顶层SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;在运行的过程中,将所述所有子模块的输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
可选地,获取模块110,具体用于:获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到用于抓取所有子模块的输入激励和输出参考值的脚本以及各个子模块各自的IO延时信号和对应的时钟域信号;根据各个子模块各自的IO延时信号和对应的时钟域信号生成用于对仿真流程起控制作用的所述顶层测试文件;利用所述抓取所有子模块的输入激励和输出参考值的脚本去获取所述RTL代码以及运行所述前仿真测试用例时产生的数据,得到所述所有子模块的输入激励和输出参考值。
本申请实施例所提供的集成电路后仿真装置100其实现原理及产生的技术效果和前述方法实施例相同,为简要描述,装置实施例部分未提及之处,可参考前述方法实施例中相应内容。
如图6所示,图6示出了本申请实施例提供的一种电子设备200的结构框图。所述电子设备200包括:收发器210、存储器220、通讯总线230以及处理器240。
所述收发器210、所述存储器220、处理器240各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件相互之间可通过一条或多条通讯总线230或信号线实现电性连接。其中,收发器210用于收发数据。存储器220用于存储计算机程序,如存储有图5中所示的软件功能模块,即集成电路后仿真装置100。其中,集成电路后仿真装置100包括至少一个可以软件或固件(firmware)的形式存储于所述存储器220中或固化在所述电子设备200的操作系统(operating system,OS)中的软件功能模块。所述处理器240,用于执行存储器220中存储的可执行模块,例如集成电路后仿真装置100包括的软件功能模块或计算机程序。例如,处理器240,用于获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数,其中,顶层和各个子模块各自对应的网表彼此独立且相互不同;针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和FSDB文件,以及利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。
其中,存储器220可以是,但不限于,随机存取存储器(Random Access Memory,RAM),只读存储器(Read Only Memory,ROM),可编程只读存储器(Programmable Read-OnlyMemory,PROM),可擦除只读存储器(Erasable Programmable Read-Only Memory,EPROM),电可擦除只读存储器(Electric Erasable Programmable Read-Only Memory,EEPROM)等。
处理器240可能是一种集成电路芯片,具有信号的处理能力。上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(NetworkProcessor,NP)等;还可以是数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本申请实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器240也可以是任何常规的处理器等。
其中,上述的电子设备200,包括但不限于计算机、服务器等。
本申请实施例还提供了一种非易失性计算机可读取存储介质(以下简称存储介质),该存储介质上存储有计算机程序,该计算机程序被计算机如上述的电子设备200运行时,执行上述所示的集成电路后仿真方法。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
在本申请所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其它的方式实现。以上所描述的装置实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本申请的多个实施例的装置、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分,所述模块、程序段或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。
另外,在本申请各个实施例中的各功能模块可以集成在一起形成一个独立的部分,也可以是各个模块单独存在,也可以两个或两个以上模块集成形成一个独立的部分。
所述功能如果以软件功能模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,笔记本电脑,服务器,或者电子设备等)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应所述以权利要求的保护范围为准。
Claims (10)
1.一种集成电路后仿真方法,其特征在于,包括:
获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数,其中,顶层和各个子模块各自对应的网表彼此独立且相互不同;
针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和快速信号数据库FSDB文件,以及利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。
2.根据权利要求1所述的方法,其特征在于,获取各个子模块各自仿真所需的包括网表在内的仿真参数的步骤,包括:
针对每一个子模块,获取该子模块对应的模块测试文件、输入激励和输出参考值、模块网表以及模块标准延时格式SDF文件;相应地,利用该子模块对应的仿真参数对该子模块进行仿真,包括:
对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;
根据所述SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;
在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
3.根据权利要求2所述的方法,其特征在于,获取该子模块对应的模块测试文件、输入激励和输出参考值的步骤,包括:
获取所述集成电路的网表、标准寄生参数交换格式SPEF文件、标准设计约束SDC约束文件、寄存器传输级RTL代码以及前仿真测试用例;
根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件和用于抓取该子模块的输入激励和输出参考值的脚本;
利用抓取该子模块的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块的所述输入激励和输出参考值。
4.根据权利要求1所述的方法,其特征在于,获取各个子模块各自仿真所需的包括网表在内的仿真参数的步骤,包括:
针对每一个子模块,获取该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值、模块网表以及模块SDF文件,其中,所述寄存器扫描链信息包含将该子模块中的各个寄存器按照扫描测试链的顺序提取的指定时刻的寄存器值;相应地,利用该子模块对应的仿真参数对该子模块进行仿真,包括:
对所述模块网表、所述模块测试文件进行编译生成仿真电路可执行文件;
根据所述模块SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,以及根据所述寄存器扫描链信息对所述仿真电路中的寄存器进行赋值,并运行;
在运行的过程中,将所述输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
5.根据权利要求4所述的方法,其特征在于,获取该子模块对应的模块测试文件、寄存器扫描链信息、输入激励和输出参考值的步骤,包括:
获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;
根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到该子模块对应的模块测试文件、用于抓取该子模块指定时刻的输入激励和输出参考值的脚本,以及根据所述集成电路的网表、所述SDC约束文件,得到用于抓取该子模块指定时刻的寄存器扫描链信息的脚本;
利用抓取该子模块指定时刻的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到该子模块指定时刻的所述输入激励和输出参考值,以及利用所述抓取该子模块指定时刻的寄存器扫描链信息的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的指定时刻的寄存器值,得到该子模块指定时刻的寄存器扫描链信息。
6.根据权利要求1所述的方法,其特征在于,获取所述顶层仿真所需的包括网表在内的仿真参数的步骤,包括:
获取所述顶层的顶层测试文件、所有子模块的输入激励和输出参考值、顶层网表以及顶层SDF文件;相应地,利用所述顶层对应的仿真参数对所述顶层进行后仿真,包括:
对所述顶层网表、所述顶层测试文件进行编译生成仿真电路可执行文件;
根据所述顶层SDF文件在仿真电路中反标标准单元和标准单元间的连线的延时信息,并运行;
在运行的过程中,将所述所有子模块的输入激励加载至该仿真电路的各个输入管脚,并将该仿真电路输出的值与对应的输出参考值进行比较,得到对应的仿真结果和FSDB文件。
7.根据权利要求6所述的方法,其特征在于,获取所述顶层的顶层测试文件、所有子模块的输入激励和输出参考值的步骤,包括:
获取所述集成电路的网表、SPEF文件、SDC约束文件、RTL代码以及前仿真测试用例;
根据所述集成电路的网表、所述SPEF文件、所述SDC约束文件,得到用于抓取所有子模块的输入激励和输出参考值的脚本以及各个子模块各自的输入输出IO延时信号和对应的时钟域信号;
根据各个子模块各自的IO延时信号和对应的时钟域信号生成用于对仿真流程起控制作用的所述顶层测试文件;
利用所述抓取所有子模块的输入激励和输出参考值的脚本去获取所述RTL代码运行所述前仿真测试用例时产生的数据,得到所述所有子模块的输入激励和输出参考值。
8.一种集成电路后仿真装置,其特征在于,包括:
获取模块,用于获取待进行后仿真的集成电路中顶层和各子模块各自仿真所需的包括网表在内的仿真参数,其中,顶层和各个子模块各自对应的网表彼此独立且相互不同;
仿真模块,用于针对每一个子模块,利用该子模块对应的仿真参数对该子模块进行后仿真,得到对应的仿真结果和FSDB文件,以及利用所述顶层对应的仿真参数对所述顶层进行后仿真,得到所述顶层的仿真结果和FSDB文件。
9.一种电子设备,其特征在于,包括:
存储器和处理器,所述处理器与所述存储器连接;
所述存储器,用于存储程序;
所述处理器,用于调用存储于所述存储器中的程序,以执行如权利要求1-7中任一项所述的方法。
10.一种存储介质,其特征在于,其上存储有计算机程序,所述计算机程序被处理器运行时,执行如权利要求1-7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010963765.0A CN112100952B (zh) | 2020-09-14 | 2020-09-14 | 一种集成电路后仿真方法、装置、电子设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010963765.0A CN112100952B (zh) | 2020-09-14 | 2020-09-14 | 一种集成电路后仿真方法、装置、电子设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112100952A true CN112100952A (zh) | 2020-12-18 |
CN112100952B CN112100952B (zh) | 2021-06-22 |
Family
ID=73751620
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010963765.0A Active CN112100952B (zh) | 2020-09-14 | 2020-09-14 | 一种集成电路后仿真方法、装置、电子设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112100952B (zh) |
Cited By (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112668259A (zh) * | 2020-12-24 | 2021-04-16 | 北京华大九天科技股份有限公司 | 一种后仿真网表的系统验证方法 |
CN112732636A (zh) * | 2021-01-11 | 2021-04-30 | 上海金卓科技有限公司 | 基于多fpga的芯片原型验证系统的配置方法、装置和设备 |
CN112765916A (zh) * | 2021-01-22 | 2021-05-07 | 上海华虹宏力半导体制造有限公司 | 集成电路后仿真参数网表的生成方法 |
CN113065300A (zh) * | 2021-03-31 | 2021-07-02 | 眸芯科技(上海)有限公司 | 芯片eda仿真中回溯仿真波形的方法、系统及装置 |
CN113283211A (zh) * | 2021-05-20 | 2021-08-20 | 复旦大学 | 基于Verilog实现的微处理器自动化验证方法及验证装置 |
CN113342583A (zh) * | 2021-06-08 | 2021-09-03 | 海光信息技术股份有限公司 | 芯片验证系统、方法、装置、设备和存储介质 |
CN113468837A (zh) * | 2021-05-10 | 2021-10-01 | 浙江大学 | 一种芯片供电网络凸快电流的估算方法及系统 |
CN113536717A (zh) * | 2021-07-14 | 2021-10-22 | 北京华大九天科技股份有限公司 | 一种基于增量编译的电路仿真方法 |
CN114117985A (zh) * | 2021-12-03 | 2022-03-01 | 芯格(上海)微电子有限公司 | 集成运放的智能验证方法、系统、介质及终端设备 |
CN114236359A (zh) * | 2021-12-21 | 2022-03-25 | 无锡江南计算技术研究所 | 面向ate测试设备的新型集成电路测试激励生成方法 |
CN114626324A (zh) * | 2022-02-24 | 2022-06-14 | 深圳市紫光同创电子有限公司 | Fpga电路后仿真验证方法、装置、电子设备及存储介质 |
CN115238619A (zh) * | 2022-09-20 | 2022-10-25 | 北京数字光芯集成电路设计有限公司 | 数字芯片的子模块后仿真方法和系统 |
CN115983170A (zh) * | 2023-03-17 | 2023-04-18 | 中国人民解放军国防科技大学 | 极大规模集成电路的超前后仿真方法、装置及设备 |
CN116451625A (zh) * | 2023-06-14 | 2023-07-18 | 摩尔线程智能科技(北京)有限责任公司 | 用于rtl和带sdf网表的联合仿真的装置和方法 |
CN116542032A (zh) * | 2023-04-24 | 2023-08-04 | 广州市粤港澳大湾区前沿创新技术研究院 | 一种芯片集成设计方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150440A (zh) * | 2013-03-14 | 2013-06-12 | 福州瑞芯微电子有限公司 | 一种模块级电路网表仿真方法 |
CN104331546A (zh) * | 2014-10-22 | 2015-02-04 | 中国空间技术研究院 | 一种航天器用数字定制集成电路后端版图设计评估方法 |
CN104899076A (zh) * | 2015-06-18 | 2015-09-09 | 中国科学院自动化研究所 | 一种超大规模集成电路门级网表仿真的加速方法 |
CN105138774A (zh) * | 2015-08-25 | 2015-12-09 | 中山大学 | 一种基于集成电路层次化设计的时序后仿真方法 |
CN108052769A (zh) * | 2017-12-28 | 2018-05-18 | 天津芯海创科技有限公司 | 网表仿真验证方法和装置 |
-
2020
- 2020-09-14 CN CN202010963765.0A patent/CN112100952B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103150440A (zh) * | 2013-03-14 | 2013-06-12 | 福州瑞芯微电子有限公司 | 一种模块级电路网表仿真方法 |
CN104331546A (zh) * | 2014-10-22 | 2015-02-04 | 中国空间技术研究院 | 一种航天器用数字定制集成电路后端版图设计评估方法 |
CN104899076A (zh) * | 2015-06-18 | 2015-09-09 | 中国科学院自动化研究所 | 一种超大规模集成电路门级网表仿真的加速方法 |
CN105138774A (zh) * | 2015-08-25 | 2015-12-09 | 中山大学 | 一种基于集成电路层次化设计的时序后仿真方法 |
CN108052769A (zh) * | 2017-12-28 | 2018-05-18 | 天津芯海创科技有限公司 | 网表仿真验证方法和装置 |
Non-Patent Citations (1)
Title |
---|
李学建: "《面向卫星导航终端应用的发射机射频前端芯片设计》", 《万方数据》 * |
Cited By (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112668259A (zh) * | 2020-12-24 | 2021-04-16 | 北京华大九天科技股份有限公司 | 一种后仿真网表的系统验证方法 |
CN112732636A (zh) * | 2021-01-11 | 2021-04-30 | 上海金卓科技有限公司 | 基于多fpga的芯片原型验证系统的配置方法、装置和设备 |
CN112732636B (zh) * | 2021-01-11 | 2023-05-30 | 北京东土军悦科技有限公司 | 基于多fpga的芯片原型验证系统的配置方法、装置和设备 |
CN112765916B (zh) * | 2021-01-22 | 2024-02-20 | 上海华虹宏力半导体制造有限公司 | 集成电路后仿真参数网表的生成方法 |
CN112765916A (zh) * | 2021-01-22 | 2021-05-07 | 上海华虹宏力半导体制造有限公司 | 集成电路后仿真参数网表的生成方法 |
CN113065300A (zh) * | 2021-03-31 | 2021-07-02 | 眸芯科技(上海)有限公司 | 芯片eda仿真中回溯仿真波形的方法、系统及装置 |
CN113065300B (zh) * | 2021-03-31 | 2024-01-05 | 眸芯科技(上海)有限公司 | 芯片eda仿真中回溯仿真波形的方法、系统及装置 |
CN113468837A (zh) * | 2021-05-10 | 2021-10-01 | 浙江大学 | 一种芯片供电网络凸快电流的估算方法及系统 |
CN113468837B (zh) * | 2021-05-10 | 2023-11-03 | 浙江大学 | 一种芯片供电网络凸块电流的估算方法及系统 |
CN113283211A (zh) * | 2021-05-20 | 2021-08-20 | 复旦大学 | 基于Verilog实现的微处理器自动化验证方法及验证装置 |
CN113342583A (zh) * | 2021-06-08 | 2021-09-03 | 海光信息技术股份有限公司 | 芯片验证系统、方法、装置、设备和存储介质 |
CN113536717A (zh) * | 2021-07-14 | 2021-10-22 | 北京华大九天科技股份有限公司 | 一种基于增量编译的电路仿真方法 |
CN114117985A (zh) * | 2021-12-03 | 2022-03-01 | 芯格(上海)微电子有限公司 | 集成运放的智能验证方法、系统、介质及终端设备 |
CN114117985B (zh) * | 2021-12-03 | 2024-04-05 | 芯格(上海)微电子有限公司 | 集成运放的智能验证方法、系统、介质及终端设备 |
CN114236359B (zh) * | 2021-12-21 | 2023-08-08 | 无锡江南计算技术研究所 | 面向ate测试设备的集成电路测试激励生成方法 |
CN114236359A (zh) * | 2021-12-21 | 2022-03-25 | 无锡江南计算技术研究所 | 面向ate测试设备的新型集成电路测试激励生成方法 |
CN114626324B (zh) * | 2022-02-24 | 2023-12-12 | 深圳市紫光同创电子有限公司 | Fpga电路后仿真验证方法、装置、电子设备及存储介质 |
CN114626324A (zh) * | 2022-02-24 | 2022-06-14 | 深圳市紫光同创电子有限公司 | Fpga电路后仿真验证方法、装置、电子设备及存储介质 |
CN115238619B (zh) * | 2022-09-20 | 2023-06-27 | 北京数字光芯集成电路设计有限公司 | 数字芯片的子模块后仿真方法和系统 |
CN115238619A (zh) * | 2022-09-20 | 2022-10-25 | 北京数字光芯集成电路设计有限公司 | 数字芯片的子模块后仿真方法和系统 |
CN115983170B (zh) * | 2023-03-17 | 2023-06-16 | 中国人民解放军国防科技大学 | 极大规模集成电路的超前后仿真方法、装置及设备 |
CN115983170A (zh) * | 2023-03-17 | 2023-04-18 | 中国人民解放军国防科技大学 | 极大规模集成电路的超前后仿真方法、装置及设备 |
CN116542032A (zh) * | 2023-04-24 | 2023-08-04 | 广州市粤港澳大湾区前沿创新技术研究院 | 一种芯片集成设计方法及系统 |
CN116542032B (zh) * | 2023-04-24 | 2024-04-09 | 广州市粤港澳大湾区前沿创新技术研究院 | 一种芯片集成设计方法及系统 |
CN116451625A (zh) * | 2023-06-14 | 2023-07-18 | 摩尔线程智能科技(北京)有限责任公司 | 用于rtl和带sdf网表的联合仿真的装置和方法 |
CN116451625B (zh) * | 2023-06-14 | 2023-09-15 | 摩尔线程智能科技(北京)有限责任公司 | 用于rtl和带sdf网表的联合仿真的装置和方法 |
Also Published As
Publication number | Publication date |
---|---|
CN112100952B (zh) | 2021-06-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112100952B (zh) | 一种集成电路后仿真方法、装置、电子设备及存储介质 | |
CN108830008B (zh) | 一种标准单元库全模型的测试方法及测试系统 | |
Chen et al. | Challenges and trends in modern SoC design verification | |
US9589096B1 (en) | Method and apparatus for integrating spice-based timing using sign-off path-based analysis | |
US9026966B1 (en) | Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators | |
US20070168893A1 (en) | System and method for generating a plurality of models at different levels of abstraction from a single master model | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
US20220066909A1 (en) | Waveform based reconstruction for emulation | |
US8732632B1 (en) | Method and apparatus for automated extraction of a design for test boundary model from embedded IP cores for hierarchical and three-dimensional interconnect test | |
CN105279345B (zh) | 一种航天器用数字软ip核评测方法 | |
CN115315702A (zh) | 早期阶段电路设计中基于机器学习的度量的预测 | |
US11461523B1 (en) | Glitch analysis and glitch power estimation system | |
US9135382B1 (en) | Systems, methods, and media for assertion-based verification of devices | |
Bombieri et al. | Incremental ABV for functional validation of TL-to-RTL design refinement | |
US8306802B2 (en) | Method for modeling an HDL design using symbolic simulation | |
CN107784185B (zh) | 一种门级网表中伪路径的提取方法、装置及终端设备 | |
CN107844678B (zh) | 包含IP/Memory时序路径的spice仿真方法 | |
CN112861455B (zh) | Fpga建模验证系统及方法 | |
CN117350208A (zh) | 时序逻辑元件性能检查方法及设备 | |
Bombieri et al. | Hybrid, incremental assertion-based verification for TLM design flows | |
US20220327269A1 (en) | Computing device and method for detecting clock domain crossing violation in design of memory device | |
CN101794328B (zh) | 针对门输出负载的快速且准确的估计 | |
US9710580B2 (en) | Timing analysis method for digital circuit design and system thereof | |
KR20060066634A (ko) | 검증 성능과 검증 효율성을 높이는 동적검증 기법 방식의검증 장치 및 이를 이용한 검증 방법론 | |
CN112613257A (zh) | 验证方法、装置、电子设备和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |