CN115983172B - 用于后仿真的方法和仿真平台 - Google Patents

用于后仿真的方法和仿真平台 Download PDF

Info

Publication number
CN115983172B
CN115983172B CN202310258994.6A CN202310258994A CN115983172B CN 115983172 B CN115983172 B CN 115983172B CN 202310258994 A CN202310258994 A CN 202310258994A CN 115983172 B CN115983172 B CN 115983172B
Authority
CN
China
Prior art keywords
module
proxy component
interfaces
delay
tclk
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.)
Active
Application number
CN202310258994.6A
Other languages
English (en)
Other versions
CN115983172A (zh
Inventor
请求不公布姓名
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Moore Threads Technology Co Ltd
Original Assignee
Moore Threads Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Moore Threads Technology Co Ltd filed Critical Moore Threads Technology Co Ltd
Priority to CN202310258994.6A priority Critical patent/CN115983172B/zh
Publication of CN115983172A publication Critical patent/CN115983172A/zh
Application granted granted Critical
Publication of CN115983172B publication Critical patent/CN115983172B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Design And Manufacture Of Integrated Circuits (AREA)

Abstract

本申请公开了用于后仿真的方法和仿真平台。所述方法包括:用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件代替所述第一模块来与第二模块交互;解析所述第二模块的标准延迟格式文件以确定所述代理组件的相应接口的延迟补偿量,其中所述代理组件与所述第二模块使用同一时钟源;以及将所述延迟补偿量添加到所述代理组件的相应接口上。

Description

用于后仿真的方法和仿真平台
技术领域
本公开涉及集成电路技术领域。具体地,涉及用于后仿真的方法和仿真平台。
背景技术
集成电路片上系统(SoC)的设计和验证是一个非常耗时和繁复的过程。一个产品从最初构想、到设计、验证、流片、测试最后到量产要经过少则数个月长则数年的时间。在集成电路的设计过程中,经常需要进行仿真与验证来检查所设计的片上系统是否能够按照设想那样执行。集成电路片上系统设计验证过程中需要进行功能前仿真和时序后仿真。其中功能前仿真是针对寄存器传输级(Register Transfer Level,RTL)的仿真,主要是通过仿真验证所设计电路的逻辑功能正确性,仿真速度快。时序后仿真是基于由基本门单元组成的网表(Netlist),同时将网表的门级电路延迟和各种门级电路之间的连线延迟等考虑在内进行仿真。时序后仿真主要是通过仿真发现设计潜在的约束和时序问题。并且由于后仿真中考虑进去了电路元件以及路径的延迟,导致仿真速度慢,经常一个集成电路片上系统的后仿真需要花费数个小时甚至数天的时间。
集成电路片上系统通常包括许多(例如数十或数百)模块。为了加快后仿真进程,对于一些常用的功能模块,可以用相应的代理组件(或者称为验证组件)来接管它们以进行后仿真。但是这种代理组件本身是理想的组件,没有实际应用中存在的各种元器件延迟和路径延迟。直接用代理组件代替相应功能模块进行后仿真可能导致错误的时序结果。
发明内容
针对现有技术中存在的缺陷,本公开提出了一种用于后仿真的方法和仿真平台。可以用代理组件接管相应功能模块的一些或者全部接口,并根据要交互的其他模块的标准延迟格式文件(SDF)解析出代理组件的相应接口所需的延迟补偿量,并将延迟补偿量添加到代理组件的相应接口上。使得代理组件模拟出其所接管的模块的包含输入和输出信号的延迟信息的真实的后仿真环境,从而在加快后仿真的同时,确保后仿真的时序结果的准确性。
在一方面中,本公开提出了一种用于后仿真的方法,包括:用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件代替所述第一模块来与第二模块交互;解析所述第二模块的标准延迟格式文件以确定所述代理组件的相应接口的延迟补偿量,其中所述代理组件与所述第二模块使用同一时钟源;以及将所述延迟补偿量添加到所述代理组件的相应接口上。
在一个实施例中,方法还包括:根据仿真命令中的工艺角参数来获取特定工艺角下的所述第二模块的标准延迟格式文件。
在一个实施例中,方法还包括:比较所述代理组件接收的数据包与所述第二模块发出的数据包,或者比较所述代理组件发出的数据包与所述第二模块接收的数据包,以检查所述第二模块的功能和时序。
在一个实施例中,其中在所述代理组件的相应接口上要传输包括多个位的信号的情况下,将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述多个位的最大延迟补偿量添加到所述代理组件的相应接口上。
在一个实施例中,其中解析所述第二模块的标准延迟格式文件以确定所述代理组件的相应接口的延迟补偿量包括:解析所述第二模块的标准延迟格式文件以提取所述第二模块的与所述代理组件的相应接口交互的接口的延迟信息;以及基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量。
在一个实施例中,其中所述延迟信息包括:Tdata_in,表示从所述第二模块的数据输入端到第二模块内部第一级触发器的数据延迟;Tdata_out,表示从所述第二模块内部最后一级触发器到所述第二模块的数据输出端的数据延迟;Tclk_in,表示从所述第二模块的时钟输入端到所述第一级触发器的时钟延迟;以及Tclk_out,表示从所述第二模块的时钟输入端到所述最后一级触发器的时钟延迟。
在一个实施例中,其中对于从所述代理组件传输到所述第二模块的信号,基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量包括:通过比较Tdata_in与Tclk_in的大小来确定所述延迟补偿量。
在一个实施例中,其中对于从所述第二模块传输到所述代理组件的信号,基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量包括:通过比较Tclk_out与Tdata_out的求和与Tclk的大小来确定所述延迟补偿量,其中Tclk表示时钟周期。
在一个实施例中,其中:在Tdata_in≥Tclk_in的情况下,延迟补偿量为“0”或者“f1*Tclk”,其中Tclk表示时钟周期,f1为0.05至0.2之间的小数;并且将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应输出接口上。
在一个实施例中,其中:在Tdata_in<Tclk_in的情况下,延迟补偿量为“Tclk_in-Tdata_in”或者“Tclk_in-Tdata_in+f1*Tclk”,其中Tclk表示时钟周期,f1为0.05至0.2之间的小数,并且其中将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应输出接口上。
在一个实施例中,其中:在Tclk_out+Tdata_out≤Tclk的情况下,延迟补偿量为“0”或者“f1*Tclk”,f1为0.05至0.2之间的小数;并且将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应输入接口上。
在一个实施例中,其中:在Tclk_out+Tdata_out>Tclk的情况下,延迟补偿量为“f2*Tclk”,其中f2为0.2至0.5之间的小数,并且将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应时钟接口上。
在一个实施例中,其中f1为0.1。在一个实施例中,其中f2为0.25。
在一个实施例中,方法还包括:设置时间点和关键字以从后仿真报告中的时序违例中过滤掉所述时间点之前的时序违例以及与所述关键字相关的时序违例;以及将时序违例过滤之后剩余的时序违例按照时间排列以及按照路径分组并分别输出到两个文件中,同时提供与剩余的时序违例中的每一个时序违例相关的信息。
在另一方面中,本公开提出了一种用于后仿真的仿真平台,包括:接管单元,被配置成用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件代替所述第一模块来与第二模块交互;解析单元,被配置成解析所述第二模块的标准延迟格式文件以确定所述代理组件的相应接口的延迟补偿量,其中所述代理组件与所述第二模块使用同一时钟源;以及补偿单元,被配置成将所述延迟补偿量添加到所述代理组件的相应接口上。
在另一方面中,本公开还提出一种计算设备,包括本公开中所阐述的用于后仿真的仿真平台。
在另一方面中,本公开还提出另外的用于后仿真的方法,包括用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件的第一组接口代替所述第一模块的部分接口来与第二模块交互,并且使所述代理组件的第二组接口代替所述第一模块的另一部分接口来与第三模块交互;解析所述第二模块和所述第三模块的标准延迟格式文件以分别确定所述第一组接口和所述第二组接口的延迟补偿量,其中所述代理组件的第一组接口与所述第二模块使用同一时钟源,并且所述代理组件的第二组接口与所述第三模块使用同一时钟源;以及将所述延迟补偿量分别添加到所述第一组接口和所述第二组接口上。
在另一方面中,本公开还提出一种其上存储有指令的机器可读介质,所述指令当被机器执行时使得所述机器执行根据本公开的用于后仿真的方法。
本公开包括在本公开中所阐明的两个、三个、四个或更多特征或元素的任何组合,而无论这样的特征或元素是否被清楚地组合或以其他方式在本文中描述的特定示例实现方式中被记载。本公开意图被整体阅读使得本公开的任何单独的特征或元素应当被视为可组合的,除非本公开的上下文清晰地另行规定。
附图说明
现在将参考附图描述本公开的具体示例性实施例。通过阅读以下详细描述连同附图,本公开的特征、方面和优点将是显而易见的。在附图中:
图1示出数字集成电路设计的流程;
图2a示出根据本公开的实施例的用代理组件接管之前模块之间的交互的示意图;
图2b示出根据本公开的实施例的用代理组件接管模块之后代理组件与其他模块之间的交互的示意图;
图3a示出根据本公开的另外的实施例的用代理组件接管之前模块之间的交互的示意图;
图3b示出根据本公开的另外的实施例的用代理组件接管模块之后代理组件与其他模块之间的交互的示意图;
图4a示出根据本公开的另外的实施例的用代理组件接管之前模块之间的交互的示意图;
图4b示出根据本公开的另外的实施例的用代理组件接管模块之后代理组件以及其他模块之间交互的示意图;
图5示出根据本公开的实施例的用于后仿真的方法;
图6示出根据本公开的实施例另外的用于后仿真的方法;
图7示出根据本公开的实施例的模块的延迟信息的示意图;
图8示出根据本公开的实施例的用验证IP(VIP)组件接管模块的高级可拓展接口(AXI)接口之后与其他模块一起进行后仿真的示意图;
图9示出根据本公开的实施例的用于后仿真的仿真平台;以及
图10示出根据本公开的实施例的计算设备的示意图。
具体实施方式
现在将在下文中参考附图更充分地描述本公开的一些实现方式,在所述附图中示出本公开的一些而不是所有实现方式。事实上,本公开的各种实现方式可以用许多不同的形式被具体化,并且不应当被解释为受限于本文中所阐明的实现方式;相反,提供这些示例实现方式是为了更好地把本公开的范围传达给本领域技术人员。
为了便于理解本公开的原理,在图1中示出数字集成电路设计的一般流程。数字集成电路设计包括前端和后端两个阶段。前端和后端之间并没有明显的界限。一般地,将在图1中虚线上面的阶段称为前端,虚线下面的阶段称为后端。前端的第一阶段——算法或硬件架构设计与分析的目的是完成芯片中数字部分的高层次算法或架构的分析与建模,为硬件提供一个正确的软件功能模型,更为重要的是,通过大量的高层次仿真和调试,为RTL实现提供总体性的设计指导。第二阶段——RTL实现的目的是依据第一阶段的结果,完成由高层次描述到用Verilog HDL或VHDL等硬件语言以寄存器之间的传输为基础对电路的描述。第三阶段运行代码风格检查,目的在于排除RTL代码中跨时钟域、Lint等问题。第四阶段是进行功能验证,目的在于在无延迟的理想情况下,通过大量的仿真,发现电路设计过程中的人为或者非人为引起的漏洞或者错误。这个阶段是上文提到的前仿真。功能验证的主要指标是功能覆盖率。下一个阶段是逻辑综合,其目的是将RTL级设计中所得到的程序代码翻译成实际电路的各种元器件以及它们之间的连接关系,然后用一张表来表示,这张表就称为门级网表。逻辑综合阶段实现将代码映射到与工艺库相关的网表。下面进行静态时序分析,相对动态仿真的类穷举式验证方法而言,从静态分析的角度,保证设计中所有的路径,满足内部时序单元对建立时间和保持时间的要求。即无论起点是什么,信号都可以被及时地传递到该路径的终点,并且在电路正常工作所必需的时间段内保持恒定。下一阶段是一致性验证。RTL代码和逻辑综合后的网表都可以抽象为两幅由节点和边构成的图,一致性验证阶段采用了类似于直接比较两幅图是否一致的方法,来确定逻辑综合生成的网表是否正确。下一阶段是时序仿真。相比于功能仿真,时序仿真将RTL代码替换为网表,然后需要加载标准延迟格式(SDF)文件和工艺库模型。时序仿真的目的在于,在考虑进去单元和路径延迟等近似实际工作的条件下,观察功能是否还能保持正确。相对于功能前仿真,时序仿真也称为后仿真。
数字集成电路的后端设计又称物理设计,将网表格式的文本转化成一个个有物理大小和位置的单元、连线(布局与布线(placement and routing))。并且在实现过程中要满足面积、功耗、性能等要求。在图1中,为了简便起见,后端仅仅示出了布局布线这一步骤。然而实际上,后端还需要进行很多步骤,例如提取延迟信息、运行DRC(设计规则检查)和LVS(版图与电路图的一致性检查)等。由于布局布线阶段调整了电路元器件的布局和连线,计算得到布局布线后的标准延迟格式文件,再重新进行时序后仿真。
整个ASIC设计流程都是一个反复迭代的过程,数字和模拟集成电路设计验证都是这样。在任何一步不能满足约束条件或者不能实现功能的时候,都需要重复之前的步骤,甚至重新设计RTL代码。所以虽然图1中使用了一些向下的箭头连接各个阶段,但是实际上,在任何一步结束之后如果没有达到要求都可能需要返回到之前的步骤重新修改再进行仿真验证。直到最终获得所设计的片上系统的GDSII文件进行流片。数字集成电路设计可以包括但不限于图1中所示出的阶段。另外,图1中所示出的一些阶段的顺序可以改变。并且其中的一些阶段可以根据需要而合并或者省略。
在集成电路片上系统设计中,经常需要使用许多常用的具有特定功能的模块,例如AXI(高级可拓展接口)、USB(通用串行总线)、PCIE(快速外围组件互连)、DDR(双倍数据速率存储器)等。为了验证这些功能模块是否能够正常工作,验证工程师可能会开发一些代理组件(或者称为验证组件)或者从EDA厂商购买一些专用于对功能模块进行验证的组件,例如VIP(验证IP)组件。这些组件能够模拟对应功能模块的接口的逻辑动作,使用与对应功能模块相同的标准协议驱动激励信号和监测返回信号,从而评估对应功能模块的功能和时序是否正常。
针对常用的功能模块,许多其他模块需要与之交互。例如,在功能模块是DDR的情况下,诸如显示器、处理器之类的模块需要对其进行存储和访问。在实际后仿真过程中,一些与功能模块交互的其他模块可能仅仅关心功能模块的接口上的行为,而不关心功能模块内部的与交互无关的功能,例如功能模块内部如何产生所述行为。在功能模块是DDR的情况下,与之交互的模块可能并不关心DDR内部如何进行存储和访问操作。另外,在功能完好的功能模块参与集成电路片上系统的仿真的情况下,由于功能模块内部功能已经经过验证,不再关心其内部的复杂的逻辑操作。在这种情况下,如果连同通过验证的功能模块一起进行后仿真会浪费大量时间。在本公开中,在后仿真中,利用代理组件来接管功能模块的接口,代替功能模块的相应接口与片上系统的其他模块进行交互,从而节省后仿真时间。相对于被接管的相应功能模块,代理组件是理想组件,其本身没有实际使用过程中存在的路径延迟和元器件延迟。为了确保后仿真结果的准确性,本公开提出的用于后仿真的方法可以通过解析与功能模块交互的模块的标准延迟格式文件来计算出代理组件各个接管接口上所需的延迟补偿量,并在代理组件的接管接口上添加相应的延迟补偿量。
图2a示出根据本公开的实施例的用代理组件接管之前模块之间的交互的示意图。从图2a中可以看出,在第一模块201被代理组件200接管之前,第一模块201在其接口a0-a3上与第二模块202的接口b0-b3直接交互。第一模块201与第二模块202之间的交互可以是控制命令的通信或者数据或地址的通信。其中,第一模块201可以是主机,向第二模块发送请求,第二模块202可以作为从机对第一模块201发出的请求进行响应。在另一个实施例中,第一模块201可以作为从机,第二模块202可以作为主机向第一模块201发送请求。例如在第一模块201是DDR的情况下,第二模块202可以是显示器,请求可以是访问数据或者写入数据的请求。第二模块202可以与第三模块203交互。在一个实施例中,第三模块203可以是要与第一模块201交互的真正的主机或从机,而第二模块202是第三模块203与第一模块201之间的交互的中间模块。接口a0-a3可以是第一模块201的全部接口,也可以是第一模块201的全部接口中的一部分。接口b0-b3也可以是第二模块202的全部接口,或者第二模块202的全部接口中的一部分。另外,虽然图2中将第一模块201的接口a0-a3与第二模块202的接口b0-b3之间的交互用双向箭头来指示,但是各个接口都可以仅作为输出接口,或者仅作为输入接口。第一模块201例如可以是总线类的功能模块,也可以是其他功能模块,例如DRAM、FLASH、显示器、USB等。第二模块202可以是与第一模块201进行交互的任何模块。另外,虽然第一模块201、第二模块202和第三模块203均被示出为单个模块,但是这仅仅是示意性的。实际上,第一模块201、第二模块302和第三模块303内部都可以包括其他子模块。
图2b示出根据本公开的实施例的用代理组件接管之后代理组件与模块之间的交互的示意图。从图2b中可以看出,用第一模块201的代理组件200的接口A0-A3接管第一模块201的接口a0-a3来代替这些接口与第二模块202的接口b0-b3进行交互。其中代理组件200可以是能够模拟第一模块201的所有接口上的逻辑动作的组件,然而代理组件200内部无需执行其所接管的第一模块201内部的与产生相应接口上的所述逻辑动作相关的操作。因此,用代理组件200接管第一模块201的接口来代替第一模块201参与同第二模块以及其他模块的后仿真可以加快后仿真。
在图2b中,代理组件200的接口A0-A3分别接管第一模块201的接口a0-a3来与第二模块202的接口b0-b3交互。代理组件200与第二模块202使用同一时钟源。因此,在忽略时钟信号从时钟源分别到达代理组件200的时钟接口和第二模块202的时钟接口的路径上的微小路径延迟差异的情况下,代理组件200的时钟接口和第二模块202的时钟接口上接收到的时钟信号具有相同的频率和相位。在第二模块202中存在不与代理组件进行交互而与其他模块(未示出)交互的其他接口(未示出)的情况下,这些其他接口可以与所述代理组件使用同一时钟源,或者也可以使用其他不同的时钟源。另外,代理组件200的时钟接口和第二模块202的时钟接口可以分别被包括代理组件的接口A0-A3中以及第二模块202的接口b0-b3中。替代地,代理组件200的时钟接口和第二模块202的时钟接口可以是其他未示出的另外的接口。
图2a和图2b中仅仅示出了第一模块201与第二模块202的交互,然而实际上还可以存在与第一模块交互的其他模块,而用代理组件接管第一模块之后要代替第一模块来与多个其他模块交互。在图3a和图3b中示出了根据另外的实施例的要被接管的功能模块与多个模块交互的情况。其中,图3a示出了功能模块被其对应的代理组件接管之前的情况,图3b示出了功能模块被其对应的代理组件接管之后的情况。第一模块301在被代理组件300接管之前与第二模块302和第二模块303二者交互。具体地,第一模块301的部分接口a0-a1与第二模块302的接口b0-b1交互,第一模块301的另一部分接口a2-a3与第三模块303的接口c0-c1交互。虽然第一模块301、第二模块302以及第三模块303之间的交互都用双向箭头示出,然而,实际各个模块的各个接口上的交互可以是单向的,其中的任一模块可以充当主机,而另一个模块充当从机。在用第一模块301的代理组件300接管第一模块301的接口a0-a3之后,代理组件300代替第一模块301来分别与第二模块302和第三模块303二者交互。具体地,代理组件300的第一组接口A0-A1与第二模块302的接口b0-b1交互,代理组件300的第二组接口A2-A3与第三模块303的接口c0-c1交互。
在接管之后,代理组件300的第一组接口A0-A1和第二组A2-A3分别与第二模块302的接口b0-b1以及第三模块303的接口c0-c1交互。代理组件300与第二模块302和第三模块303使用同一时钟源。因此在忽略时钟信号从时钟源分别到达代理组件300的时钟接口、第二模块302的时钟接口以及第三模块的时钟接口303的路径上的微小路径延迟差异的情况下,代理组件300的时钟接口、第二模块302的时钟接口以及第三模块303的时钟接口上接收到的时钟信号具有相同的频率和相位。另外,在第二模块302或第三模块303中存在不与代理组件进行交互而与其他模块交互(未示出)的其他接口(未示出)的情况下,这些其他接口可以与代理组件300使用同一时钟源,或者也可以使用其他不同的时钟源。在另一个实施例中,代理组件300的第一组接口A0-A1与第二模块302的交互接口b0-b1使用第一时钟源clk1,而代理组件300的第二组接口A2-A3与所述第三模块303的交互接口b2-b3使用第二时钟源clk2。换言之,代理组件300的第一组接口A0-A1与第二模块302的交互接口b0-b1使用的时钟源(clk1)与代理组件300的第二组接口A2-A3与所述第三模块303的交互接口b2-b3使用的时钟源(clk2)可以不是同一时钟源。要指出的是,虽然图3中仅仅示出代理组件和第二模块以及第三模块的交互,然而代理组件还可以与其他模块交互,并且其他模块之间也可以存在交互。
代理组件也可以是被开发来仅仅模拟对应功能模块的一部分接口上的逻辑动作。替代地,代理组件也可以被开发来模拟对应功能模块的全部接口上的逻辑动作,而在后仿真中使代理组件仅接管对应功能模块的部分接口。下面结合图4a和4b描述这种情况。图4a示出了根据另外的实施例的要被接管的功能模块与多个模块交互的情况。其中第一模块401在被代理组件400接管之前与第二模块402和第二模块403交互。具体地,第一模块401的第一组接口a0-a1与第二模块402的接口b0-b1交互,第一模块401的第二组接口a2-a3与第三模块403的接口c0-c1交互。图4b示出了用代理组件的第一组接口接管对应功能模块的部分接口之后的情况。具体地,用代理组件400的第一组接口A0-A1接管第一模块401的部分接口a0-a1。代理组件400的第一组接口A0-A1代替第一模块401的部分接口a0-a1来与第二模块402的接口b0-b1交互。而第一模块的另一部分接口a2-a3仍保持与第三模块403的接口c0-c1交互。在后仿真时,可以单独执行代理组件400的第一组接口A0-A1与第二模块402的交互的后仿真。也可以同时执行第一模块的另一部分接口a2-a3与第三模块c0-c1的交互的后仿真。
在图4b中示出的情况下,代理组件400的第一组接口A0-A1与第二模块402使用同一时钟源。因此在忽略时钟信号从时钟源分别到达代理组件400的时钟接口和第二模块402的时钟接口的微小路径延迟差异的情况下,代理组件400的第一组接口A0-A1所使用的时钟信号和第二模块402所使用的时钟信号具有相同的频率和相位。而第一模块401的另一部分接口a2-a3与第三模块403可以使用另一时钟源,也可以与代理组件400的接口A0-A1以及第二模块402使用同一时钟源。
要指出的是,图2a、图2b、图3a、图3b、图4a和图4b中示出的各个模块、各个模块之间的交互、每个模块中的接口都是示意性的。实际上,可以包括更多或更少的待进行后仿真的模块,每个模块中也可以包括更多或更少的接口。例如待后仿真的模块包括时钟模块,每个其他功能模块中还包括与时钟模块交互的时钟接口。
下面结合图5来描述根据本公开的实施例的用于后仿真的方法500。在图5的步骤S11中,用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件代替所述第一模块来与第二模块交互。例如用代理组件200接管第一模块201来代替第一模块201在接口A0-A3上与第二模块202交互。在用代理组件接管第一模块的接口之前,第一模块在所述接口上与第二模块进行交互。所述代理组件(例如代理组件200)被配置成模拟所述第一模块的接口(例如第一模块201的接口a0-a3)的行为,并且省略所述第一模块内部的与产生所述行为相关的复杂操作。例如,在第一模块是总线类的功能模块的情况下,代理组件可以模拟总线下游的逻辑动作。在用代理组件代替第一模块来与第二模块一起进行后仿真时,代理组件能够使用与第一模块相同的标准总线协议来与原本与第一模块交互的第二模块进行交互。
在图5中的步骤S12中,可以解析第二模块的标准延迟格式文件以确定所述代理组件的相应接口的延迟补偿量,其中所述代理组件与所述第二模块使用同一时钟源。仿真平台可以从存储单元中或者从云端获取第二模块的标准延迟格式文件。并基于第二模块的标准延迟格式文件确定与所述第一模块的接口对应的接口所需要的延迟补偿量。对于图2b中示出的情况,可以解析所述第二模块202的标准延迟格式文件(SDF)以确定代理组件200的接口A0-A3中的每一个接口所需要的延迟补偿量。
在数字电路设计中,逻辑综合会提取出与RTL代码相对应的网表。也会输出包括网表中所有器件的延迟信息的标准延迟格式文件。这个阶段虽然也调用了厂商的器件库,但是器件之间的连接仅仅是简单的逻辑连接,没有进行布局布线。在进行布局布线之后,会输出更为精确的标准延迟格式文件。布局布线之后的标准延迟格式文件考虑进去了元器件之间的连线上的延迟,更为接近实际的物理电路。在步骤S12中使用的标准延迟格式文件可以是进行后端布局布线之后得到的标准延迟格式文件。在另外的实施例中,也可以是逻辑综合之后得到的标准延迟格式文件。在一个实施例中,取决于后仿真对仿真效率的需求,可以通过在仿真命令中输入版本参数来选择使用在布局布线之后生成的标准延迟格式文件还是使用逻辑综合之后生成的标准延迟格式文件还是其他人员或日期更新的第二模块的标准延迟格式文件来执行步骤S12中的解析操作。
在仿真平台中可以存储有片上系统的每个模块在不同工艺角下的标准延迟格式文件。一般地,工艺角包括快NFET和快 PFET(FF),慢NFET和慢PFET(SS),快NFET和慢PFET(FS),慢NFET和快PFET(SF)以及中心典型范围的工艺角(TT)。在一个实施例中,可以仅仅包括FF、TT和SS三种典型的工艺角。不同的工艺角对应于不同的门延迟,并用于满足不同的设计需求。因此,在不同的工艺角下,代理组件要交互的模块具有不同的延迟格式文件,其中记载着不同的延迟信息。根据本公开的方法和仿真平台支持在各种工艺角下进行后仿真,并且能够考虑进去各个工艺角下不同的延迟信息。具体地,可以通过在仿真命令中输入工艺角参数来从待与代理组件交互的模块(例如模块202)的在不同工艺角下的多个标准延迟格式中选择在特定工艺角下的标准延迟格式文件(例如选择在典型工艺角(TT)下的模块202的标准延迟格式文件)。然后解析该工艺角下的标准延迟格式文件以提取相关延迟信息来计算代理组件的相应接口所需的延迟补偿量,从而进一步提高代理组件以及其他模块之间的后仿真的准确性。此外,可以看出,根据本公开的后仿真的方法和仿真平台是极其用户友好的,可以通过简单地在仿真命令中输入工艺角参数便能够实现特定工艺角下标准延迟格式文件的选择、延迟信息的提取、延迟补偿量的计算以及向代理组件相应接口的添加。因此,更有助于提升后仿真的效率,缩短产品的开发周期。
在图5的步骤S13中,将所述延迟补偿量添加到所述代理组件的相应接口上。从而确保用代理组件代替第一模块与第二模块一起后仿真的准确性。例如将得到的延迟补偿量分别添加到代理组件200的接口A0-A3中的相应接口上。
图6中示出根据本公开的实施例的另外的后仿真的方法600。其中,在步骤S21中,用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件的第一组接口代替所述第一模块的部分接口来与第二模块交互,并且使所述代理组件的第二组接口代替所述第一模块的另一部分接口来与第三模块交互。例如,代替第一模块301,代理组件300的第一组接口A0-A1与第二模块302的接口b0-b1交互,代理组件300的第二组接口A2-A3与第三模块503的接口c0-c1交互。在步骤S22中,解析所述第二模块和所述第三模块的标准延迟格式文件以分别确定所述第一组接口和所述第二组接口的延迟补偿量,其中所述代理组件的第一组接口与所述第二模块使用同一时钟源,并且所述代理组件的第二组接口与所述第三模块使用同一时钟源。在步骤S23中,将所述延迟补偿量分别添加到所述第一组接口和所述第二组接口上。对于图3b中示出的情况,可以分别解析所述第二模块302和第三模块303的标准延迟格式文件(SDF)以分别生成代理组件300的第一组接口A0-A1和第二组接口A2-A3中的每一个接口所需要的延迟补偿量。并将得到的延迟补偿量分别添加到代理组件300的相应接口上,以对代理组件300、第二模块302以及第二模块303进行后仿真。
利用本申请结合图5和图6描述的方法,可以用代理模块接管相应的功能模块的接口或其部分接口。并且在执行后仿真之前,通过解析要交互的模块的标准延迟格式文件计算出代理组件的相应接口中的每个接口所需的延迟补偿量。然后把所计算的延迟补偿量添加到代理组件的相应接口上,例如其输入接口、输出接口或者时钟接口上。再对代理组件和交互模块进行后仿真。在提升后仿真效率的同时还能够确保后仿真的准确性。
要指出的是,图5和图6中的方法还可以包括许多其他步骤,或者其中的一些步骤可以省略。还要指出的是,虽然在图5和图6中用箭头来连接各个步骤,但是各个步骤之间没有明确的先后顺序,其中的一些顺序可以颠倒,或者同时进行。在一个实施例中,图5和图6中示出的方法还可以包括:比较代理组件接收的数据包和与其交互的模块发出的数据包,或者比较代理组件发出的数据包和与其交互的模块接收的数据包,以检查与其交互的模块的功能和时序。例如,在代理组件作为从机与另一主机交互的情况下,主机在向代理组件发出请求的同时能够将发出的请求打包,代理组件在作为从机进行响应的同时(例如向DDR中写入数据或地址)能够将对请求的响应打包。进而通过比较请求的数据包和响应的数据包来检查代理组件所交互的主机的功能和时序是否正常。从而帮助验证工程师随时掌握后仿真的进程,并在发现任何错误时,标记错误、及时终止后仿真而不再进行没有必要的剩余后仿真、或者进行其他处理。这可以提高后仿真验证的效率,同时提高后仿真的准确性。另外,这种检查功能可以由根据本公开的仿真平台中的相应检查单元来实现。替代地,也可以由代理组件中的相应检查单元来实现。在一个实施例中,可以自动地直接快速地对这两种数据包进行比较。在另一个实施例中,可以更加直观地在波形窗口中执行这种比较。
代理组件与其交互模块的交互信号可以是具有单个位的信号,例如valid信号或ready信号,也可以是具有多个位的信号,例如数据信号(例如32位数据信号)或地址信号。在交互信号是具有单个位的信号的情况下,可以直接将计算出来的延迟补偿量添加到代理组件相应的接口上,以确保该交互信号能够被采集到。然而,在交互信号是多位信号的情况下,由于每个位的数据传输到交互模块(例如第二模块202)内的不同触发器,并且可能需要传输经过不同的路径长度,因此所计算出的各个位所需的延迟补偿量不同。为了确保采集到信号的各个位,可以将多个位中的每个位所需的延迟补偿量中的最大延迟补偿量添加到代理组件的传输每个位所用的每一个接口上。例如,在代理组件200的接口A0-A3上要传输一个包括四位的信号的情况下,将四个位中每个位所需的最大延迟补偿量分别添加到接口A0-A3中的每一个接口上,以确保多位信号的每个位都能被采集到,保证采集到的信号的完整性。在其他情况下,交互信号可以是具有16位、32位或64位等的交互信号。在一个实施例中,根据本公开的方法可以进一步包括:标识交互信号是单个位的交互信号还是多位交互信号;在交互信号是单个位的信号的情况下,直接将计算出的延迟补偿量添加到传输所述单个位的交互信号所用的代理组件的相应接口上;在交互信号是多位信号的情况下,进而比较各个位被采集到所需的延迟补偿量以确定最大延迟补偿量,并将最大延迟补偿量添加到传输所述多位信号所用的代理组件的相应接口中的每一个接口上。这使得交互信号的每个位的数据都能够在同一时钟周期内被采集到,从而确保交互信号的完整性,并进一步提高用代理组件接管相应功能模块之后,代理组件以及各个其他模块之间后仿真的有效性。另外,上述对单个位交互信号与多位交互信号的标识、对各个位所需延迟补偿量的比较、对最大延迟补偿量的选择以及向代理组件相应接口的添加可以由根据本公开的仿真平台中的同一部件实现。替代地,这些不同的功能可以由根据本公开的仿真平台中的多个不同部件分别实现。
标准延迟格式文件中包括对应模块中的每个单元的时序信息,例如指定单元延迟、点到点的路径延迟、建立时间和保持时间等。步骤S12以及步骤S22中的解析操作可以包括解析代理组件要交互的模块(例如模块202、模块302或模块303)的标准延迟格式文件以提取要交互的模块的与代理组件的相应接口交互的接口的延迟信息;以及基于所述延迟信息来计算所述代理组件的相应接口所需要的延迟补偿量。
图7示出根据本公开的实施例的代理组件要交互的模块(例如第二模块202)的延迟信息的示意图。延迟信息可以包括:Tdata_in,表示从第二模块的数据输入端到第二模块内部第一级触发器DFF的数据延迟,例如输入信号(data_in)从第二模块的数据输入端到第一级触发器DFF的D端的数据延迟;Tdata_out,表示从第二模块内部最后一级触发器DFF到第二模块的数据输出端的数据延迟;Tclk_in,表示从第二模块的时钟输入端到第二模块内部第一级触发器DFF的时钟延迟,例如时钟信号(clk)从第二模块的时钟输入端到第一级触发器DFF的时钟输入端的时钟延迟;以及Tclk_out,表示从第二模块的时钟输入端到第二模块内部最后一级触发器的时钟延迟,例如时钟信号(clk)从第二模块的时钟输入端到最后一级触发器DFF的时钟输入端的时钟延迟。其中,Tdata_in和Tdata_out可以是数据到达第二模块内部第一级触发器和从第二模块内部最后一级触发器传输出去所经过的路径上的路径延迟。在图7中示意性地示出这些延迟信息。
可以基于要交互的模块(例如第二模块202、302和402)的接口的延迟信息计算代理组件的相应接口所需要的延迟补偿量。其中,对于从代理组件传输到第二模块的信号,可以通过比较Tdata_in和Tclk_in的大小来确定延迟补偿量。具体地,在Tdata_in≥Tclk_in的情况下,数据会滞后于时钟到来,第二模块内的第一级寄存器DFF可以正确采集到信号。在这种情况下,可以不向第二模块的数据输入端(即,代理组件的相应输出接口)添加任何延迟补偿量,或者添加的延迟补偿量为零。在一个实施例中,为了安全起见,可以向代理组件的相应输出接口添加一个小的延迟补偿量。在这种情况下的延迟补偿量可以是f1*Tclk,其中Tclk为时钟周期。在一个实施例中,f1可以为0.05至0.2之间的小数。在另一个实施例中,f1为0.1。
在Tdata_in<Tclk_in的情况下,数据会提前于时钟到达第二模块的第一级寄存器DFF的数据输入端,第二模块内的第一级寄存器DFF将无法正确采集到数据信号。这种情况下,可以向第二模块的数据输入端(D端)(即,代理组件的相应输出接口)添加延迟补偿量Tclk_in-Tdata_in。为了安全起见,添加的延迟补偿量可以是Tclk_in-Tdata_in+f1*Tclk。在一个实施例中,f1可以为0.05至0.2之间的小数。在另一个实施例中,f1为0.1。
对于从第二模块传输到代理组件的信号,可以通过比较Tclk_out和Tdata_out的求和与Tclk的大小来确定延迟补偿量,Tclk表示时钟周期。具体地,在Tclk_out+Tdata_out≤Tclk的情况下,从第二模块输出的数据仍然能在时钟周期的同一个时钟周期内到达代理组件。因此,不需要向第二模块的输出信号(即,代理组件的输入接口)添加延迟补偿量,代理组件便可以正确采集到信号。此时的延迟补偿量可以为零。为了安全起见,向代理组件的输入接口添加的延迟补偿量可以为f1*Tclk。在一个实施例中,f1可以为0.05至0.2之间的小数。在另一个实施例中,f1为0.1。
在Tclk_out+Tdata_out>Tclk的情况下,数据要晚于时钟一个时钟周期以上才能到达代理组件。在这种情况下,需要把代理组件使用的时钟向后推迟,才能正确采集到从第二模块输出的信号。在一个实施例中,向代理组件的时钟接口添加的延迟补偿量可以是f2*Tclk。在一个实施例中,f2可以为0.2至0.5之间的小数。在一个实施例中,f2为0.25。
要指出的是,上面结合图7描述的本公开的计算代理组件的相应接口上所需的延迟补偿量的方法可以经过简单的适配而被具体应用于图2b、图3b和图4b中示出的实施例或其他实施例,只要与本公开的原理不相违背即可。还要指出的是,可以结合实际后仿真的场景、后仿真所用的标准单元库、后仿真所基于的工艺角等来具体地选择f1和f2的值,以使得在添加了相应延迟的情况下恰好能够在当前时钟周期内采集到信号,而不会发生欠补偿或者过补偿的情况,以确保采集到的信号的准确性。在一个实施例中,可以在后仿真之前,预先针对不同应用场景、不同标准单元库、不同工艺角等选择大量不同的f1的值以及大量不同的f2的值来分别进行调试、统计、然后选择出满足功能和时序要求的f1和f2的值或者其区间,并将它们存储(例如以针对不同实际应用的不同适合f1和f2的表格形式)在仿真平台的存储器中或者云端以供实际后仿真中使用。换言之,f1和f2不是固定不变的,而是可以根据不同的实际应用需求变化的;并且f1和f2是实际后仿真中的经验值(例如f1为0.1,f2为0.25),以便模拟出更加真实的后仿真环境,从而确保后仿真的准确性。另外,上文给出的关于f1和f2的数值范围均可以包括范围的两个端点。例如f1可以为0.05或者0.2,并且f2可以为0.2或者0.5。还要指出的是,虽然上文给出了因子f1和f2的范围,然而还可能存在它们的其他范围,例如f1为0.04。
对代理组件以及其他模块的后仿真中会报告大量时序违例,这严重拖慢了后仿真的进程。所谓的时序违例是指违反了建立时间或者保持时间或者其他时序约束,使得采样时钟不能够正确采集到数据的情况。验证工程师需要花费大量精力去分析这些时序违例是设计问题造成的真正的时序违例,还是可以忽略的虚假时序违例。这给验证工程师带来繁冗的验证工作量。为了进一步加快后仿真进程,本公开提出的用于后仿真的方法还可以包括设置时间点和关键字以从后仿真报告中的时序违例中过滤掉所述时间点之前的时序违例以及与所述关键字相关的时序违例从而减少验证工程师的工作量。所述方法还可以包括将时序违例过滤之后剩余的时序违例按照时间排列以及按照路径分组并分别输出到两个文件中,同时提供与剩余的时序违例中的每一个时序违例相关的信息以而提高时序违例分析和确认的效率。其中所述时间点可以是参与仿真的模块的时钟异步复位的时刻。所述关键字可以是任何数字、字母或者正则表达式,例如DFT(可测性设计)。
图8示出根据本公开的实施例的用验证IP(VIP)组件接管相应功能模块的高级可拓展接口(AXI)接口之后与其他模块一起进行后仿真的示意图。在图8中,用VIP组件的接口vip_slv_if(0) - vip_slv_if(3)接管模块A的AXI(高级可拓展接口)总线接口c0_axi1、c0_axi2、c1_axi1和c2_axi2来与模块B进行交互。其中,VIP组件可以模拟模块A发送AXI标准协议的驱动信号并且接收和监测来自模块B的标准AXI总线协议的信号。其中,在与模块B的交互中,VIP组件充当从机,模块B充当主机。模块B向VIP组件发送请求,例如写数据或者访问数据请求。VIP组件作为从机对模块B的请求进行响应。在一个实施例中,模块A可以是DDR存储器,模块B可以是显示器。图8中示出的图是示意性的,模块A和模块B中均可以包括其他子模块或者图8中还可以存在其他模块来与模块A和模块B一起进行后仿真。通过使用上文描述的用于后仿真的方法解析模块B的标准延迟格式文件以得到VIP组件相应接口所需的延迟补偿量,并将延迟补偿量自动添加到VIP组件的相应接口上。在图8中,延迟补偿量通过中继接口0_if-R03_if添加到VIP组件的接口上。在一个实施例中,延迟补偿量可以不经过中继接口而直接添加到VIP组件的接口上。
要指出的是,上文中提及的待后仿真的模块可以是集成电路片上系统的所有模块中的部分模块。在另外的实施例中,也可以对整个片上系统的所有模块进行后仿真,而其中的一个或多个模块用其对应的代理组件来接管以代替它们与该片上系统的所有其他模块一起进行后仿真。还要指出的是,虽然本公开以集成电路片上系统的模块的后仿真展开,然而本公开提出的方法不限于应用到集成电路片上系统中或其中的模块。相反,本公开提出的方法可以经过简单的适应性调整而应用于任何形态为集成电路芯片的产品上,例如可以应用于片上网络(NOC)或包括一个或多个功能模块的其他芯片上。另外,本公开中阐述的方法也可以以程序指令的形式被存储在计算机可读存储介质中,并且当所述程序指令在一个或多个处理器上被执行时使得所述一个或多个处理器执行根据本公开的用于后仿真的方法。
图9示出根据本公开的实施例的用于后仿真的仿真平台900。仿真平台900中可以包括接管单元901、解析单元902和补偿单元903。在一个实施例中,仿真平台900还可以包括获取单元904和检查单元905。在一个实施例中,解析单元902还可以包括延迟信息提取单元906和计算单元907。图9示出的仿真平台900中的各个单元可以分别被配置成实施根据本公开的实施例的用于后仿真的方法。其中,接管单元901可以被配置成用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件代替所述第一模块来与第二模块交互。解析单元902可以被配置成解析所述第二模块的标准延迟格式文件以确定所述代理组件的相应接口的延迟补偿量,其中所述代理组件与所述第二模块使用同一时钟源。补偿单元903可以被配置成将所述延迟补偿量添加到所述代理组件的相应接口上。获取单元904可以被配置成根据仿真命令中的工艺角参数来获取特定工艺角下的所述第二模块的标准延迟格式文件。补偿单元903还可以被配置成在所述代理组件的相应接口上要传输包括多个位的信号的情况下,将所述多个位中的最大延迟补偿量添加到所述代理组件的相应接口上。检查单元905可以被配置成比较代理组件接收的数据包与第二模块发出的数据包,或者比较代理组件发出的数据包与第二模块接收的数据包,以检查第二模块的功能和时序。延迟信息提取单元906可以被配置成解析第二模块的标准延迟格式文件以提取第二模块的与所述代理组件的相应接口交互的接口的延迟信息。计算单元907可以被配置成基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量。
计算单元907可以进一步被配置成:对于从所述代理组件传输到所述第二模块的信号,通过比较Tdata_in与Tclk_in的大小来确定所述延迟补偿量;以及对于从所述第二模块传输到所述代理组件的信号,通过比较Tclk_out与Tdata_out的求和与Tclk的大小来确定所述延迟补偿量,其中Tclk表示时钟周期。具体地,在Tdata_in≥Tclk_in的情况下,延迟补偿量为“0”或者“f1*Tclk”,其中f1为0.05至0.2之间的小数,并且补偿单元903将所述延迟补偿量添加到所述代理组件的相应输出接口上。在Tdata_in<Tclk_in的情况下,延迟补偿量为“Tclk_in-Tdata_in”或者“Tclk_in-Tdata_in+f1*Tclk”,其中f1为0.05至0.2之间的小数,并且补偿单元903将所述延迟补偿量添加到所述代理组件的相应输出接口上。另外,在Tclk_out+Tdata_out≤Tclk的情况下,延迟补偿量为“0”或者“f1*Tclk”,其中f1为0.05至0.2之间的小数,并且补偿单元903将所述延迟补偿量添加到所述代理组件的相应输入接口上。在Tclk_out+Tdata_out>Tclk的情况下,延迟补偿量为“f2*Tclk”,其中f2为0.2至0.5之间的小数,并且补偿单元903将所述延迟补偿量添加到所述代理组件的相应时钟接口上。特别地,f1为0.1,f2为0.25。
在一个实施例中,图9示出的仿真平台900还可以包括其他未被示出的单元,例如用于上文中描述的时序违例处理操作的时序违例处理单元、用于存储标准延迟格式文件或者其他缓冲数据的存储单元、仿真命令输入单元、自动布局布线单元、标准延迟格式(SDF)文件生成单元等等。替代地,仿真平台900也可以不包括存储单元,而将后仿真所需要的后仿真文件存储在云端。图9中示出的仿真平台900仅仅是示意性的,没有示出各个单元之间详细的交互。另外,仿真平台900的一些单元可以组合在一起或者拆分成多个单元,只要与本公开阐述的原理不相违背即可。此外,仿真平台900可以被配置成软件产品、硬件装置或者固件。仿真平台900可以是EDA工具厂商提供的,也可以是用户根据需要自己开发定制的。
图10示出根据本公开的实施例的计算设备1000。计算设备1000可以包括根据本公开的实施例的如上文中所阐述的用于后仿真的仿真平台。计算设备1000还包括但不限于处理器、至少一个通信电路、存储装置、显示屏、相机、芯片集、电池、天线以及I/O子系统等。其中处理器可以是能够处理来自寄存器和/或存储装置的电子数据以将该电子数据变换成可以被存储在寄存器和/或存储装置中的其他电子数据的任何设备或设备的部分。处理器可以是中央处理器(CPU),其一部分,或者可以是多核CPU。通信电路可以用于通过计算设备中的天线或者无线地将数据从计算设备1000传递给外部组件,或者将来自外部的数据传递到计算设备1000。通信电路可以实现现有的以及未来开发的无线通信标准或协议中的任一个。此外,计算设备1000中可以包括多个通信电路。其中的一些专用于较短程通信,而另一些专用于较长程通信。存储装置可以是适合永久或者临时存储数据的任何装置,例如易失性存储器(例如DRAM)、非易失性存储器(例如ROM)、闪速存储器等。计算设备1000还可以包括存储器控制器(虽然在图10中没有示出),用于控制存储装置的操作。计算设备1000中的显示屏幕可以是任何能够显示图形或者视频的屏幕,例如触摸屏。计算设备1000内的I/O子系统可以用于连接计算设备1000内部的各个组件或者用于将计算设备1000与其外部的组件连接。计算设备1000内的芯片集可以包括任何其他组件,包括但不限于数字信号处理器、密码处理器、触摸屏控制器、功率放大器、GPS系统、图形处理单元等。计算设备1000可以是移动端(例如智能手机)内的计算设备,或者可以是桌面型或者工作站中的计算设备。
应当理解,为了清楚起见,参考不同的功能单元对本公开的实施例进行了描述。然而,显然,在不偏离本公开的情况下,每个功能单元的功能可以被实现在单个单元中、实现在多个单元中、或作为其他功能单元的一部分来实现。因此,本公开可以被实施在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
应当理解的是,尽管第一、第二、第三等术语在本文中可以用来描述各种设备、元件、部件或阶段,但是这些设备、元件、部件或阶段不应当由这些术语所限制。这些术语仅用来将一个设备、元件、部件或阶段与另一个设备、元件、部件或阶段相区分。
尽管已经结合一些实施例描述了本公开,但是其不意图被限于在本文中所阐述的特定形式。相反地,本公开的范围仅由所附权利要求来限制。另外,尽管单独的特征可以被包括在不同的权利要求中,但是这些特征可以组合。特征在权利要求中的次序不暗示特征必须以其工作的任何特定次序。此外,在权利要求中,词语“包括”不排除其他元件,并且术语“一”不排除多个。

Claims (18)

1.一种用于后仿真的方法,其特征在于,包括:
用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件代替所述第一模块来与第二模块交互;
解析所述第二模块的标准延迟格式文件以提取所述第二模块的与所述代理组件的相应接口交互的接口的延迟信息,并基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量,其中所述代理组件与所述第二模块使用同一时钟源;以及
将所述延迟补偿量添加到所述代理组件的相应接口上。
2.根据权利要求1所述的方法,还包括:根据仿真命令中的工艺角参数来获取特定工艺角下的所述第二模块的标准延迟格式文件。
3.根据权利要求1所述的方法,还包括:比较所述代理组件接收的数据包与所述第二模块发出的数据包,或者比较所述代理组件发出的数据包与所述第二模块接收的数据包,以检查所述第二模块的功能和时序。
4.根据权利要求1所述的方法,其中在所述代理组件的相应接口上要传输包括多个位的信号的情况下,将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述多个位的最大延迟补偿量添加到所述代理组件的相应接口上。
5.根据权利要求1所述的方法,其中所述延迟信息包括:
Tdata_in,表示从所述第二模块的数据输入端到第二模块内部第一级触发器的数据延迟;
Tdata_out,表示从所述第二模块内部最后一级触发器到所述第二模块的数据输出端的数据延迟;
Tclk_in,表示从所述第二模块的时钟输入端到所述第一级触发器的时钟延迟;以及
Tclk_out,表示从所述第二模块的时钟输入端到所述最后一级触发器的时钟延迟。
6.根据权利要求5所述的方法,其中对于从所述代理组件传输到所述第二模块的信号,基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量包括:通过比较Tdata_in与Tclk_in的大小来确定所述延迟补偿量。
7.根据权利要求5所述的方法,其中对于从所述第二模块传输到所述代理组件的信号,基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量包括:通过比较Tclk_out与Tdata_out的求和与Tclk的大小来确定所述延迟补偿量,其中Tclk表示时钟周期。
8.根据权利要求6所述的方法,其中:
在Tdata_in≥Tclk_in的情况下,延迟补偿量为“0”或者“f1*Tclk”,其中Tclk表示时钟周期,f1为0.05至0.2之间的小数;并且
将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应输出接口上。
9.根据权利要求6所述的方法,其中:
在Tdata_in<Tclk_in的情况下,延迟补偿量为“Tclk_in-Tdata_in”或者“Tclk_in-Tdata_in+f1*Tclk”,其中Tclk表示时钟周期,f1为0.05至0.2之间的小数;并且
将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应输出接口上。
10.根据权利要求7所述的方法,其中:
在Tclk_out+Tdata_out≤Tclk的情况下,延迟补偿量为“0”或者“f1*Tclk”,其中f1为0.05至0.2之间的小数;并且
将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应输入接口上。
11.根据权利要求7所述的方法,其中:
在Tclk_out+Tdata_out>Tclk的情况下,延迟补偿量为“f2*Tclk”,其中f2为0.2至0.5之间的小数;并且
将所述延迟补偿量添加到所述代理组件的相应接口上包括:将所述延迟补偿量添加到所述代理组件的相应时钟接口上。
12.根据权利要求8-10中任一项所述的方法,其中f1为0.1。
13.根据权利要求11所述的方法,其中f2为0.25。
14.根据权利要求1所述的方法,还包括:
设置时间点和关键字以从后仿真报告中的时序违例中过滤掉所述时间点之前的时序违例以及与所述关键字相关的时序违例;以及
将时序违例过滤之后剩余的时序违例按照时间排列以及按照路径分组并分别输出到两个文件中,同时提供与剩余的时序违例中的每一个时序违例相关的信息。
15.一种用于后仿真的仿真平台,其特征在于,包括:
接管单元,被配置成用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件代替所述第一模块来与第二模块交互;
解析单元,被配置成解析所述第二模块的标准延迟格式文件以提取所述第二模块的与所述代理组件的相应接口交互的接口的延迟信息,并基于所述延迟信息计算所述代理组件的相应接口的延迟补偿量,其中所述代理组件与所述第二模块使用同一时钟源;以及
补偿单元,被配置成将所述延迟补偿量添加到所述代理组件的相应接口上。
16.一种计算设备,包括根据权利要求15所述的用于后仿真的仿真平台。
17.一种用于后仿真的方法,其特征在于,包括:
用第一模块的代理组件接管所述第一模块的接口,以使所述代理组件的第一组接口代替所述第一模块的部分接口来与第二模块交互,并且使所述代理组件的第二组接口代替所述第一模块的另一部分接口来与第三模块交互;
解析所述第二模块和所述第三模块的标准延迟格式文件以分别提取所述第二模块的与所述第一组接口交互的接口的延迟信息以及所述第三模块的与所述第二组接口交互的接口的延迟信息,并基于所述延迟信息分别计算所述第一组接口和所述第二组接口的延迟补偿量,其中所述代理组件的第一组接口与所述第二模块使用同一时钟源,并且所述代理组件的第二组接口与所述第三模块使用同一时钟源;以及
将所述延迟补偿量分别添加到所述第一组接口和所述第二组接口上。
18.一种其上存储有指令的机器可读介质,所述指令当被机器执行时使得所述机器执行根据权利要求1-14以及17中任一项所述的方法。
CN202310258994.6A 2023-03-17 2023-03-17 用于后仿真的方法和仿真平台 Active CN115983172B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310258994.6A CN115983172B (zh) 2023-03-17 2023-03-17 用于后仿真的方法和仿真平台

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310258994.6A CN115983172B (zh) 2023-03-17 2023-03-17 用于后仿真的方法和仿真平台

Publications (2)

Publication Number Publication Date
CN115983172A CN115983172A (zh) 2023-04-18
CN115983172B true CN115983172B (zh) 2023-06-09

Family

ID=85968453

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310258994.6A Active CN115983172B (zh) 2023-03-17 2023-03-17 用于后仿真的方法和仿真平台

Country Status (1)

Country Link
CN (1) CN115983172B (zh)

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI533154B (zh) * 2014-09-17 2016-05-11 瑞昱半導體股份有限公司 數位電路設計方法及相關的電腦程式產品
KR102328044B1 (ko) * 2014-10-21 2021-11-17 삼성전자주식회사 시뮬레이터의 작동 방법과 이를 수행할 수 있는 장치
CN105138774B (zh) * 2015-08-25 2018-07-06 中山大学 一种基于集成电路层次化设计的时序后仿真方法
WO2022178793A1 (zh) * 2021-02-26 2022-09-01 华为技术有限公司 一种延迟补偿方法以及相关设备
CN115238619B (zh) * 2022-09-20 2023-06-27 北京数字光芯集成电路设计有限公司 数字芯片的子模块后仿真方法和系统

Also Published As

Publication number Publication date
CN115983172A (zh) 2023-04-18

Similar Documents

Publication Publication Date Title
US8229723B2 (en) Performance software instrumentation and analysis for electronic design automation
CN100573537C (zh) 一种soc芯片系统级验证系统及方法
US9026966B1 (en) Co-simulation methodology to address performance and runtime challenges of gate level simulations with, SDF timing using emulators
US20110307847A1 (en) Hybrid system combining TLM simulators and HW accelerators
US7424416B1 (en) Interfacing hardware emulation to distributed simulation environments
CN112949233B (zh) Fpga芯片的自动化开发方法及装置、电子设备
US20230342283A1 (en) Waveform based reconstruction for emulation
US20220292248A1 (en) Method, system and verifying platform for system on chip verification
US10678976B2 (en) Generic protocol analyzer for circuit design verification
US8532975B2 (en) System and method implementing a simulation acceleration capture buffer
CN112417798B (zh) 一种时序测试方法、装置、电子设备及存储介质
US10664563B2 (en) Concurrent testbench and software driven verification
WO2024046362A1 (zh) 验证系统、验证方法、电子设备以及存储介质
US10664637B2 (en) Testbench restoration based on capture and replay
US10546081B2 (en) Full memory logical erase for circuit verification
CN107784185B (zh) 一种门级网表中伪路径的提取方法、装置及终端设备
CN115983172B (zh) 用于后仿真的方法和仿真平台
US11295052B1 (en) Time correlation in hybrid emulation system
CN116848518A (zh) 一种延迟补偿方法以及相关设备
CN116842902B (zh) 针对黑盒模型的系统级仿真建模方法
CN116451625B (zh) 用于rtl和带sdf网表的联合仿真的装置和方法
Yeh et al. Enabling TLM-2.0 interface on QEMU and SystemC-based virtual platform
CN117113908B (zh) 一种验证方法、装置、电子设备及可读存储介质
US9710579B1 (en) Using smart timing models for gate level timing simulation
CN117077603B (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