CN116451625B - 用于rtl和带sdf网表的联合仿真的装置和方法 - Google Patents
用于rtl和带sdf网表的联合仿真的装置和方法 Download PDFInfo
- Publication number
- CN116451625B CN116451625B CN202310700643.6A CN202310700643A CN116451625B CN 116451625 B CN116451625 B CN 116451625B CN 202310700643 A CN202310700643 A CN 202310700643A CN 116451625 B CN116451625 B CN 116451625B
- Authority
- CN
- China
- Prior art keywords
- module
- delay
- sdf
- simulation
- setting
- 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
Links
- 238000004088 simulation Methods 0.000 title claims abstract description 192
- 238000000034 method Methods 0.000 title claims abstract description 79
- 230000015654 memory Effects 0.000 claims description 22
- 230000006399 behavior Effects 0.000 claims description 7
- 230000003993 interaction Effects 0.000 description 30
- 230000008569 process Effects 0.000 description 16
- 230000005284 excitation Effects 0.000 description 14
- 238000012795 verification Methods 0.000 description 13
- 230000006870 function Effects 0.000 description 12
- 230000001934 delay Effects 0.000 description 11
- 238000012545 processing Methods 0.000 description 11
- 238000013461 design Methods 0.000 description 8
- 238000005070 sampling Methods 0.000 description 8
- 239000004065 semiconductor Substances 0.000 description 7
- 238000010586 diagram Methods 0.000 description 6
- 230000005540 biological transmission Effects 0.000 description 3
- 210000004027 cell Anatomy 0.000 description 3
- 230000003287 optical effect Effects 0.000 description 3
- 238000004458 analytical method Methods 0.000 description 2
- 230000003542 behavioural effect Effects 0.000 description 2
- 238000004891 communication Methods 0.000 description 2
- 238000012938 design process Methods 0.000 description 2
- 230000006872 improvement Effects 0.000 description 2
- 239000007787 solid Substances 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 241000699670 Mus sp. Species 0.000 description 1
- 238000012300 Sequence Analysis Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 210000003850 cellular structure Anatomy 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000004590 computer program Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 230000002093 peripheral effect Effects 0.000 description 1
- 238000010248 power generation Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000013515 script Methods 0.000 description 1
- 229910052710 silicon Inorganic materials 0.000 description 1
- 239000010703 silicon Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
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/333—Design for testability [DFT], e.g. scan chain or built-in self-test [BIST]
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2115/00—Details relating to the type of the circuit
- G06F2115/02—System on chip [SoC] design
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
本公开涉及一种用于RTL和带SDF网表的联合仿真的装置和方法,所述方法包括:将第一模块、第二模块以及芯片顶层设置为网表形态,并且将第三模块设置为RTL形态,其中第一模块是仿真用例所经过的数据路径上的目标模块,第二模块是所述数据路径上与第一模块直接交互的模块,并且第三模块是所述数据路径上除第一模块和第二模块之外的其他模块;获取第一SDF文件、第二SDF文件和顶层SDF文件以用于分别配置第一模块、第二模块以及所述芯片顶层,其中顶层SDF文件包括互连延时模型的延时参数;以及基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型。
Description
技术领域
本公开总体上涉及集成电路仿真领域,并且具体地涉及一种用于RTL和带SDF网表的联合仿真的装置和方法。
背景技术
在集成电路的设计过程中,仿真和验证是至关重要的环节。针对集成电路的仿真过程包括功能前仿真和时序后仿真这两个阶段。功能前仿真一般是针对RTL(RegisterTransfer Level,寄存器传输级)的仿真,其主要手段是通过仿真验证所设计电路的逻辑功能正确性,仿真速度相对较快。时序后仿真一般是基于基本门单元组成的网表(Netlist)、同时将网表的门级电路延迟和各种门级电路之间的连线延迟(通过SDF(Standard DelayFile,标准延迟文件)表示)等考虑在内的仿真,其目的是发现设计中潜在的约束和时序问题,仿真速度相对较慢。
在现有技术中,当执行时序后仿真时,一般会将整个芯片作为待测设计,并且针对整个芯片进行后仿真,但是仿真速度可能会在复杂集成电路逻辑的情况下变得非常慢。为了加快后仿真速度,提出了层次化策略,即,将整个设计对象划分为多个相对独立的子系统来验证,以缩短后仿真验证的周期。然而,这种层次化策略在超大规模SoC场景中仍然很慢。
因此,需要开发一种用于对集成电路进行时序后仿真的技术,该技术能够在各种芯片场景、甚至是超大规模SoC场景中也能够提供较快的仿真速度。
发明内容
为了解决上述问题,本公开提供了一种利用RTL和带SDF网表的联合仿真来提升大规模集成电路的GLS速度的装置和方法,所述装置和方法除了采用了层次化的GLS仿真策略之外,还支持利用RTL和带SDF网表一起进行联合仿真,以进一步实现仿真速度提升的目的。此外,本公开进一步解决了现有技术中由于直接在目标模块(即,待测试的模块)之前设置人为的传输延时所导致的无法真实还原目标模块、尤其是其边界处的时序情况的缺陷,因此改进了针对芯片时序的后仿真过程的真实性和完备性。
根据本公开的一个方面,提供了一种用于RTL和带SDF网表的联合仿真的方法,其特征在于,包括:将第一模块、第二模块以及芯片顶层设置为网表形态,并且将第三模块设置为RTL形态,其中第一模块是仿真用例所经过的数据路径上的目标模块,第二模块是所述数据路径上与第一模块直接交互的模块,并且第三模块是所述数据路径上除第一模块和第二模块之外的其他模块;获取第一SDF文件、第二SDF文件和顶层SDF文件以用于分别配置第一模块、第二模块以及所述芯片顶层,其中顶层SDF文件包括互连延时模型的延时参数;以及基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型。在一些示例中,通过仅将芯片顶层、所述数据路径上的目标模块(即,第一模块)以及与其直接交互的模块(即,第二模块)设置为网表形态,而将其他模块(即,第三模块)均设置为RTL形态,可以大大提高对芯片进行后仿真的速度。此外,在一些示例中,通过在第二模块与第三模块之间、而不是第一模块与第二模块之间插入所述互连延时模型,使得在作为目标模块的第一模块的边界处测量到的时序信息是真实的,从而改进了时序仿真的完备性。
在一些实施例中,第一SDF文件包括第一模块的时序信息,并且第二SDF文件包括第二模块的时序信息。
在一些实施例中,所述方法还包括:将所述仿真用例经过的数据路径以外的模块设置为dummy形态。具体而言,将所述仿真用例所不会经过的数据路径上的模块设置为dummy形态。在这些示例中,由于所述仿真用例不会所经过的数据路径上的模块均被设置为“无功能”模式,因此这显著地减小了所述仿真用例的仿真逻辑规模。
在一些实施例中,所述方法还包括:将第三模块中所引用的标准库单元和存储器单元设置为行为模型。在这些示例中,由于RTL形态模块中的标准库和存储器被设置为行为模型,从而不参与任何时序仿真,因此这规避了时序仿真所引入的不必要的时序检查信息,并且消除了整个后仿真需要做时序检查所误报的时序违例。
在一些实施例中,所述配置第一模块、第二模块以及所述芯片顶层包括:将第一SDF文件、第二SDF文件和顶层SDF文件分别加载到第一模块、第二模块以及所述芯片顶层,使得它们被设置为带SDF网表形态。
在一些实施例中,所述方法还包括:提取第三模块与第二模块直接交互的相对于第二模块为输入和输出的端口信号,并且将所述端口信号发送到后端设备以用于所述SDF文件的获取。
在一些实施例中,所述延时参数包括第二模块与第三模块之间的线延时,并且所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:将第二模块与第三模块之间的线延时设置为0。在一些实施例中,所述延时参数包括:所述芯片顶层至第三模块内最后发送去往第二模块的输出信号的寄存器的第一延时;以及所述芯片顶层至第二模块内最先接收来自第三模块的输入信号的寄存器的第二延时;其中所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:设置第二延时大于第一延时。在这些实施例中,所述第二延时比所述第一延时大10~20%。在一些实施例中,所述延时参数包括:第二模块内最后发送去往第三模块的输出信号的寄存器与第三模块内最先接收来自第二模块的输入信号的寄存器之间的第三延时。在这些实施例中,所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:将所述第三延时设置为5~10ps。在上面这些示例中,由于第二模块和第三模块分别属于不同的形态,即网表形态和RTL形态,因此需要相应地设置第二模块与第三模块之间的延时,从而保证从第二模块到第三模块以及从第三模块到第二模块的交互握手数据采样均是正确的,具体而言,即分别保证第二和第三模块中接收信号的寄存器的建立时间没有错误,从而实现了RTL形态模块与网表形态模块之间的信号时延的全局平衡。
在一些实施例中,所述方法还包括:将所述芯片顶层至第三模块的输入端的线延时设置为0。在一些实施例中,所述方法还包括:将所述芯片顶层至第三模块的输出端的线延时设置为0。这样,可以最大程度地减少与目标模块(即,第一模块)不相关的模块或单元的线延时对时序仿真过程的影响。
根据本公开的另一方面,提供了一种用于RTL和带SDF网表的联合仿真的装置,其特征在于,包括:模块设置组件,其被配置成:将第一模块、第二模块以及芯片顶层设置为网表形态,并且将第三模块设置为RTL形态,其中第一模块是仿真用例所经过的数据路径上的目标模块,第二模块是所述数据路径上与第一模块直接交互的模块,并且第三模块是所述数据路径上除第一模块和第二模块之外的其他模块;文件获取组件,其被配置成获取第一SDF文件、第二SDF文件和顶层SDF文件以用于分别配置第一模块、第二模块以及所述芯片顶层,其中顶层SDF文件包括互连延时模型的延时参数;以及延时设置组件,其被配置成基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型。
根据本公开的又一方面,提供了一种其上存储有可执行指令的计算机可读介质,所述指令在被处理器执行时使得所述处理器实行根据前述方面的步骤的方法。
通过本公开提供的用于RTL和带SDF网表的联合仿真的方法和装置,可以允许在采用层次化仿真策略之外,还根据需求对芯片中的各个模块进行RTL和带SDF网表仿真的任意组合,从而缩短后仿真验证的时间,提高仿真验证的效率。具体而言,本公开通过在芯片内仅将所述数据路径上的目标模块以及与目标模块直接交互的模块设置为带SDF网表形态、并且将其他模块都设置为RTL形态,使得所述数据路径上的大部分模块都处于仿真速度相对较快的RTL模式,而只有目标模块以及与目标模块直接交互的模块处于仿真速度相对较慢的SDF网表模式,从而大大提升了原本耗时的后仿真过程的仿真速度。
此外,本公开通过在目标模块以及与目标模块直接交互的模块之前插入特定的互连延时模型,也就是说,将互连延时模型插入在被设置为RTL形态的其他模块与跟目标模块直接交互的模块之间,使得目标模块与跟其直接交互的模块之间的信号时序是真实的,换句话说,使得目标模块的边界处的时序情况是真实的而非人为设定的,因此有助于提高芯片后仿真的真实性和完备性。
总体而言,本公开的技术实现了仿真速度的提升,并且能够对目标模块进行更加真实完备的时序仿真。
根据在下文中所描述的实施例,本公开的这些和其他方面将是清楚明白的,并且将参考在下文中所描述的实施例而被阐明。
附图说明
现在将参考附图描述本公开的具体示例性实施例。然而,本公开可以以很多不同的形式来实施,并且不应当被解读为限于本公开所阐述的实施例;相反,这些实施例被提供以便使该公开全面而完整,并且将向本领域技术人员完全表达本公开的范围。在附图所示的特定示例性实施例的详细描述中所使用的术语不旨在对本公开进行限制。
图1示出了可以在其中实现根据本公开的实施例的技术方案的示例性应用场景;
图2示例性地示出了根据本公开的实施例的RTL和带SDF网表的联合仿真结构的框图;
图3示例性地示出了根据本公开的实施例的用于RTL和带SDF网表的联合仿真的方法的流程图;
图4示例性地示出了根据本公开的一个实施例的RTL和带SDF网表的联合仿真结构的示意图;
图5示例性地示出了根据本公开的实施例的用于RTL和带SDF网表的联合仿真的装置的框图;
图6示出了示例系统,其包括表示可以实现本公开所描述的各种方法的一个或多个系统和/或设备的示例计算设备。
具体实施方式
下面的描述提供了本公开的各种实施例的具体细节,以便本领域的技术人员能够充分理解和实施本公开的各种实施例。应当理解的是,本公开的技术方案可以在没有这些具体细节的情况下实施。在一些情况下,本公开并没有示出或详细描述一些熟知的结构或功能,以避免这些不必要的描述使本公开的实施例的描述模糊不清。在本公开中使用的术语应当以其最宽泛的合理方式来理解,即使它是结合本公开的特定实施例来使用的。
在集成电路的设计过程中,针对集成电路的验证过程主要包括两个阶段,功能前仿真和时序后仿真。功能前仿真一般是针对RTL的仿真,仿真速度相对较快,而时序后仿真一般是基于网表的仿真,仿真速度相对较慢。在待测设计资源规模较小时,后仿真过程可以将整个芯片作为待测设计。在版图设计完成后,将整个芯片的网表以及对应的标准延时文件联合在一起进行时序级仿真,整体的仿真速度相对是可以接受的。
然而,伴随着集成电路逻辑复杂度的日渐增加,导致对集成电路的后仿真所需要的时间越来越长,因此验证策略应运而生。所谓层次化是指将整个设计对象划分为多个相对独立的子系统来验证,以缩短验证的周期,尤其是缩短后仿真验证的时间。
在用于后仿真的GLS验证过程中,普遍会采用层次化的验证策略,而在超大规模的SoC内,由于数据流较长,因此数据流所经过的模块以及子系统也会较多。所以,在超大规模SoC的情况下,即使该GLS验证过程使用层次化的验证策略,仿真速度在某些芯片场景(诸如GPU、GPGPU以及部分AI SoC)中也仍然非常慢。
此外,为了提高在超大规模SoC场景下的后仿真速度,提出了如下相关技术:其中仅将目标模块设置为网表形态,而将与其直接交互的模块设置为RTL形态模块,然后直接在目标模块之前(即,在目标模块与RTL形态模块之间)设置输入延时模型来模拟模块之间的传输延时行为,以满足网表仿真的时序需求。然而,由于设置在目标模块与RTL形态模块之间的所述输入延时模型并非表示芯片电路真实产生的传输延时,而是例如人为手动设置的参数值,从而无法准确地还原芯片电路中的真实时序情况、尤其是目标模块及其边界处的真实时序情况,因此这导致对目标模块的时序仿真是不完备的。
为了解决上述问题,本公开提出了一种用于RTL和带SDF网表的联合仿真的技术,该技术可以在提升后仿真速度的同时,还能够准确且真实地模拟待测网表模块、特别是其边界处的时序情况,从而改进后仿真过程的真实性和完备性。
图1示出了可以在其中实现根据本公开的实施例的技术方案的示例性应用场景100。如图1所示,所示的应用场景100可以包括仿真设备110以及与仿真设备110通信地耦合的仿真平台120,其中仿真平台120可以被配置成执行针对集成电路的各种仿真过程,包括功能前仿真和时序后仿真,具体地可以被配置成执行根据本公开的用于RTL和带SDF网表的联合仿真的方法。
作为示例,仿真平台120可以是在仿真设备110内部搭建的用于对集成电路进行仿真的软件或其他平台,或者也可以是在除设备110之外的其他设备或服务器上构建的仿真平台。此外,仿真平台120可以包括集成电路组件130,用于在该平台中被仿真。在该示例中,集成电路组件130可以是在仿真平台120内构建的虚拟组件,然而在其他示例中,集成电路组件130也可以是在仿真平台120之外的现实元件或器件,这些元件或器件也可以通过某种虚拟化的方式被映射到仿真平台120中。作为示例,集成电路组件130可以包括用于集成电路仿真的任何种类的半导体器件或元件,并且可以以硬件、软件、固件或其组合的方式来实现,例如作为实体半导体器件或装置,或者作为软件平台120上的虚拟组件等等。
仿真设备110可以至少包括用于处理数据的一个或多个处理器以及用于存储数据的一个或多个存储器,该数据包括但不限于用于启动时序仿真的激励信号、关于仿真平台120的配置信息、集成电路组件130内的各个模块以及它们之间的时序信息、以及用于分析和评价的仿真结果数据等等。如本公开所使用的,处理器可以包括用于处理数据的任何类型的计算元件,诸如但不限于专用集成电路(ASIC)、数字信号处理器(DSP)、可编程逻辑控制器(PLC)和/或现场可编程门阵列(FPGA)等等。如本公开所使用的,存储器可以包括但不限于易失性存储介质(诸如随机存取存储器(RAM)、静态随机存取存储器(SRAM)和动态随机存取存储器(DRAM))和/或非易失性存储介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。
如图1所示,所示的应用场景100还可以包括与仿真设备110通信地耦合的后端设备140,用于例如接收端口数据和/或提供关于模块时序信息的数据等,诸如SDF文件。在一些示例中,后端设备140可以是由人类操作者(例如,企业的后端团队)控制的终端或服务器,并且可以具有与仿真设备110类似的配置。
作为示例,在本公开的技术方案的背景下,仿真设备110可以构建仿真平台120以启动针对集成电路组件130(具体而言,针对其中的目标模块)的时序仿真,将集成电路组件130中的相应模块设置为不同的形态(例如,RTL形态和网表形态),并且向后端设备140发送关于集成电路组件130内的一些模块的所提取的端口信号或其他信号。然后,后端设备140可以基于所述端口信号将用于配置这些模块以及集成电路组件130的SDF文件提供给仿真设备110。此时,仿真设备110就可以控制仿真平台120以根据接收到的SDF文件来配置相应模块内部的延时以及它们之间的互连延时,并且针对集成电路组件130中的目标模块执行时序仿真。最后,仿真设备110可以从仿真平台120接收关于目标模块的仿真结果,并且基于仿真结果对集成电路组件130内的目标模块的时序情况进行评估。
上面描述的场景100仅仅是可以在其中实现本公开的实施例的一个示例,并不是限制性的。例如,仿真设备110和/或后端设备140可以是终端或服务器等能够执行时序仿真的设备。当仿真设备110和/或后端设备140是终端时,其可以是平板电脑、笔记本电脑、台式计算机等等,此处不做限制。当仿真设备110和/或后端设备140是服务器时,其可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,并且还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
图2示例性地示出了根据本公开的实施例的RTL和带SDF网表的联合仿真结构200的框图。如图2所示,芯片205可以是根据本公开的RTL和带SDF网表联合仿真所针对的集成电路主体,并且至少包括目标模块201、交互模块202和其他模块203。作为示例,芯片205可以是用于集成电路仿真的任何种类的半导体器件,并且可以用于消费电子、通信系统、光伏发电、照明、大功率电源转换等领域。此外,芯片205可以以硬件、软件、固件或其组合的方式来实现,例如作为实体半导体器件或装置,或者作为软件平台上的虚拟组件等等。目标模块201是仿真用例所经过的数据路径上的待测试的模块,也就是本公开描述的时序仿真过程中所感兴趣的模块。交互模块202是所述数据路径上与目标模块201直接交互(或者是有直接数据交换)的模块,并且其他模块203是所述数据路径上除目标模块201和交互模块202之外的所有其他模块。类似地,作为芯片205的一部分,目标模块201、交互模块202和其他模块203中的每一个也可以以硬件、软件、固件或其组合的方式来实现。要注意的是,虽然图2将其他模块203示出为单个模块,但是其他模块203也可以包括多个模块。此外,除了目标模块201、交互模块202和其他模块203之外,还存在所述仿真用例经过的数据路径以外的模块(即,所述仿真用例所不会经过的数据路径上的模块)、以及在芯片205内部或外部的其他功能组件或元件(未示出),例如时钟单元、仿真激励单元、结果收集单元等等。
在一些示例中,目标模块201、交互模块202和其他模块203可以彼此互连,例如以无线方式或者有线方式而连接。芯片205中的上述模块可以具有用于存储数据的一个或多个寄存器或其他存储元件以及用于接收和发送相应信号的输入端和输出端。此外,目标模块201、交互模块202和其他模块203可以连接到芯片205中的另外的模块或功能组件,例如时钟单元、仿真激励单元、结果收集单元等等。作为示例,时钟单元可以至少通信地连接到交互模块202和其他模块203,以用于给这些模块提供标准时钟信号,使得芯片整体产生时序。此外,作为示例,仿真激励单元和结果收集单元可以分别连接到其他模块203的输入端和输出端,以便给其他模块203以及相应地给交互模块202和目标模块201提供用于后仿真的输入激励、以及接收仿真结果。
如图2所示,芯片205顶层、目标模块201和交互模块202可以被设置为网表形态,而其他模块203可以被设置为RTL形态。在该示例中,在芯片205内的模块当中,由于只有目标模块201和交互模块202被设置为仿真速度较慢的网表形态,而芯片205内的其他模块203均被设置为仿真速度较快的RTL形态,因此即使是在超大规模SOC集成电路的场景中,也能够显著提高针对芯片205的时序仿真的速度。
有利的是,在交互模块202与其他模块203之间可以设置互连延时模型204,该互连延时模型204是其他模块203与交互模块202之间的互连延时、以及可选地与其他模块203相关联的输入或输出线延时的整体抽象化表示,其中关于这些延时的参数可以被配置成使得在交互模块202与其他模块203之间具有正确的交互握手数据采样,也就是说,使得来自其他模块203的输入信号在交互模块202处被正确地采样,或者反之亦然。在该示例中,由于互连延时模型204被设置在交互模块202与其他模块203之间,而不是直接设置在目标模块201之前(即,目标模块201与交互模块202之间),因此关于目标模块201的时序信息、包括其边界处的时序信息都是真实的,从而改进了该仿真的完备性。在一些示例中,互连延时模型204的延时参数可以包括其他模块203与交互模块202之间的线延时的值、以及它们的寄存器之间的延时值,并且可选地还可以包括芯片顶层至其他模块203的输入端和/或输出端的线延时的值。
如图2所示,还示出了执行根据本公开的RTL和带SDF网表的联合仿真所需要的SDF文件。所述SDF文件即标准延时格式(Standard Delay Format)文件,它把布局布线过程中器件延时和线延时的信息保留下来,据此就可以在路径时序分析时计算整条路径的时序,然后通过判断时序约束条件来确定时序要求是否被满足。在该示例中,SDF文件可以包括与目标模块201相对应的第一SDF文件211、与交互模块202相对应的第二SDF文件212、以及与芯片205顶层相对应的顶层SDF文件213。第一SDF文件211可以包括关于目标模块201的时序信息,第二SDF文件212可以包括关于交互模块202的时序信息,并且顶层SDF文件213可以包括插入在其他模块203与交互模块202之间的互连延时模型204的延时参数。如本公开所使用的,与“芯片顶层”相对应的顶层SDF文件可以表示集成电路芯片内的各个模块之间的延时或时序情况,而第一SDF文件和第二SDF可以表示这些模块内部的延时或时序情况。
在一些示例中,上述SDF文件可以是从芯片205外部获取的,例如由控制后端设备140(图1)的后端团队来提供。作为示例,例如在获取上述SDF文件之前,可以利用开发的脚本来提取其他模块203与交互模块202直接交互的相对于交互模块202为输入和输出的端口信号,并且将所述端口信号反馈给后端设备或后端团队,然后,后端设备或后端团队可以根据所述端口信号来提供这些SDF文件以用于配置上述模块和芯片以及相应的延时。如本文中所使用,上述SDF文件中的时序信息以及延时参数可以是在获取上述SDF文件之前被预先配置的,例如由后端团队根据端口信号中提供的信息(例如,关于如何设置SDF文件以及相应延时参数的信息)来设置。当然,也可以在获取SDF文件之后对其中的时序信息以及延时参数进行相应的设置和修改。
在一些示例中,在获取了分别与目标模块201、交互模块202以及芯片205顶层相对应的第一SDF文件211、第二SDF文件212和顶层SDF文件213之后,上述SDF文件可以分别被加载到目标模块201、交互模块202以及芯片205顶层,使得它们均被设置为带SDF网表形态,换句话说,目标模块201、交互模块202以及芯片205顶层可以通过各自的SDF文件被配置。同时,互连延时模型204也可以通过顶层SDF文件213中的延时参数被设置。要注意的是,上述加载步骤不是必需的,目标模块201、交互模块202以及芯片205顶层也可以通过其他方式被配置,例如被设置为带SDF网表形态。
在一些示例中,所述仿真用例经过的数据路径以外的模块(未示出)可以被设置为dummy形态,以减小该仿真用例的仿真逻辑规模。如本公开所使用的,术语“dummy”表示将半导体元件或结构设置为无功能的,也就是说,它们不会被用于任何电路或逻辑功能,由此可以大大减少芯片中的有功能模块的数量。此外,在一些示例中,RTL形态的其他模块203中所引用的标准库单元和存储器单元可以被设置为行为模型,以规避带时序仿真所引入的不必要的时序检查信息。
要注意的是,上面描述的组件和过程仅仅是示例性的,并且图2的联合仿真结构200可以不限于这些实施例。
图3示例性地示出了根据本公开的实施例的用于RTL和带SDF网表的联合仿真的方法300的流程图。方法300开始于步骤301,即,将仿真用例所经过的数据路径上的目标模块(作为第一模块)、与目标模块直接交互的模块(作为第二模块)、以及芯片顶层设置为网表形态,并且将所述数据路径上的除上述模块之外的其他模块(作为第三模块)设置为RTL形态。这样,由于芯片内除了第一模块和第二模块之外的其他大多数模块都处于仿真速度较快的RTL模式,因此可以显著地加快时序仿真的速度。
在步骤302,可以获取(例如,从后端设备或后端团队获取)第一SDF文件、第二SDF文件和顶层SDF文件,以用于分别配置第一模块、第二模块以及所述芯片顶层,例如使得它们被设置为带SDF网表形态,其中顶层SDF文件包括互连延时模型的延时参数。
在步骤303,可以基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型。如本公开所描述,所述互连延时模型在第二模块与第三模块之间的设置可以使目标模块及其边界处的时序信息是真实的,并且所述延时参数可以被设置为使得在第二模块与第三模块之间具有正确的数据采样。在完成了步骤301-303之后,方法300就可以执行对第一模块(即,待测试的目标模块)的时序仿真。
在一些示例中,可以将所述仿真用例经过的数据路径以外的模块设置为dummy形态,以便减小所述仿真用例的仿真逻辑规模。在一些示例中,可以将第三模块中所引用的标准库单元和存储器单元设置为行为模型,以便规避时序仿真所引入的不必要的时序检查信息。在又一些示例中,还可以提取第三模块与第二模块直接交互的相对于第二模块为输入和输出的端口信号,并且将所述端口信号发送到后端设备(例如,图1的后端设备140,其由后端团队来管理或控制)。这里,后端设备或后端团队在接收到所述端口信号之后,可以提供关于第一模块的第一SDF文件、关于第二模块的第二SDF文件以及关于芯片顶层的顶层SDF文件。
通过方法300的上述步骤301-303,可以在大型SoC系统中执行RTL+带SDF网表的联合仿真,从而加快整个SoC的后仿真速度,为整个芯片最终的功能正确地提供时序检查的确认依据。要注意的是,出于说明性的目的,上述方法300及相应过程仅仅是示例性的,并且在此不做限制。此外,上面描述的方法300可以包括更多或更少的步骤,并且这些步骤可以并行或同时地执行,或者以其他方式执行。下面将结合图4来详细地描述方法300的步骤。
图4示例性地示出了根据本公开的一个实施例的RTL和带SDF网表的联合仿真结构400的示意图。类似于图2的联合仿真结构200,图4的仿真结构400是用于RTL和带SDF网表的联合仿真的示例性架构,但是该仿真结构400还描绘了用于仿真的激励单元406、结果收集单元407、时钟单元408、以及相应模块内的寄存器和其他细节等等。
如图4所示,描绘了芯片405的示例结构,包括模块A 401、模块B 402和模块C 403,其中模块A 401是仿真用例所经过的数据路径上的目标模块,模块B 402是所述数据路径上与模块A 401直接交互(或者是有直接数据交换)的模块,并且模块C 403是所述数据路径上除模块A 401和模块B 402之外的其他模块。要注意的是,虽然图4将模块C 403示出为单个模块,但是模块C 403也可以包括多个模块。此外,在芯片405中,除了模块A 401、模块B 402和模块C 403之外,还存在所述仿真用例所经过的数据路径以外的模块(未示出)。
如图4所示,还示出了激励单元406和结果收集单元407,它们可以位于芯片405的外部,并且分别用于提供仿真的输入激励、以及接收仿真结果。在该示例中,激励单元406和结果收集单元407可以分别连接到模块C 403的输入端和输出端。要注意的是,虽然激励单元406和结果收集单元407在图4中被示出为分离的组件,但是在其他示例中可以被集成在单个组件中。如图4所示,示出了芯片405内的时钟单元408,其中时钟单元408可以至少通信地连接到模块B 402和模块C 403,以用于给这些模块提供标准时钟信号,使得芯片整体产生时序。当然,时钟单元408位于芯片405外部或者通过某种方式连接到芯片405也是可能的。如图4所示,进一步示出了模块B 402和模块C 403内的寄存器,它们分别位于点K、L、M、M(模块B 402的寄存器)以及点C、D、E、F(模块C 403的寄存器)处,并且由字母“D”来表示。如图4所示,还示出了至少四条数据路径,包括从激励单元406→模块C 403→模块B 402→模块A 401的上面两条数据路径,以及从模块A 401→模块B 402→模块C 403→结果收集单元407的下面两条数据路径。此外,图4还示出了被设置在模块B 402与模块C 403之间的互连延时模型404(由模块B与模块C之间的“delay”来表示)、以及关于上述模块的其他节点和细节。
要注意的是,图4中描绘的仿真结构400仅仅是示例性的,并且还可以以其他的方式来构造。例如,仿真结构400可以包括多于四条数据路径,可以包括比上述寄存器C-F和K-M数量更多的寄存器,或者可以包括其他元件等等。
现在将结合图4来详细说明图3中描述的方法300。
在一些示例中,可以将模块A 401、模块B 402以及芯片405顶层设置为网表形态,并且将模块C 403设置为RTL形态(如图3的步骤301)。如上文所描述,对模块A 401、模块B402和模块C 403的上述形态设置具有如下优点:使得即使是在超大规模SOC集成电路的场景中,也能够显著提高针对芯片405的后仿真的速度。
在一些示例中,可以将所述仿真用例经过的数据路径以外的模块(未示出)设置为dummy形态。这样,由于所述仿真用例经过的数据路径以外的模块(即,所述仿真用例所不会经过的数据路径上的所有模块)均被设置为“无功能”模式,因此这显著地减小了所述仿真用例的仿真逻辑规模,从而提高了仿真效率。此外,在一些示例中,可以将RTL形态的模块C403中所引用的标准库单元和存储器单元设置为行为模型。这样,由于RTL形态模块中的标准库和存储器被设置为行为模型,不参与任何时序仿真,因此这规避了时序仿真所引入的不必要的时序检查信息,并且消除了整个后仿真需要做时序检查所误报的时序违例。
在一些示例中,可以获取与模块A 401相关联的第一SDF文件、与模块B 402相关联的第二SDF文件、以及与芯片405顶层相关联的顶层SDF文件(例如,图2的第一SDF文件211、第二SDF文件212和顶层SDF文件213),以用于配置模块A 401、模块B 402以及芯片405顶层(如图3的步骤302)。如上文所描述,第一SDF文件可以包括关于模块A 401的时序信息,第二SDF文件可以包括关于模块B 402的时序信息,并且顶层SDF文件可以包括设置在模块B 402与模块C 403之间的互连延时模型404的延时参数。在这些示例中,例如在获取上述SDF文件之前,可以提取第三模块与第二模块直接交互的相对于第二模块为输入和输出的端口信号,并且将所述端口信号发送到后端设备(例如,图1的后端设备140,其由后端团队来管理或控制)以用于所述SDF文件的获取。此外,在这些示例中,例如在获取上述SDF文件之后,可以将这些SDF文件分别加载到模块A 401、模块B 402以及芯片405顶层,使得它们被设置为带SDF网表形态。当然,也可以利用上述SDF文件以其他方式来配置模块A 401、模块B 402以及芯片405顶层。
在一些示例中,可以基于所述延时参数在模块C 403与模块B 402之间设置互连延时模型404(如图3的步骤303)。如上文所描述,互连延时模型404是模块C 403与模块B 402之间的互连延时、以及可选地与模块C 403相关联的输入或输出线延时的整体抽象化表示,其中互连延时模型404的延时参数可以被设置为使得在模块B 402与模块C 403之间具有正确的数据采样,也就是说,使得来自模块C 403的输入信号在模块B 402处被正确地采样,或者反之亦然。如上文所描述,互连延时模型404在模块C 403与模块B 402之间的设置具有如下优点:使得关于目标模块A 401的时序信息、包括其边界处的时序信息都是真实的,从而改进了该仿真的完备性。
下面将详细描述如何设置上面讨论的延时参数以及互连延时模型404。
在一些示例中,互连延时模型404的延时参数可以包括:模块B 402与模块C 403之间的线延时;芯片405顶层至模块C 403内的寄存器C/D的延时;芯片405顶层至模块B 402内的寄存器K/L的延时;以及模块B 402内的寄存器M/N与模块C 403内的寄存器E/F之间的延时。这里,寄存器C、D是模块C 403内最后发送去往模块B 402的输出信号的那些寄存器,寄存器K、L是模块B 402内最先接收来自模块C 403的输入信号的那些寄存器,寄存器M、N是模块B 402内最后发送去往模块C 403的输出信号的那些寄存器,并且寄存器E、F是模块C 403内最先接收来自模块B 402的输入信号的那些寄存器。在这些示例中,为了使得在模块B402与模块C 403之间具有正确的数据采样,可以将模块B 402与模块C 403之间的线延时设置为0,可以将芯片405顶层至模块C 403内的寄存器C/D的延时设置为比芯片405顶层至模块B 402内的寄存器K/L的延时更大,例如大10~20%,并且可以将模块B 402内的寄存器M/N与模块C 403内的寄存器E/F之间的延时相应地设置为能够保证E、F处的正确数据握手的某个值。
具体而言,由于模块B 402和模块C 403分别属于不同的形态(带SDF网表形态和RTL形态),因此在它们之间可能存在一些时序问题。参考从模块C 403到模块B 402的上面两条数据路径,为了让模块B 402的寄存器K、L能够接收到来自模块C 403的寄存器C、D的信号,可以在它们之间设置延迟单元,例如通过使点A与点K之间的延时比点A与点C之间的延时更大(例如大10~20%),这样就能够保证模块B的寄存器K、L的正确采样。类似地,参考从模块B 402到模块C 403的下面两条数据路径,为了让模块C 403的寄存器E、F能够接收到来自模块B 402的寄存器M、N的信号,也可以在它们之间设置延迟单元,例如通过将模块B 402内的寄存器M/N与模块C 403内的寄存器E/F之间(即,点M/N与点E/F之间)的延时设置为5~10ps,这样就能够保证模块C的寄存器E、F的正确采样。
在一些示例中,可以将芯片顶层至模块C 403的输入端的线延时设置为0,并且可以将芯片顶层至模块C 403的输出端的线延时设置为0。具体而言,可以将从激励单元406到模块C 403的输入端的线延时设置为0,并且将从模块C 403的输出端到结果收集单元407的线延时设置为0,以便最大程度地减少与目标模块A 401不相关的模块或单元的线延时对时序仿真过程的影响。如本公开所使用,图4的互连延时模型404(包括上述延迟单元)可以是模块C 403与模块B 402之间的互连延时、以及可选地与模块C 403相关联的输入或输出线延时的整体抽象化表示,并不一定指代具体的元件。
通过上述操作,可以将所述延时参数以及互连延时模型404配置成使得在模块B402与模块C 403之间具有正确的数据采样,从而保证了RTL形态模块(模块C 403)与网表形态模块(模块B 402)之间的信号时延的全局平衡,同时也保证了目标模块A 401及其边界处的时序信息的真实性。
由此,基于图4的联合仿真结构400以及上述相应的操作,可以执行针对目标模块A401的时序仿真。在一些示例中,时钟单元408可以生成时钟信号,以用于在整个芯片405内生成时序。激励单元406可以产生输入激励信号,并且将所述激励信号输入到芯片405,例如输入到模块C 403的输入端。在该示例中,所述激励信号可以从模块C 403通过模块B 402被传输至模块A 401,然后在模块A 401处经过处理后,从模块A 401通过模块B 402被传输回到模块C 403。此时,结果收集单元407就可以例如从模块C 403的输出端接收针对目标模块A的时序仿真的结果(例如,时序仿真信号波形)。在一些示例中,所述仿真结果可以在仿真设备(诸如图1的仿真设备110)处被接收并分析,或者也可以从仿真设备被发送到后端设备(诸如图1的后端设备140)以用于由后端团队来分析。最后,可以对时序仿真的结果进行分析,以验证目标模块A的时序情况,从而发现芯片设计中潜在的约束和时序问题。
要注意的是,上面描述的过程仅仅是示例性的,并且在此不做限制。
图5示例性地示出了根据本公开的实施例的用于RTL和带SDF网表的联合仿真的装置500的框图。装置500可以包括模块设置组件510、文件获取组件520和延时设置组件530,并且可以被配置成执行根据本公开的用于RTL和带SDF网表的联合仿真的方法,诸如图3的方法300的各个步骤和/或通过图2或图4的仿真结构200或400所执行的各种步骤。
模块设置组件510可以被配置成:将第一模块、第二模块以及芯片顶层设置为网表形态,并且将第三模块设置为RTL形态,其中第一模块是仿真用例所经过的数据路径上的目标模块,第二模块是所述数据路径上与第一模块直接交互的模块,并且第三模块是所述数据路径上除第一模块和第二模块之外的其他模块。
文件获取组件520可以被配置成:获取第一SDF文件、第二SDF文件和顶层SDF文件以用于分别配置第一模块、第二模块以及所述芯片顶层,其中顶层SDF文件包括互连延时模型的延时参数。
延时设置组件530可以被配置成:基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型。
要注意的是,上面描述的装置500的结构和配置仅仅是示例性的,并且在此不做限制。例如,除了上述步骤之外,装置500以及其中的相应组件510-530可以被配置成执行本公开所描述的方法中的任何其他相应的步骤。
图6示出了示例系统600,其包括示例计算设备610,所述计算设备610表示可以实现本公开所描述的各种方法步骤的一个或多个系统和/或设备。计算设备610可以是例如服务提供商的服务器、与服务器相关联的设备、片上系统、和/或任何其他合适的计算设备或计算系统。上面参考图1描述的仿真设备110和/或后端设备140以及上面参考图5描述的装置500均可以采取计算设备610的形式,或者被包括在计算设备610中。此外,图2和图4的仿真结构200、400和/或图5的装置500也可以以应用616的形式被实现为计算机程序。
计算设备610可以包括彼此通信地耦合的处理系统611、一个或多个计算机可读介质612以及一个或多个I/O接口613。尽管未示出,但是计算设备610还可以包括将各种组件彼此耦合的系统总线或其他数据和命令传送系统。系统总线可以包括不同总线结构的任何一个或组合,诸如存储器总线或存储器控制器、外围总线、通用串行总线、控制或数据总线、和/或利用各种总线架构中的任何一个的处理器或局部总线。
处理系统611表示使用硬件来执行一个或多个操作的功能。因此,处理系统611被图示为包括硬件元件614,硬件元件614可以被配置为处理器、处理单元、功能块等。硬件元件614可以包括在硬件中实现为专用集成电路或使用一个或多个半导体形成的其他逻辑器件。硬件元件614不受其形成的材料或其中采用的处理机构的限制。例如,处理器可以由一个或多个半导体和/或晶体管(例如,电子集成电路(IC))组成。在这种情境中,处理器可执行指令可以是电子可执行指令。
计算机可读介质612被图示为包括存储器/存储装置615。存储器/存储装置615表示与一个或多个计算机可读介质相关联的存储器/存储装置。存储器/存储装置615可以包括易失性介质(诸如随机存取存储器(RAM))和/或非易失性介质(诸如只读存储器(ROM)、闪存、光盘、磁盘等)。存储器/存储装置615可以包括固定介质(例如,RAM、ROM、固定硬盘驱动器等)以及可移动介质(例如,闪存、可移动硬盘驱动器、光盘等)。计算机可读介质612可以以下面进一步描述的各种其他方式来配置。
I/O接口613表示允许用户使用各种输入设备向计算设备610输入命令和信息并且可选地还允许使用各种输出设备将信息呈现给用户和/或其他组件或设备的功能。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风(例如,用于语音输入)、扫描仪、触摸功能(例如,被配置成检测物理触摸的容性或其他传感器)、相机(例如,可以采用可见或不可见的波长(诸如红外频率)将不涉及触摸的运动检测为手势)等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网卡、触觉响应设备等。因此,计算设备610可以以下面进一步描述的各种方式被配置以支持用户交互。
计算设备610还包括应用616。应用616可以例如包括用于执行根据本公开的联合仿真的装置300的软件实例,或者包括用于执行联合仿真的仿真平台,或者包括图2或图4中所描述的用于在所述仿真平台上运行的联合仿真结构200或400的软件实例。应用616可以与计算设备610中的其他元件相结合地实现本公开所描述的技术。
在本公开中,可以在软件和/或硬件元件或模块的一般情境中描述各种技术。一般来说,这些元件或模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元素、组件、数据结构等。如本公开所使用的术语“元件”、“模块”、“功能”和“组件”一般表示软件、固件、硬件或其组合。本公开所描述的技术的特征是与平台无关的,意味着这些技术可以在具有各种处理器的各种计算平台上实现。
本公开提供了一种计算机可读介质,其上存储有计算机指令。计算设备的处理器可以从计算机可读介质读取并执行该计算机指令,使得该计算设备执行上述各种可选实现方式中提供的用于RTL和带SDF网表的联合仿真的方法或技术。所描述的模块和技术的实现可以被存储在某种形式的计算机可读介质上或者跨某种形式的计算机可读介质来传输。计算机可读介质可以包括可由计算设备610访问的各种介质。
如上文所描述,硬件元件614和计算机可读介质612表示以硬件形式实现的指令、模块、可编程器件逻辑和/或固定器件逻辑,其在一些实施例中可以用于实现本公开所描述的技术的至少一些方面。如本公开所使用,硬件元件可以包括集成电路或片上系统、专用集成电路(ASIC)、现场可编程门阵列(FPGA)、复杂可编程逻辑器件(CPLD)以及由硅制成的其他类型的器件。在这种情境中,硬件元件可以作为执行由硬件元件所体现的指令、模块和/或逻辑所定义的程序任务的处理设备,以及用于存储用于执行的指令的硬件设备,例如,先前描述的计算机可读介质。
本公开所描述的软件、硬件或程序模块和其他程序模块可以实现为在某种形式的计算机可读存储介质612上和/或由一个或多个硬件元件614体现的一个或多个指令和/或逻辑。计算设备610可以被配置成实现与软件和/或硬件模块相对应的特定指令和/或功能。因此,例如通过使用计算机可读存储介质612和/或硬件元件614,可以至少部分地以硬件来实现可由计算设备610作为软件执行的模块。上面描述的指令和/或功能可以由一个或多个制品(例如,一个或多个计算设备610和/或处理系统611)来执行/操作,以实现本公开所描述的技术或方法。
在各种实现方式中,计算设备610可以采用各种不同的配置。例如,计算设备610可以被实现为包括个人计算机、台式计算机、多屏幕计算机、膝上型计算机、上网本等的计算机类设备。计算设备610还可以被实现为包括诸如移动电话、平板计算机、多屏幕计算机等移动设备的移动装置类设备。本公开所描述的技术可以由计算设备610的这些各种配置来支持,并且不限于本公开所描述的技术的具体示例。
上述功能还可以通过使用分布式系统、诸如通过如下所述的平台622而在“云”620上全部或部分地实现。云620包括和/或表示用于资源624的平台622。平台622抽象云620的硬件(例如,服务器)和软件资源的底层功能。资源624可以包括在远离计算设备610的服务器上执行计算机处理时可以使用的应用和/或数据。资源624还可以包括通过互联网和/或通过诸如蜂窝或Wi-Fi网络的订户网络提供的服务。平台622可以抽象资源和功能以将计算设备610与其他计算设备连接。平台622还可以用于抽象资源的分级以提供遇到的对于经由平台622实现的资源624的需求的相应水平的分级。因此,在互连设备实施例中,本公开所描述的功能的实现可以分布在整个系统600内。例如,功能可以部分地在计算设备610上以及通过抽象云620的功能的平台622来实现。
应当理解的是,为了清楚起见,参考不同的功能单元对本公开的实施例进行了描述。然而,很明显的是,在不偏离本公开的情况下,每个功能单元的功能可以被实现在单个单元中、实现在多个单元中、或作为其他功能单元的一部分来实现。例如,被描述为由单个单元执行的功能可以由多个不同的单元来执行。因此,对特定功能单元的参考仅被视为对用于提供所描述的功能的适当单元的参考,而不是表明严格的逻辑或物理结构或组织。因此,本公开可以被实现在单个单元中,或者可以在物理上和功能上被分布在不同的单元和电路之间。
应当理解的是,尽管“第一”、“第二”和“第三”等术语在本公开可以用来描述各种设备、元件、部件或部分,但是这些设备、元件、部件或部分不应当由这些术语所限制。这些术语仅用于将一个设备、元件、部件或部分与另一个设备、元件、部件或部分相区分。
尽管已经结合一些实施例描述了本公开,但是本公开不应当被限于所阐述的特定形式。而是,本公开的范围仅由所附权利要求来限制。此外,尽管分离的特征可以被包括在不同的权利要求中,但是这些特征可以被有利地组合。特征在权利要求中的顺序并不暗示这些特征必须要按照任何特定顺序。此外,在本公开中,词语“包括”或“包含”不是排他性的,并且术语“一”不排除多个。权利要求中的附图标记仅作为示例来提供,而不应当被解释为以任何方式限制权利要求的范围。
Claims (25)
1.一种用于RTL和带SDF网表的联合仿真的方法,其特征在于,所述方法包括:
将第一模块、第二模块以及芯片顶层设置为网表形态,并且将第三模块设置为RTL形态,其中第一模块是仿真用例所经过的数据路径上的目标模块,第二模块是所述数据路径上与第一模块直接交互的模块,并且第三模块是所述数据路径上除第一模块和第二模块之外的其他模块;
将所述仿真用例经过的数据路径以外的模块设置为dummy形态;
获取第一SDF文件、第二SDF文件和顶层SDF文件以用于分别配置第一模块、第二模块以及所述芯片顶层,其中顶层SDF文件包括互连延时模型的延时参数;以及
基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型。
2.根据权利要求1所述的方法,其特征在于,第一SDF文件包括第一模块的时序信息,并且第二SDF文件包括第二模块的时序信息。
3.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
将第三模块中所引用的标准库单元和存储器单元设置为行为模型。
4.根据权利要求1或2所述的方法,其特征在于,所述配置第一模块、第二模块以及所述芯片顶层包括:
将第一SDF文件、第二SDF文件和顶层SDF文件分别加载到第一模块、第二模块以及所述芯片顶层,使得它们被设置为带SDF网表形态。
5.根据权利要求1或2所述的方法,其特征在于,所述方法还包括:
提取第三模块与第二模块直接交互的相对于第二模块为输入和输出的端口信号,并且将所述端口信号发送到后端设备以用于所述SDF文件的获取。
6.根据权利要求1所述的方法,其特征在于,所述延时参数包括第二模块与第三模块之间的线延时,并且所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:将第二模块与第三模块之间的线延时设置为0。
7.根据权利要求1所述的方法,其特征在于,所述延时参数包括:
所述芯片顶层至第三模块内最后发送去往第二模块的输出信号的寄存器的第一延时;以及
所述芯片顶层至第二模块内最先接收来自第三模块的输入信号的寄存器的第二延时;
其中所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:设置第二延时大于第一延时。
8.根据权利要求7所述的方法,其特征在于,所述第二延时比所述第一延时大10~20%。
9.根据权利要求1所述的方法,其特征在于,所述延时参数包括:
第二模块内最后发送去往第三模块的输出信号的寄存器与第三模块内最先接收来自第二模块的输入信号的寄存器之间的第三延时。
10.根据权利要求9所述的方法,其特征在于,所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:将所述第三延时设置为5~10ps。
11.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述芯片顶层至第三模块的输入端的线延时设置为0。
12.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述芯片顶层至第三模块的输出端的线延时设置为0。
13.一种用于RTL和带SDF网表的联合仿真的装置,其特征在于,所述装置包括:
模块设置组件,其被配置成:
将第一模块、第二模块以及芯片顶层设置为网表形态,并且将第三模块设置为RTL形态,其中第一模块是仿真用例所经过的数据路径上的目标模块,第二模块是所述数据路径上与第一模块直接交互的模块,并且第三模块是所述数据路径上除第一模块和第二模块之外的其他模块;
将所述仿真用例经过的数据路径以外的模块设置为dummy形态;
文件获取组件,其被配置成:获取第一SDF文件、第二SDF文件和顶层SDF文件以用于分别配置第一模块、第二模块以及所述芯片顶层,其中顶层SDF文件包括互连延时模型的延时参数;以及
延时设置组件,其被配置成:基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型。
14.根据权利要求13所述的装置,其特征在于,第一SDF文件包括第一模块的时序信息,并且第二SDF文件包括第二模块的时序信息。
15.根据权利要求13或14所述的装置,其特征在于,所述模块设置组件还被配置成:
将第三模块中所引用的标准库单元和存储器单元设置为行为模型。
16.根据权利要求13或14所述的装置,其特征在于,所述模块设置组件还被配置成:
将第一SDF文件、第二SDF文件和顶层SDF文件分别加载到第一模块、第二模块以及所述芯片顶层,使得它们被设置为带SDF网表形态。
17.根据权利要求13或14所述的装置,其特征在于,所述文件获取组件还被配置成:
提取第三模块与第二模块直接交互的相对于第二模块为输入和输出的端口信号,并且将所述端口信号发送到后端设备以用于所述SDF文件的获取。
18.根据权利要求13所述的装置,其特征在于,所述延时参数包括第二模块与第三模块之间的线延时,并且所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:将第二模块与第三模块之间的线延时设置为0。
19.根据权利要求13所述的装置,其特征在于,所述延时参数包括:
所述芯片顶层至第三模块内最后发送去往第二模块的输出信号的寄存器的第一延时;以及
所述芯片顶层至第二模块内最先接收来自第三模块的输入信号的寄存器的第二延时;
其中所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:设置第二延时大于第一延时。
20.根据权利要求19所述的装置,其特征在于,所述第二延时比所述第一延时大10~20%。
21.根据权利要求13所述的装置,其特征在于,所述延时参数包括:
第二模块内最后发送去往第三模块的输出信号的寄存器与第三模块内最先接收来自第二模块的输入信号的寄存器之间的第三延时。
22.根据权利要求21所述的装置,其特征在于,所述基于所述延时参数在第二模块与第三模块之间设置所述互连延时模型包括:将所述第三延时设置为5~10ps。
23.根据权利要求13所述的装置,其特征在于,所述延时设置组件还被配置成:
将所述芯片顶层至第三模块的输入端的线延时设置为0。
24.根据权利要求13所述的装置,其特征在于,所述延时设置组件还被配置成:
将所述芯片顶层至第三模块的输出端的线延时设置为0。
25.一种其上存储有可执行指令的计算机可读介质,所述指令在被处理器执行时使得所述处理器实行根据权利要求1-12中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310700643.6A CN116451625B (zh) | 2023-06-14 | 2023-06-14 | 用于rtl和带sdf网表的联合仿真的装置和方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310700643.6A CN116451625B (zh) | 2023-06-14 | 2023-06-14 | 用于rtl和带sdf网表的联合仿真的装置和方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116451625A CN116451625A (zh) | 2023-07-18 |
CN116451625B true CN116451625B (zh) | 2023-09-15 |
Family
ID=87122265
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310700643.6A Active CN116451625B (zh) | 2023-06-14 | 2023-06-14 | 用于rtl和带sdf网表的联合仿真的装置和方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116451625B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100952A (zh) * | 2020-09-14 | 2020-12-18 | 海光信息技术股份有限公司 | 一种集成电路后仿真方法、装置、电子设备及存储介质 |
CN112613259A (zh) * | 2020-12-18 | 2021-04-06 | 海光信息技术股份有限公司 | 片上系统后仿真方法、装置及电子设备 |
CN115238619A (zh) * | 2022-09-20 | 2022-10-25 | 北京数字光芯集成电路设计有限公司 | 数字芯片的子模块后仿真方法和系统 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
TWI533154B (zh) * | 2014-09-17 | 2016-05-11 | 瑞昱半導體股份有限公司 | 數位電路設計方法及相關的電腦程式產品 |
-
2023
- 2023-06-14 CN CN202310700643.6A patent/CN116451625B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112100952A (zh) * | 2020-09-14 | 2020-12-18 | 海光信息技术股份有限公司 | 一种集成电路后仿真方法、装置、电子设备及存储介质 |
CN112613259A (zh) * | 2020-12-18 | 2021-04-06 | 海光信息技术股份有限公司 | 片上系统后仿真方法、装置及电子设备 |
CN115238619A (zh) * | 2022-09-20 | 2022-10-25 | 北京数字光芯集成电路设计有限公司 | 数字芯片的子模块后仿真方法和系统 |
Non-Patent Citations (1)
Title |
---|
FPGA的系统设计方法解析;程耀林;现代电子技术(19);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN116451625A (zh) | 2023-07-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112949233B (zh) | Fpga芯片的自动化开发方法及装置、电子设备 | |
JP2001189387A (ja) | システムオンチップの設計検証方法および装置 | |
US10970443B2 (en) | Generation of module and system-level waveform signatures to verify, regression test and debug SoC functionality | |
US8181131B2 (en) | Enhanced analysis of array-based netlists via reparameterization | |
KR20220148913A (ko) | 초기 단계 회로 설계에서 기계 학습 기반 메트릭 예측 | |
CN112417798B (zh) | 一种时序测试方法、装置、电子设备及存储介质 | |
CN110785761B (zh) | 存在时钟动态重编程时仿真时间线的压缩方法 | |
US10878153B1 (en) | Apparatuses and methods for accurate and efficient clock domain and reset domain verification with register transfer level memory inference | |
CN112613257A (zh) | 验证方法、装置、电子设备和计算机可读存储介质 | |
US10162915B2 (en) | Method and system for emulation of multiple electronic designs in a single testbench environment | |
US20200104443A1 (en) | Hardware simulation systems and methods for reducing signal dumping time and size by fast dynamical partial aliasing of signals having similar waveform | |
US20210374314A1 (en) | Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views | |
CN107784185B (zh) | 一种门级网表中伪路径的提取方法、装置及终端设备 | |
US11023635B1 (en) | Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames | |
US11475293B1 (en) | Learning-based toggle estimation | |
CN116451625B (zh) | 用于rtl和带sdf网表的联合仿真的装置和方法 | |
US11275875B2 (en) | Co-simulation repeater with former trace data | |
CN109583051B (zh) | 一种基于SystemC的面向GPU硬件的glCallList TLM模型 | |
Sohofi et al. | System‐level assertions: approach for electronic system‐level verification | |
Jain et al. | Unified and Modular Modeling and Functional Verification Framework of Real‐Time Image Signal Processors | |
US20190163600A1 (en) | Modifying testing tools to test netlists based on singular independent signals | |
Anilkumar et al. | Automation of Translating Unit-Level Verification Scenarios for Test Vector Generation of SoC | |
CN117034824B (zh) | 复用测试用例和验证环境的仿真验证系统、方法、终端及介质 | |
CN115983172B (zh) | 用于后仿真的方法和仿真平台 | |
US20230267253A1 (en) | Automated synthesis of virtual system-on-chip environments |
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 |