CN116457788A - 仿真系统的机器学习延迟估计 - Google Patents
仿真系统的机器学习延迟估计 Download PDFInfo
- Publication number
- CN116457788A CN116457788A CN202180075354.0A CN202180075354A CN116457788A CN 116457788 A CN116457788 A CN 116457788A CN 202180075354 A CN202180075354 A CN 202180075354A CN 116457788 A CN116457788 A CN 116457788A
- Authority
- CN
- China
- Prior art keywords
- delay
- combined path
- combined
- path
- dut
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3183—Generation of test inputs, e.g. test vectors, patterns or sequences
- G01R31/318321—Generation of test inputs, e.g. test vectors, patterns or sequences for combinational circuits
-
- 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/331—Design verification, e.g. functional simulation or model checking using simulation with hardware acceleration, e.g. by using field programmable gate array [FPGA] or emulation
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3183—Generation of test inputs, e.g. test vectors, patterns or sequences
- G01R31/318328—Generation of test inputs, e.g. test vectors, patterns or sequences for delay tests
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/3183—Generation of test inputs, e.g. test vectors, patterns or sequences
- G01R31/318342—Generation of test inputs, e.g. test vectors, patterns or sequences by preliminary fault modelling, e.g. analysis, simulation
- G01R31/318357—Simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F30/00—Computer-aided design [CAD]
- G06F30/20—Design optimisation, verification or simulation
- G06F30/27—Design optimisation, verification or simulation using machine learning, e.g. artificial intelligence, neural networks, support vector machines [SVM] or training a model
-
- 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
- G06F30/00—Computer-aided design [CAD]
- G06F30/30—Circuit design
- G06F30/34—Circuit design for reconfigurable circuits, e.g. field programmable gate arrays [FPGA] or programmable logic devices [PLD]
- G06F30/347—Physical level, e.g. placement or routing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/22—Detection or location of defective computer hardware by testing during standby operation or during idle time, e.g. start-up testing
- G06F11/26—Functional testing
- G06F11/261—Functional testing by simulating additional hardware, e.g. fault simulation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2119/00—Details relating to the type or aim of the analysis or the optimisation
- G06F2119/12—Timing analysis or timing optimisation
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Evolutionary Computation (AREA)
- Geometry (AREA)
- Artificial Intelligence (AREA)
- Computer Vision & Pattern Recognition (AREA)
- Medical Informatics (AREA)
- Software Systems (AREA)
- Design And Manufacture Of Integrated Circuits (AREA)
Abstract
一种延迟估计系统,估计仿真系统的DUT的延迟。延迟估计系统接收DUT的逻辑块和连接逻辑块中的一个或多个逻辑块的组合路径。该系统将延迟模型应用于表示组合路径的特征向量,其中延迟模型可以确定组合路径的延迟。延迟模型可以是机器学习模型。该系统使用所确定的延迟生成时序图,并且将时序图提供给编译器以执行DUT的放置和路由。
Description
相关申请的交叉引用
本申请根据35U.S.C.§119(e)要求于2020年12月11日提交的题为“IntegratingMachine Learning Delay Estimation In FPGA-Based Emulation Systems”美国临时专利申请序列号63/124,332的优先权。上述申请的主题通过引用整体并入本文。
技术领域
本公开涉及使用现场可编程门阵列(FPGA)来仿真被测设计(DUT),并且具体地涉及在编译DUT以进行仿真时确定DUT的组合路径的行为方面。
背景技术
DUT的组合路径的延迟可以用于指导DUT的编译。例如,编译器可以确定FPGA之间的布线或FPGA内的布线的特定放置和路由(P&R),以减少布线的初始P&R配置的延迟。通常,只有在编译器完成对DUT的编译之后,组合路径的真实延迟才是已知的。常规的解决方案可以是对所有组合路径使用单个延迟估计。然而,这种估计方法通常会导致延迟过大或过小,从而导致编译器忽略编译DUT中的真实的关键延迟。这会导致仿真减慢,并且导致编译器处的处理资源被浪费在错误地确定的延迟上。
发明内容
一种延迟估计系统,估计仿真系统的DUT的延迟。例如,在DUT由仿真系统仿真之前,延迟估计系统在DUT的编译期间和在仿真之前估计DUT的组合路径的延迟。延迟估计系统接收DUT的逻辑块和连接逻辑块中的一个或多个逻辑块的组合路径。该系统将延迟模型应用于表示组合路径的特征向量,其中延迟模型可以确定组合路径的延迟。该系统使用所确定的延迟生成时序图,并且将时序图提供给编译器以执行DUT的放置和路由。
延迟估计系统可以通过使用编译DUT的组合路径和这些组合路径的测量延迟生成训练数据集来训练延迟模型。然后,该系统使用所生成的训练集来训练延迟模型。延迟估计系统可以通过以下方式来重新训练延迟模型:接收该系统先前使用延迟模型确定其延迟的组合路径的测量延迟(例如,在DUT被编译之后接收测量延迟),并且使用另一训练数据集来重新训练延迟模型,该另一训练数据集使用组合路径和所接收的测量延迟而生成。为了使用其他训练数据集重新训练延迟模型,延迟估计系统可以调节应用于输入到延迟估计模型中的特征向量的维度的权重。该系统可以使用经调节的权重、组合路径和测量延迟来生成其他训练数据集。
延迟估计系统可以生成被应用延迟模型的特征向量。特征向量可以使用以下中的至少一项来生成:组合路径上的逻辑电平的数目、组合路径上的导线的总层次距离、组合路径上的导线的扇出的总和、组合路径的时序路径类型、组合路径所跨越的FPGA的寄存器基元填充速率、以及FPGA的查找表(LUT)基元填充速率。
延迟估计系统能够使用估计延迟来确定关键路径。在一个示例中,一个组合路径跨越一定数目的FPGA(例如,三个FPGA)并且具有由延迟估计系统确定的延迟,而另一组合路径跨越另一数目的FPGA(例如,两个FPGA)并且具有也由延迟估计系统确定的延迟。延迟估计系统可以确定跨越两个FPGA的组合路径的延迟大于跨越三个FPGA的组合路径的延迟,并且作为响应,确定跨越两个FPGA的组合路径是关键路径,而跨越三个FPGA的组合路径不是关键路径。编译器然后可以向关键路径分配时分复用(TDM)比,该TDM比大于分配给不是关键路径的组合路径的TDM比。
在一些实施例中,延迟估计系统可以跨FPGA分割DUT(例如,分割DUT的电路设计),并且标识连接在组合路径上的电路设计的逻辑块中的一个或多个。延迟估计系统可以使用所生成的时序图或先前生成的时序图来分割电路设计(例如,跨FPGA)。在一些实施例中,延迟估计系统估计的延迟可以是组合路径的布线延迟。为了生成时序图,延迟估计系统可以确定组合路径的基元延迟,并且使用所确定的基元延迟和所估计的布线延迟(例如,基元延迟和布线延迟的总和)来确定总组合路径延迟。延迟估计系统然后可以生成时序图,该时序图包括连接DUT的逻辑块的相应组合路径的总组合路径延迟。
其他方面包括与上述任何技术相关的组件、设备、系统、改进、方法、过程、应用、计算机可读介质和其他技术。
附图说明
根据以下给出的详细描述以及本公开的实施例的附图,将能够更充分地理解本公开。附图用于提供对本公开的实施例的认识和理解,并且不将本公开的范围限于这些特定实施例。此外,这些附图不一定是按比例绘制的。
图1示出了根据一个实施例的用于编译DUT的过程的框图。
图2描绘了根据一个实施例的跨FPGA分割的DUT。
图3示出了根据一个实施例的延迟估计系统的框图。
图4示出了根据一个实施例的用于使用延迟估计来编译DUT的过程的框图。
图5示出了根据一个实施例的用于训练延迟估计系统的延迟模型的过程的框图。
图6示出了根据一个实施例的用于使用由延迟估计系统确定的延迟估计来编译DUT的过程的框图。
图7示出了使用延迟估计系统将编译DUT的路径的测量延迟与路径的估计延迟进行比较的实验结果。
图8描绘了根据一个实施例的用于使用由延迟估计系统确定的延迟估计来确定P&R的时序图的过程的流程图。
图9描绘了根据本公开的一些实施例的示例仿真系统的示图。
图10描绘了本公开的实施例可以在其中操作的示例计算机系统的示图。
具体实施方式
本公开的各方面涉及用于仿真系统的机器学习延迟估计。用于编译DUT以进行仿真的编译工作流程可以拆分为以下阶段,包括分割、放置和路由、以及编译。这些阶段中的一个或多个可以是时序驱动的。例如,分割的FPGA的放置和路由可以基于从一个寄存器到另一寄存器的信号的时序(例如,延迟)来确定。信号的时序可以在FPGA被编译之后测量,并且系统的最终仿真频率性能可以在与在编译DUT中传送的信号相关联的延迟可用时被确定。然而,这造成了在延迟可用之前需要延迟的交叉依赖性。
为了解决这种交叉依赖性,可以估计延迟。本文中描述的延迟估计系统使用机器学习来预测组合路径延迟,并且在编译工作流程阶段期间提供时序指导。延迟估计系统接收DUT的逻辑块和连接逻辑块中的一个或多个逻辑块的组合路径。例如,在由编译器执行的分割阶段之后,延迟估计系统可以接收连接由编译器跨一个或多个FPGA而分割的两个或更多个逻辑块的组合路径。该系统将延迟模型应用于表示组合路径的特征向量,其中延迟模型可以确定组合路径的延迟。特征向量的特征可以彼此正交,一个特征的值不依赖于另一特征的值。延迟模型可以是机器学习模型。该系统使用所确定的延迟来生成时序图,并且将时序图提供给编译器以执行编译工作流程阶段(例如,DUT的放置和路由)。
这种机器学习方法可以提高估计DUT内的组合路径的延迟的精度,由于编译器分割和P&R(这两者都随着延迟精度的提高而改进)而提高了DUT的仿真速度(即,减少了仿真器在仿真编译DUT时所需要的处理周期),并且减少了用于估计DUT内的组合路径的延迟所消耗的处理资源。
图1示出了根据一个实施例的用于编译DUT的过程100的框图。过程100可以包括用于编译DUT的前端和后端编译工作流程两者。编译工作流程的至少一部分可以由本文中描述的延迟估计系统或由主机系统(例如,如图9所示的主机系统的编译器)来执行。延迟估计系统可以是主机系统的组件。延迟估计系统在图3的描述中进一步描述。
后端编译工作流程可以拆分为三个阶段。在第一后端阶段,用户设计被拆分为网表的多个子集,其中每个网表可以被映射到目标FPGA的大小中并且适应目标FPGA的大小。由于用户设计(本文中也称为“被测设计”或“DUT”)跨网表的子集被拆分,因此DUT跨各种FPGA被分割。第一后端阶段可以是“分割”阶段。第一后端阶段可以是时序驱动的(例如,DUT的组合路径的估计延迟用于确定DUT如何跨FPGA被分割)。用户设计可以是DUT的至少一部分。第一后端阶段可以由编译器的时序驱动的分割系统来执行。时序驱动的分割系统可以接收用户和时序约束、硬件和固件配置、以及前端处理阶段的结果,该结果是使用用户设计的寄存器传输级(RTL)文件(例如,DUT的网表)生成的。时序驱动的分割系统可以接收时序图内的延迟估计,以确定DUT如何跨FPGA被分割。经分割的DUT被用于第二后端阶段。
在第二后端阶段,网表的每个子集被放置到特定物理FPGA位置,并且连接在FPGA之间被路由。第二后端阶段可以是“放置和路由”(P&R)阶段。第二后端阶段可以是时序驱动的(例如,DUT的组合路径的估计延迟用在FPGA之间的P&R中)。第二后端阶段可以在第一后端阶段之后并且在第三后端阶段之前。第二后端阶段可以由编译器的时序驱动系统P&R系统来执行。时序驱动系统P&R系统可以接收来自第一后端阶段的经分割的DUT和时序图内的延迟估计,以确定FPGA如何在彼此之间被放置和路由。
在第三后端阶段,经分割的网表的子集被发送到编译器,编译器编译FPGA(例如,在每个FPGA内执行P&R)。此外,由时序驱动系统P&R系统引入的套接字逻辑可以被提供给编译器。第三后端阶段可以是“FPGA编译”阶段。第三后端阶段也可以是时序驱动的(例如,DUT的组合路径的估计延迟用在FPGA级P&R中)。在一些实施例中,在第三后端阶段中的FPGA P&R完成之后,编译FPGA的全局时序分析可以被执行,并且FPGA内的组合路径的测量延迟可以被传输到全局数据库。
在三阶段后端工作流程的一些实施例中,使用在第三后端阶段中的FPGA P&R完成之后获取的测量延迟来生成时序图。然而,这可能会产生交叉依赖性,其中第一阶段和第二阶段不能在其时间驱动的操作中使用延迟,因为延迟直到第三阶段结束才可用。在一些实施例中,为了解决交叉依赖性,可以使用固定延迟估计(例如,保守的固定延迟)或基于逻辑电平计数的预测器。然而,这些解决方案可能以低精度估计真实延迟。继而,这可能会误导编译器的后端系统来优化DUT的不正确组合路径。为了提高精度,可以使用延迟模型来使用在第一后端阶段和/或第二后端阶段获取的数据来估计延迟。延迟模型可以是机器学习模型。延迟模型可以以更高的精度估计组合路径延迟并且改善编译器的后端系统的时序指导,因为延迟模型考虑了被估计延迟的DUT特定的数据。以这种方式,实现延迟模型的延迟估计系统不受上述交叉依赖性的限制,并且可以在第三后端阶段被执行之前执行时序驱动的分割和P&R。
在第一后端阶段的分割期间,DUT的全局网表可以被拆分为多个FPGA大小的集群,全局时序图也跨不同子分割而分布。在第一后端阶段的分割之后,形成全局时序图的时序节点可以拆分为不同FPGA。每个时序节点可以表示与DUT的组合路径相对应的时序路径或时序弧。时序路径可以跨多个FPGA被划分,并且因此可以被划分为多个时序路径。跨多个FPGA划分的路径的示例如图2所示。时序路径的延迟(无论是跨FPGA还是在FPGA内)都可以在几纳秒到数百纳秒的范围内。延迟可以取决于诸如FPGA大小、网表层次结构和FPGA填充速率等因素。内部FPGA延迟对于时序驱动的分割和/或P&R系统通过仿真更好地优化DUT的性能和大小是很有价值的。
通过在早期后端阶段提供更准确的延迟估计,延迟估计系统允许编译器专注于优化DUT的真实关键路径,而不是优化其延迟不如真实关键路径的延迟大的错误地标记的关键路径。因此,延迟估计系统可以改进DUT仿真(例如,优化的关键路径导致仿真速度增加),而无需手动调谐或附加迭代来调节内部FPGA延迟。此外,由于初始结果的精度低而减少了需要重新执行仿真的频率,这也减少了仿真系统所消耗的处理资源。更高的仿真频率或仿真时钟频率能够更快地完成用户设计的测试过程,允许更多的覆盖范围,并且降低成本。例如,覆盖范围可以增加,因为更高的仿真频率可以在给定仿真时间内运行更多的测试台。此外,在长时间的仿真之后,可能会出现一些设计缺陷。对于更高的仿真频率,发现设计缺陷所花费的时间成本可以降低,因为更高的仿真频率可以以比较慢的仿真频率更快地达到具有缺陷的时钟周期。降低成本的另一种方式是,仿真系统可以由多个仿真作业根据特定作业调度来共享,并且如果作业可以更快地完成,则附加作业可以被调度。较小仿真系统可以用于处理调度队列中的多个设计;因此,通过使用由多个仿真作业共享的较小仿真系统,降低了处理成本。
图2示出了根据一个实施例的跨FPGA而分割的DUT 200。DUT 200跨FPGA A-C被分割,并且包括寄存器R1-R4、逻辑块211、212、213、221和222、以及组合路径210和220。组合路径210开始于寄存器R1的“Q”输出(其在本文中使用符号“R1.Q”来表示),并且结束于寄存器R1的“D”输入(或R4.D)。组合路径210包括逻辑块211、212和213。逻辑块可以包括FPGA基元(例如,4输入LUT(“LUT4”)、数字信号处理器(DSP)等)和导线,这两者都可能导致逻辑块连接在其上的组合路径的延迟。组合路径210在端口pA3和pB3处跨越FPGA A和FPGA B。组合路径210在端口pB4和pC4处跨越FPGA B和FPGA C。组合路径220开始于R2.Q并且结束于R3.D。组合路径220包括逻辑块221和222。组合路径220在端口pA1和pB1处跨越FPGA A和FPGA B。
DUT 200被分割为FPGA A-C,并且因此,DUT的全局时序图也跨多个FPGA被拆分。组合路径和对应时序路径可以完全被包含在FPGA内。例如,从R1.Q到R2.D的组合路径完全被包含在FPGA A内。组合路径可以跨多个FPGA被拆分。例如,从R2.Q到R3.D的组合路径跨FPGAA和B被拆分。在这两种情况下,延迟估计系统都可以遍历组合路径,并且获取组合路径上的与全局时序图的某些时序节点相关的逻辑块。延迟估计系统可以提取组合路径上的逻辑块和用于描述组合路径上的延迟的数据。这样的数据可以包括组合路径上的逻辑电平的数目、组合路径上的导线的总层次距离、组合路径上的导线的扇出的总和、组合路径的时序路径类型、组合路径所跨越的一个或多个现场可编程门阵列(FPGA)的寄存器基元填充速率、FPGA的查找表(LUT)基元填充速率、与逻辑块的基元或布线的延迟相关的任何合适的特征,或其组合。
延迟估计系统可以使用组合路径、组合路径上的所提取的逻辑块、和所提取的数据来估计用于全局时序分析的时序路径延迟。例如,从R2.Q到R3.D的组合路径220被拆分为FPGA A和FPGA B,并且延迟估计系统可以单独地估计从R2.Q到pA1的延迟和从pB1到R3.D的延迟(例如,使用延迟模型)。然后,估计延迟可以被注释到全局时序图中。
图3示出了根据一个实施例的延迟估计系统的框图300。框图300包括延迟估计系统310、主机系统320、仿真系统330和网络340。延迟估计系统310可以是通过网络340通信地耦合到主机系统320的远程计算设备或服务器。主机系统320可以是包括编译器321的计算设备,该编译器321用于使用来自DUT网表数据库311的网表来编译DUT。主机系统320可以通过本地网络连接通信地耦合到仿真系统330(例如,如图9的描述中所述)。延迟估计系统310可以包括诸如DUT网表数据库311和经验延迟数据库312等数据库。替代地或另外地,数据库可以远离延迟估计系统310(例如,在通过网络340通信地耦合到延迟估计系统310和主机系统320的不同服务器中)。延迟估计系统包括诸如特征向量生成引擎313、模型训练引擎314、延迟模型315和时序图生成引擎316等软件模块。框图300可以具有与图3所示的组件相比更多的、不同的或更少的组件。
注意,软件模块可以包括可执行程序代码,该可执行程序代码可以存储在非暂态计算机可读存储介质(例如,诸如磁盘或存储器等存储设备)中,并且由一个或多个处理单元(例如,处理器、控制器、状态机)可执行。程序代码可以与处理单元一起封装,以提供与所描述的功能相对应的专用设备。此外,注意,引擎也可以包括可执行程序代码,该可执行程序码可以存储在非暂态计算机可读存储介质(例如,诸如磁盘或存储器等存储设备)中,并且由一个或多个处理单元(例如,处理器、控制器、状态机)可执行。程序代码可以与处理单元一起封装,以提供与所描述的功能相对应的专用设备。
DUT网表数据库311存储DUT的网表,以供编译器321编译和供仿真系统330仿真。延迟估计系统310可以访问数据库311中的网表,以经由特征向量生成引擎313确定特征向量,通过模型训练引擎314确定用于训练延迟模型315的训练数据,输入到延迟模型315中以估计表示网表的一部分的组合路径的延迟,或者经由时序图生成引擎316对网表的全局时序图进行注释。DUT可以在前端处理阶段期间被映射到FPGA基元中(例如,如图1所示)。DUT网表数据库311还可以存储描述所映射的基元和导线的数据,这些数据将被提供作为由系统310进行的后端阶段或延迟估计的输入。
经验延迟数据库312在编译DUT被分割而成的(一个或多个)FPGA之后存储测量延迟。这些测量延迟可以由模型训练引擎314用来训练和验证延迟模型315(例如,使用沿着时序路径遍历的逻辑块和基元)。尽管未描绘,但是延迟估计系统310可以包括用于存储由延迟模型315输出的估计延迟的数据库。所存储的延迟可以是表示全局时序图的数据结构,包括用估计延迟注释的网表或其逻辑块。延迟估计系统310可以将存储在数据库312中的估计延迟提供给主机系统320,以用于在编译期间优化DUT的分割和/或P&R。
特征向量生成引擎313生成表示与组合路径相关的数据的特征向量,其中特征向量被输入到延迟模型315,以用于估计组合路径的延迟。特征向量生成引擎313还可以生成特征向量,以供模型训练引擎314用作训练数据。特征向量生成引擎313可以生成表示总基元延迟和总导线布线延迟的向量,这两个分量对组合路径的总延迟有贡献。特征向量可以包括一个或多个维度或特征,其中每个维度是表示与确定其延迟相关的组合路径的特性的值。这些特性可以包括组合路径上的逻辑电平的数目、路径上的层次距离、总扇出、时序路径类型、FPGA的寄存器基元填充速率和FPGA的LUT基元填充速率。特性可以被选择,使得特征向量的维度是正交的(例如,维度的值彼此独立)。在三维特征向量的一个示例中,特征向量生成引擎313生成三个值的特征向量,这三个值表示组合路径上的导线的总扇出、组合路径所跨越的一个或多个FPGA的寄存器基元填充速率、以及组合路径上的逻辑电平的数目。由特征向量生成引擎313生成的特征向量中包括的特征可以在编译器完成DUT的分割阶段(例如,后端阶段1)之后获取。可以被包括在特征向量内的不同特征在下面更详细地描述。
特征向量生成引擎313可以基于组合路径中每个基元的延迟的总和来计算基元延迟。每个基元的延迟可以是稳定的或恒定的。例如,对于诸如全局时钟缓冲器(BUFG)、DSP或随机存取存储器(RAM)等基元,特征向量生成引擎313可以在给定输入和输出引脚ID组合的情况下确定在分割阶段已知的恒定基元延迟。在一些实施例中,可以估计基元延迟(例如,使用平均延迟)。例如,对于诸如LUT等基元,尽管引脚ID在分割阶段是已知的,但是引脚ID可以在后续编译阶段交换。因此,可以使用统计平均值来估计LUT的基元延迟。
特征向量生成引擎313可以计算组合路径中的导线布线延迟。在一些实施例中,每个导线的延迟可以因导线而异。然而,描述组合路径并且捕获影响总导线延迟的因素的数据可以用于估计导线延迟。如前所述,数据可以包括(1)组合路径上的逻辑电平的数目、(2)组合路径上的导线的总层次距离、(3)组合路径上的导线的扇出的总和、(4)组合路径的时序路径类型、(5)组合路径所跨越的一个或多个FPGA的寄存器基元填充速率、(6)一个或多个FPGA的LUT基元填充速率、影响总导线延迟的任何合适数据,或其组合。这些数据可以彼此独立。上述六个特征中的任何两个可以彼此正交(例如,组合路径的总扇出不取决于时序路径类型)。因为特征向量可以由彼此正交的维度组成,所以延迟估计系统310提高了估计延迟的处理效率(例如,通过避免对用于确定延迟而冗余的数据使用处理资源)。
组合路径上的逻辑电平的数目可以表示组合路径的逻辑长度,其中每个导线或基元是一个逻辑电平。组合路径的总扇出可以表示组合路径中的导线的扇出性质。总扇出可以是组合路径中所有导线上的扇出的总和。寄存器基元填充速率和LUT基元填充速率是FPGA使用特征,它们是FPGA使用或拥塞对路由延迟的影响的间接指示符。组合路径的时序路径类型表示路径类型之间的差异(例如,指示组合路径类型是时钟路径类型而不是数据路径类型)。
路径上的总层次距离表示沿着组合路径的导线的总层次距离。总层次距离与导线驱动器或负载层次与FPGA放置中朝向编译工作流程的后期阶段的物理距离之间的相关性有关。具体地,对于具有驱动器读取器对的每个导线,层次距离可以定义为:
其中max_diff_hier是驱动器实例和负载实例的最大不同层次数目,common_hier是驱动器实例和负载实例的公共层次。
在确定路径上的总层次距离的一个示例中,一个导线连接两个实例:驱动器实例“top/a/b/c/d/e”和读取器实例“top/a/b/c/f/g/h”。公共层次为“top/a/b/c”,并且不同层次为“d/e”和“f/g/h”。两个实例的公共层次common_hier为4。两个实例的最大不同层次数目被定义为不同层次之间的较大数目,在该示例中为max(d/e,f/g/h)或3。hier_dist_max因此为3/(3+4)=3/7。总层次距离是组合路径上每个导线的hier_dist_max的总和。类似地,最小层次距离可以是除了或代替最大层次距离被包括以在所生成的特征向量中使用的值。
根据设计尺寸、类型或分割结果,跨每个FPGA的时序路径的数目可以很大(例如,从一万到十万个路径)。在一项被进行以开发延迟模型的实验中,分析了42种不同尺寸的设计和总共2.1k个FPGA,产生了大约930万个组合路径,每个路径具有对应时序路径。在本实验中,930万个组合路径被用于生成延迟模型的训练数据集,并且随机森林算法被用于开发延迟模型。为向量中的每个特征确定权重,如下表1所示。
特征 | 特征权重 |
(1)num_logic_levels | 0.63 |
(2)hier_dist_max_path | 0.3 |
(3)total_fanouts | 0.03 |
(4)timing_path_type | 0.02 |
(5)reg_fill_rate | 0.01 |
(6)lut_fill_rate | 0.01 |
表1:延迟模型特征的示例权重
尽管在实验中使用随机森林算法来开发延迟模型,但是延迟模型315可以使用各种机器学习技术,诸如线性支持向量机(线性SVM)、其他算法的增强(例如,AdaBoost)、神经网络、逻辑回归、朴素贝叶斯、基于记忆的学习、袋装树、决策树、增强树、增强树桩,有监督或无监督学习算法,或其任何合适的组合。
模型训练引擎314可以使用由特征向量生成引擎313生成的特征向量来训练延迟模型315,并且验证延迟模型315。为了训练延迟模型315,模型训练引擎314可以使用编译DUT的组合路径和组合路径的测量延迟来生成第一训练数据集。训练数据可以使用关于组合路径的信息而生成的特征向量(例如,包括关于特征向量生成引擎313而描述的六个特征)。特征向量可以用由特征向量表示的对应组合路径的测量延迟来标记。模型训练引擎314可以使用第一训练数据集来训练延迟模型315。模型训练引擎314可以使用第二训练数据集来重新训练延迟模型315。延迟估计系统310可以生成使用利用第一训练数据集而训练的延迟模型315而生成的时序图,使用时序图编译DUT,并且随后接收编译DUT的组合路径的测量延迟。模型训练引擎314可以使用组合路径和随后接收的测量延迟来创建第二训练数据集。在重新训练模型315的一个示例中,模型训练引擎314调节与特征向量的维度相对应的权重(例如,表1所示的权重)。模型训练引擎314可以使用经调节的权重和组合路径的六个特征的特征向量来生成第二训练数据集,其中特征向量用随后接收的测量延迟来标记。
在验证延迟模型315的一个示例中,编译FPGA的一半上的组合路径可以用作训练集,并且剩余组合路径可以用于验证。随机森林算法可以用于确定R2得分和均方根误差(RMSE),以验证延迟模型315。例如,对于延迟模型,确定91%的R2得分和10416纳秒处的RMSE,其实验结果如图7所示。
延迟模型315输出由在编译期间确定的DUT的特定配置(例如,特定FPGA分割或FPGA的特定放置和路由)引起的延迟。延迟模型315可以输出DUT的组合路径、组合路径上的逻辑块、或其组合的延迟。延迟模型315可以输出导线延迟的估计或总组合路径延迟的估计。在输出估计的导线延迟的一个示例中,延迟模型315可以接收表示组合路径的特征向量作为输入,其中特征向量包括在特征向量生成引擎313的描述中描述的六个特征。延迟模型315然后可以输出估计的导线延迟,因为这六个特征表示组合路径的导线延迟。估计的导线延迟然后可以与组合路径的基元延迟相结合以确定总组合路径延迟(例如,用于包括在时序图中)。在输出估计的总组合路径延迟的示例中,延迟模型315可以接收包括六个特征和组合路径的基元延迟的特征向量作为输入。使用该七个维度的示例特征向量,延迟模型315可以输出组合路径的总组合路径延迟的估计。
时序图生成引擎316可以生成DUT的时序图。时序图可以包括与对组合路径的延迟有贡献的分量相对应的时序节点。例如,时序图生成引擎316可以接收由延迟模型315输出的逻辑块的估计延迟,并且在时序图中注释对应时序节点。在另一示例中,时序图生成引擎316可以接收组合路径的估计延迟,并且在时序图中注释与一个或多个时序节点相对应的时序路径。时序图生成引擎316可以(例如,从网表数据库311或从编译器)接收DUT的逻辑块和连接逻辑块中的一个或多个逻辑块的组合路径。时序图生成引擎316将延迟模型315应用于表示组合路径的特征向量,其中特征向量可以由特征向量生成引擎313生成。时序图生成引擎316可以基于由延迟模型315确定的组合路径的延迟来生成时序图。
在一些实施例中,延迟估计系统310确定DUT的真实关键路径。关键路径可以是比DUT的一个或多个其他组合路径具有更大延迟的组合路径。在不应用延迟模型315的情况下确定的延迟可能是不准确的,并且导致关键路径被不正确地确定,使真实关键路径未被优化,因为延迟没有被向编译器标记为需要资源来最小化(例如,P&R以确定将分配更多导线以减少真实关键路径上的延迟的时分复用(TDM)比)。
使用图2作为确定关键路径的示例,真实关键路径可以是组合路径220,而组合路径210可能被错误地确定为关键路径。如果仅基于组合路径所遍历的FPGA的数目来确定延迟,则可能发生这种情况。因为组合路径210遍历FPGA A-C,而组合路径220遍历FPGA A和B,所以组合路径210可以被确定为比组合路径220具有更多延迟。然而,考虑到组合路径的属性(例如,逻辑块211-213、221和222内的基元和布线延迟),延迟估计系统310可以确定组合路径220的延迟大于组合路径210的延迟。因此,真实关键路径是组合路径220。编译器然后可以使用由延迟估计系统310确定的延迟来相应地分配TDM比(例如,与分配给组合路径210的TDM比相比,分配给组合路径220的TDM比更大)。
网络340可以用于通信地耦合延迟估计系统310和主机系统320。在一些实施例中,网络340包括使用有线和/或无线通信系统的局域网和/或广域网的任何组合。网络340可以使用标准通信技术和/或协议。例如,网络340包括使用诸如以太网、802.11、全球微波接入互操作性(WiMAX)、3G、4G、5G、码分多址(CDMA)、数字用户线(DSL)等技术的通信链路。用于经由网络340进行通信的网络协议的示例包括多协议标签交换(MPLS)、传输控制协议/互联网协议(TCP/IP)、超文本传输协议(HTTP)、简单邮件传输协议(SMTP)和文件传输协议(FTP)。通过网络交换的数据可以使用任何合适的格式来表示,诸如超文本标记语言(HTML)或可扩展标记语言(XML)。在一些实施例中,网络340的通信链路中的全部或一些可以使用任何合适的一种或多种技术进行加密。
图4示出了根据一个实施例的用于使用延迟估计来编译DUT的过程400的框图。在一些实施例中,时序图生成引擎316可以生成没有延迟模型的时序图。例如,固定延迟估计(例如,保守的固定延迟)或基于逻辑电平计数的预测器可以用于确定待编译DUT的时序图。估计延迟可以被应用于跨FPGA分割DUT,并且在FPGA内执行P&R之前在FPGA之间执行P&R。
图5示出了根据一个实施例的用于训练延迟估计系统的延迟模型的过程500的框图。过程500类似于图1所示的过程100。过程500的不同之处在于增加了提供给延迟估计系统310的经验延迟510。延迟估计系统310可以接收在DUT跨一个或多个FPGA被编译之后测量的组合路径的经验延迟510。经验延迟510存储在延迟估计系统310的经验延迟数据库312中,以用于训练延迟模型315。延迟模型315的训练在图3的模型训练引擎314的描述中已经描述。
图6示出了根据一个实施例的用于使用由延迟估计系统310确定的延迟估计来编译DUT的过程600的框图。过程600可以在其中使用经验延迟510来训练延迟模型315的过程500之后发生。在过程600中,延迟估计系统310的延迟模型315被应用于与估计延迟的组合路径相关的数据。延迟估计系统310可以在后端编译工作流程的分割阶段之后接收数据,其中数据包括与被分割为FPGA的DUT的逻辑块有关的信息、(一个或多个)FPGA填充速率、基元、网表层次结构、与导线延迟的影响有关的任何合适的信息(例如,时序路径类型、组合路径的逻辑电平的数目、组合路径的层次距离、寄存器填充速率或LUT填充速率)、或其组合。所接收的数据可以由特征向量生成引擎313用来生成用于输入到延迟模型315的特征向量。延迟模型315输出分割DUT的组合路径的估计延迟,其中组合路径对应于时序路径,并且因此,输出延迟也是时序路径的延迟。估计延迟可以用于生成时序图,其中延迟对时序图的时序节点或路径进行注释。时序图的估计延迟可以用于在FPGA之间重新分割DUT,以减少每个新分割的FPGA的延迟。估计延迟可以用于在FPGA之间执行P&R,以减少由FPGA之间的连接引起的延迟。
图7示出了使用延迟估计系统将编译DUT的路径的测量延迟的示例与路径的估计延迟进行比较的实验结果700。将延迟模型应用于编译工作流程的后端阶段可以通过将延迟减少例如5-20%来提高编译DUT的性能,这是由于由延迟模型输出以用于在编译期间优化DUT的分割和P&R的组合路径延迟的精度。实验的另一结果表明,在第二后端阶段报告的DUT仿真频率更接近于在第三后端阶段之后报告的性能。特别地,本文中描述的延迟模型的精度由实验结果700示出。结果700表明,估计延迟的范围随着实际延迟的增加而增加。然而,估计延迟跟踪实际延迟,其中R2得分为91%,并且RMSE为10416ns。
图8描绘了根据一个实施例的用于使用由延迟估计系统(例如,310)确定的延迟估计来确定P&R的时序图的过程800的流程图。过程800可以由延迟估计系统310来执行。过程800可以包括附加的、更少的或不同的操作。延迟估计系统310接收802DUT的逻辑块和连接逻辑块中的一个或多个逻辑块的组合路径。例如,时序图生成引擎316接收802包括组合路径220的逻辑块221和222的网表,并且接收组合路径220(例如,关于组合路径的信息,诸如其逻辑长度、组合路径中导线的扇出性质等)。延迟估计系统310将延迟模型应用804于表示组合路径的特征向量。例如,时序图生成引擎316将延迟模型315应用804于由特征向量生成引擎313生成的特征向量。延迟估计系统310基于组合路径的延迟生成806时序图。例如,时序图生成引擎316接收由延迟模型315输出的估计延迟,其中估计延迟对应于逻辑块221内的导线的估计导线延迟。时序图生成引擎316基于逻辑块221中包括的基元来确定基元延迟,并且确定逻辑块221的基元延迟和估计的导线延迟的总和。时序图生成引擎316可以类似地确定逻辑块222的基元和导线延迟的总和。时序图生成引擎316可以组合逻辑块221和222两者的基元和导线延迟以及与pA1与pB1之间的组合路径的部分相对应的延迟,以确定组合路径220的总组合路径延迟。时序图生成引擎316生成806时序图,该时序图可以包括逻辑块的基元延迟、逻辑块的布线延迟、FPGA之间(例如,pA1与pB1之间)的连接的延迟、总组合路径延迟、或其任何组合。延迟估计系统310向编译器提供808时序图以执行DUT的放置和路由。例如,时序图生成引擎316将包括组合路径210和220的延迟的时序图提供给编译器321,以执行DUT被分割而成的FPGA的P&R。在P&R的一个示例中,FPGA A-C可以以与图2所示的配置不同的配置来放置和路由。
图9示出了示例仿真环境900的示图。仿真环境900可以被配置为验证电路设计的功能。仿真环境900可以包括主机系统907(例如,作为电子设计自动化(EDA)系统的一部分的计算机)和仿真系统902(例如,一组可编程设备,诸如现场可编程门阵列(FPGA)或处理器)。主机系统通过使用编译器910来生成数据和信息,以构造仿真系统来仿真电路设计。待仿真的电路设计也称为被测设计(DUT),其中来自仿真的数据和信息用于验证DUT的功能。
主机系统907可以包括一个或多个处理器。在主机系统包括多个处理器的实施例中,本文中描述为由主机系统执行的功能可以分布在多个处理器之间。主机系统907可以包括编译器910,编译器910用于变换以表示DUT的描述语言编写的规范并且产生用于构造仿真系统902以仿真DUT的数据(例如,二进制数据)和信息。编译器910可以变换DUT、改变DUT、重构DUT、向DUT添加新功能和/或控制DUT的时序。
主机系统907和仿真系统902使用仿真连接所携带的信号来交换数据和信息。连接可以是但不限于一根或多根电缆,诸如具有与推荐标准232(RS232)或通用串行总线(USB)协议兼容的引脚结构的电缆。连接可以是有线通信介质或网络,诸如局域网或广域网,诸如互联网。连接可以是无线通信介质或具有使用诸如BLUETOOTH或IEEE 802.11等无线协议的一个或多个接入点的网络。主机系统907和仿真系统902可以通过诸如网络服务器等的第三设备来交换数据和信息。
仿真系统902包括多个FPGA(或其他模块),诸如FPGA 9041和9042以及附加的FPGA至904N。每个FPGA可以包括一个或多个FPGA接口,FPGA通过该一个或多个FPGA接口连接到用于FPGA交换信号的其他FPGA(以及潜在的其他仿真组件)。FPGA接口可以称为输入/输出引脚或FPGA焊盘。虽然仿真器可以包括FPGA,但仿真器的实施例可以包括其他类型的逻辑块,而不是FPGA,或者与FPGA一起,以用于仿真DUT。例如,仿真系统902可以包括定制FPGA、用于仿真或原型设计的专用ASIC、存储器和输入/输出设备。
可编程设备可以包括可编程逻辑块阵列和互连层次结构,该互连层次结构可以使得可编程逻辑块能够根据HDL代码的描述而被互连。每个可编程逻辑块可以实现复杂的组合功能或实现诸如AND和XOR逻辑块等逻辑门。在一些实施例中,逻辑块还可以包括存储器元件/设备,该存储器元件/设备可以是简单的锁存器、触发器或其他存储器块。根据不同逻辑块之间的互连的长度,信号可以在不同时间到达逻辑块的输入端子,并且因此可以临时存储在存储器元件/设备中。
FPGA 9041-904N可以被放置到一个或多个板9121和9122以及附加板至912M上。多个板可以被放置到仿真单元9141中。仿真单元内的板可以使用仿真单元的背板或任何其他类型的连接进行连接。此外,多个仿真单元(例如,9141和9142至914K)可以通过电缆或任何其他方式彼此连接,以形成多仿真单元系统。
对于待仿真DUT,主机系统907向仿真系统902传输一个或多个比特文件。比特文件可以指定DUT的描述,并且可以进一步指定由主机系统907创建的具有跟踪和注入逻辑的DUT的分割、分割到仿真器的FPGA的映射、以及设计约束。使用比特文件,仿真器构造FPGA以执行DUT的功能。在一些实施例中,仿真器的一个或多个FPGA可以具有内置到FPGA的硅中的跟踪和注入逻辑。在这样的实施例中,FPGA可以不由主机系统构造以仿真跟踪和注入逻辑。
主机系统907接收待仿真DUT的描述。在一些实施例中,DUT描述采用描述语言(例如,寄存器传输语言(RTL))。在一些实施例中,DUT描述是在网表级文件或网表级文件和HDL文件的混合中。如果DUT描述的一部分或整个DUT描述在HDL中,则主机系统可以合成DUT描述以使用DUT描述创建门级网表。主机系统可以使用DUT的网表来将DUT分割为多个分割,其中一个或多个分割包括跟踪和注入逻辑。跟踪和注入逻辑跟踪经由FPGA的接口而交换的接口信号。此外,跟踪和注入逻辑可以将跟踪的接口信号注入FPGA的逻辑中。主机系统将每个分割映射到仿真器的FPGA。在一些实施例中,跟踪和注入逻辑被包括在用于一组FPGA的选择分割中。跟踪和注入逻辑可以内置到仿真器的一个或多个FPGA中。主机系统可以合成要映射到FPGA中的多路复用器。多路复用器可以由跟踪和注入逻辑用来将接口信号注入DUT逻辑中。
主机系统创建比特文件,该比特文件描述DUT的每个分割和分割到FPGA的映射。对于包括跟踪和注入逻辑的分割,比特文件还描述所包括的逻辑。比特文件可以包括放置和路由信息以及设计约束。主机系统存储比特文件和描述哪些FPGA要仿真DUT的每个组件(例如,每个组件被映射到哪些FPGA)的信息。
根据请求,主机系统将比特文件传输到仿真器。主机系统发信号通知仿真器启动DUT的仿真。在DUT的仿真期间或在仿真结束时,主机系统通过仿真连接从仿真器接收仿真结果。仿真结果是仿真器在DUT的仿真期间生成的数据和信息,包括由每个FPGA的跟踪和注入逻辑跟踪的接口信号和接口信号的状态。主机系统可以存储仿真结果和/或将仿真结果传输到另一处理系统。
在DUT的仿真之后,电路设计者可以请求调试DUT的组件。如果这样的请求被提出,则电路设计者可以指定要调试的仿真的时间段。主机系统使用所存储的信息来标识哪些FPGA正在仿真组件。主机系统检索与该时间段相关联并且由每个标识的FPGA的跟踪和注入逻辑跟踪的所存储的接口信号。主机系统发信号通知仿真器重新仿真所标识的FPGA。主机系统将检索到的接口信号传输到仿真器,以在指定时间段内重新仿真组件。每个标识的FPGA的跟踪和注入逻辑将从主机系统接收的其相应接口信号注入被映射到FPGA的DUT的逻辑中。在对FPGA的多次重新仿真的情况下,合并这些结果产生完整的调试视图。
在组件的重新仿真期间,主机系统从仿真系统接收由所标识的FPGA的逻辑跟踪的信号。主机系统存储从仿真器接收的信号。在重新仿真期间跟踪的信号可以具有比初始仿真期间的采样速率高的采样速率。例如,在初始仿真中,跟踪信号可以包括组件的每X毫秒保存一次的状态。然而,在重新仿真中,跟踪信号可以包括每Y毫秒保存一次的状态,其中Y小于X。如果电路设计者请求查看在重新仿真期间跟踪的信号的波形,则主机系统可以检索所存储的信号并且显示信号的图。例如,主机系统可以生成信号的波形。之后,电路设计者可以请求在不同时间段内重新仿真相同组件,或者重新仿真另一组件。
主机系统907和/或编译器910可以包括子系统,诸如但不限于设计合成器子系统、映射子系统、运行时子系统、结果子系统、调试子系统、波形子系统和存储子系统。子系统可以被构造和启用为个体或多个模块,或者两个或更多个子系统可以被构造为一个模块。这些子系统一起构造仿真器并且监测仿真结果。
设计合成器子系统将表示DUT 905的HDL变换为门级逻辑。对于待仿真DUT,设计合成器子系统接收DUT的描述。如果DUT的描述完全或部分地是HDL(例如,RTL或其他级别的表示),则设计合成器子系统合成DUT的HDL,以创建具有根据门级逻辑对DUT的描述的门级网表。
映射子系统对DUT进行分割,并且将分割映射到仿真器FPGA中。映射子系统使用DUT的网表将门级的DUT分割为一定数目的分割。对于每个分割,映射子系统检索跟踪和注入逻辑的门级描述,并且将该逻辑添加到分割中。如上所述,分割中包括的跟踪和注入逻辑用于跟踪经由分割被映射到的FPGA的接口而交换的信号(跟踪接口信号)。跟踪和注入逻辑可以在分割之前添加到DUT。例如,跟踪和注入逻辑可以由设计合成器子系统在合成DUT的HDL之前或之后添加。
除了包括跟踪和注入逻辑,映射子系统还可以在分割中包括附加跟踪逻辑,以跟踪未被跟踪和注入逻辑跟踪的某些DUT组件的状态。映射子系统可以在分割之前在DUT中包括附加跟踪逻辑或在分割之后在分割中包括附加跟踪逻辑。设计合成器子系统可以在合成HDL描述之前在DUT的HDL描述中包括附加跟踪逻辑。
映射子系统将DUT的每个分割映射到仿真器的FPGA。对于分割和映射,映射子系统使用设计规则、设计约束(例如,时序或逻辑约束)、以及关于仿真器的信息。对于DUT的组件,映射子系统在存储子系统中存储描述哪些FPGA要仿真每个组件的信息。
使用分割和映射,映射子系统生成一个或多个比特文件,该一个或多个比特文件描述所创建的分割和到仿真器的每个FPGA的逻辑映射。比特文件可以包括附加信息,诸如DUT的约束以及FPGA之间的连接和每个FPGA内的连接的路由信息。映射子系统可以为DUT的每个分割生成比特文件,并且可以将比特文件存储在存储子系统中。根据电路设计者的请求,映射子系统将比特文件传输到仿真器,并且仿真器可以使用比特文件来构造FPGA以仿真DUT。
如果仿真器包括包含跟踪和注入逻辑的专用ASIC,则映射子系统可以生成将专用ASIC连接到DUT的特定结构。在一些实施例中,映射子系统可以保存被跟踪/注入信号的信息,并且其中该信息存储在专用ASIC上。
运行时子系统控制由仿真器执行的仿真。运行时子系统可以使仿真器启动或停止执行仿真。此外,运行时子系统可以向仿真器提供输入信号和数据。输入信号可以通过连接直接提供给仿真器,或者可以通过其他输入信号设备间接提供给仿真器。例如,主机系统可以控制输入信号设备向仿真器提供输入信号。例如,输入信号设备可以是测试板(直接或通过电缆)、信号发生器、另一仿真器或另一主机系统。
结果子系统处理由仿真器生成的仿真结果。在仿真期间和/或在完成仿真之后,结果子系统从仿真器接收在仿真期间生成的仿真结果。仿真结果包括在仿真期间跟踪的信号。具体地,仿真结果包括由每个FPGA仿真的跟踪和注入逻辑跟踪的接口信号,并且可以包括由DUT中包括的附加逻辑跟踪的信号。每个跟踪信号可以跨越仿真的多个周期。跟踪信号包括多个状态,并且每个状态与仿真的时间相关联。结果子系统将跟踪信号存储在存储子系统中。对于每个存储信号,结果子系统可以存储指示哪个FPGA生成跟踪信号的信息。
调试子系统允许电路设计者调试DUT组件。在仿真器已经仿真DUT并且结果子系统已经在仿真期间接收到由跟踪和注入逻辑跟踪的接口信号之后,电路设计者可以通过在特定时间段内重新仿真DUT的组件来请求调试该组件。在调试组件的请求中,电路设计者标识组件并且指示要调试的仿真的时间段。电路设计者的请求可以包括采样速率,该采样速率指示跟踪信号的逻辑应当将调试组件的状态多久保存一次。
调试子系统标识仿真器的一个或多个FPGA,该一个或多个FPGA使用由映射子系统存储在存储子系统中的信息来仿真组件。对于每个标识的FPGA,调试子系统从存储子系统中检索在由电路设计者指示的时间段期间由FPGA的跟踪和注入逻辑跟踪的接口信号。例如,调试子系统检索由跟踪和注入逻辑跟踪的与该时间段相关联的状态。
调试子系统将检索到的接口信号传输到仿真器。调试子系统指示调试子系统使用所标识的FPGA,并且对于每个标识的FPGA的跟踪和注入逻辑,将其相应跟踪信号注入FPGA的逻辑中,以在所请求的时间段内重新仿真组件。调试子系统可以进一步将由电路设计者提供的采样速率传输到仿真器,使得跟踪逻辑以适当的间隔跟踪状态。
为了调试组件,仿真器可以使用组件被映射到的FPGA。此外,组件的重新仿真可以在由电路设计者指定的任何点执行。
对于所标识的FPGA,调试子系统可以向仿真器传输指令,以加载具有与所标识的FPGA相同配置的多个仿真器FPGA。调试子系统另外发信号通知仿真器并行使用多个FPGA。多个FPGA中的每个FPGA与接口信号的不同时间窗口一起使用,以在更短的时间内生成更大的时间窗口。例如,所标识的FPGA可能需要一个小时或更长时间才能使用一定量的周期。然而,如果多个FPGA具有与所标识的FPGA相同的数据和结构,并且这些FPGA中的每个FPGA运行周期的子集,则仿真器可能需要几分钟的时间来让FPGA共同使用所有周期。
电路设计者可以标识要重新仿真的DUT信号的层次结构或列表。为了实现这一点,调试子系统确定仿真信号的层次结构或列表所需要的FPGA,检索必要的接口信号,并且将检索到的接口信号传输到仿真器以进行重新仿真。因此,电路设计者可以标识DUT的任何元件(例如,组件、设备或信号)以进行调试/重新仿真。
波形子系统使用跟踪信号生成波形。如果电路设计者请求查看在仿真运行期间跟踪的信号的波形,则主机系统从存储子系统中检索信号。波形子系统显示信号的图。对于一个或多个信号,当信号从仿真器被接收到时,波形子系统可以自动生成信号的图。
图10示出了可以在其中执行用于引起机器执行本文中讨论的方法中的任何一个或多个方法的指令集的计算机系统1000的示例机器。在替代实现中,该机器可以连接(例如,联网)到LAN、内联网、外联网和/或互联网中的其他机器。该机器可以在客户端服务器网络环境中以服务器或客户端机器的身份操作,在对等(或分布式)网络环境中作为对等机器操作,或者在云计算基础设施或环境中作为服务器或客户端机器操作。
该机器可以是个人计算机(PC)、平板PC、机顶盒(STB)、个人数字助理(PDA)、蜂窝电话、网络设施、服务器、网络路由器、交换机或桥接器、或者能够执行一组指令(顺序或其他)的任何机器,这些指令指定该机器要采取的动作。此外,虽然说明了单个机器,但术语“机器”也应当包括单独或联合执行一组(或多组)指令以执行本文中讨论的方法中的任何一个或多个方法的任何机器集合。
示例计算机系统1000包括处理设备1002、主存储器1004(例如,只读存储器(ROM)、闪存、诸如同步DRAM(SDRAM)等动态随机存取存储器(DRAM)、静态存储器1006(例如,闪存、静态随机存取存储器(SRAM)等)和数据存储设备1018,它们经由总线1030彼此通信。
处理设备1002表示一个或多个处理器,诸如微处理器、中央处理单元等。更具体地,处理设备可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或者实现其他指令集的处理器、或者实现指令集组合的处理器。处理设备1002也可以是一个或多个专用处理设备,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器等。处理设备1002可以被配置为执行用于执行本文中描述的操作和步骤的指令1026。
计算机系统1000还可以包括用于通过网络1020进行通信的网络接口设备1008。计算机系统1000还可以包括视频显示单元1010(例如,液晶显示器(LCD)或阴极射线管(CRT))、字母数字输入设备1012(例如,键盘)、光标控制设备1014(例如,鼠标)、图形处理单元1022、信号生成设备1016(例如,扬声器)、图形处理单元1022、视频处理单元1028和音频处理单元1032。
数据存储设备1018可以包括机器可读存储介质1024(也称为非暂态计算机可读介质),其上存储有一组或多组指令1026或体现本文中描述的方法或功能中的任何一个或多个的软件。在计算机系统1000执行指令1026期间,指令1026还可以完全或至少部分地驻留在主存储器1004内和/或处理设备1002内,主存储器1004和处理设备1004也构成机器可读存储介质。
在一些实现中,指令1026包括用于实现与本公开相对应的功能的指令。尽管机器可读存储介质1024在示例实现中被示出为单个介质,但术语“机器可读存储介质”应当被视为包括存储一个或多个指令集的单个介质或多个介质(例如,集中式或分布式数据库、和/或相关联的高速缓存和服务器)。术语“机器可读存储介质”还应当被视为包括能够存储或编码指令集以供机器执行、并且引起机器和处理设备1002执行本公开的方法中的任何一个或多个方法的任何介质。因此,术语“机器可读存储介质”应当相应地理解为包括但不限于固态存储器、光学介质和磁性介质。
其他配置考虑事项
所公开的配置的示例益处和优点包括提高估计DUT内的组合路径的延迟的精度,由于编译器分割和P&R(这两者都随着延迟精度的提高而提高)而提高了DUT的仿真速度(即,减少了仿真器在仿真编译DUT时所需要的处理周期),并且减少了估计DUT内的组合路径的延迟所消耗的处理资源。为了减少确定组合路径所需要的处理资源,本文中描述的延迟估计系统使用维度彼此正交的特征向量。通过使用避免冗余信息的维度(例如,关于一个特征中的组合路径的数据可以从另一特征中导出),延迟估计系统增加了生成延迟的精度(例如,附加的非冗余信息增加了系统区分不同组合路径和对应延迟的能力),同时没有浪费处理资源来处理冗余信息。通过在编译工作流程的早期后端阶段提供更准确的延迟估计,延迟估计系统允许编译器专注于优化DUT的真实关键路径,而不是优化其延迟不如真实关键路径的延迟大的错误地标记的关键路径。因此,延迟估计系统可以改进DUT仿真(例如,优化的关键路径导致仿真速度增加),而无需手动调节或附加迭代来调节内部FPGA延迟。此外,由于初始结果的精度低而减少了需要重新执行仿真的频率,这也减少了仿真系统所消耗的处理资源。更高的仿真频率可以更快地完成用户设计的测试过程,允许更多的覆盖范围,并且降低成本。
前面详细描述的一些部分是根据计算机存储器内对数据比特的操作的算法和符号表示呈现的。这些算法描述和表示是数据处理领域的技术人员用来最有效地将其工作的实质传达给本领域其他技术人员的方式。算法可以是导致期望结果的一系列操作。这些操作是需要对物理量进行物理操纵的操作。这样的量可以采取能够被存储、组合、比较和以其他方式操纵的电信号或磁信号的形式。这样的信号可以称为比特、值、元素、符号、字符、项目、数字等。
然而,应当记住,所有这些和类似的术语都与适当的物理量相关联,并且只是应用于这些量的方便标签。除非从本公开中明确指出,否则应当理解,在整个描述中,某些术语是指计算机系统或类似电子计算设备的动作和过程,其将表示为计算机系统的寄存器和存储器内的物理(电子)量的数据操纵和变换为类似地表示为计算机系统存储器或寄存器或其他这样的信息存储设备内的物理量的其他数据。
本公开还涉及一种用于执行本文中的操作的装置。该装置可以是专门为预期目的而构造的,或者它可以包括由存储在计算机中的计算机程序选择性地激活或重新配置的计算机。这样的计算机程序可以存储在计算机可读存储介质中,诸如但不限于任何类型的盘,包括软盘、光盘、CD-ROM和磁光盘、只读存储器(ROM)、随机存取存储器(RAM)、EPROM、EEPROM、磁或光卡、或适合于存储电子指令的任何类型的介质,上述每个耦合到计算机系统总线。
本文中提出的算法和显示与任何特定计算机或其他装置本质上都不相关。根据本文中的教导,各种其他系统可以与程序一起使用,或者可以证明构造更专业的装置来执行该方法是方便的。此外,本公开没有参考任何特定编程语言进行描述。将意识到,本文中描述的本公开的教导可以使用各种编程语言来实现。
本公开可以作为计算机程序产品或软件来提供,该计算机程序产品或软件可以包括其上存储有指令的机器可读介质,该指令可以用于对计算机系统(或其他电子设备)进行编程以执行根据本公开的过程。机器可读介质包括用于以机器(例如,计算机)可读的形式存储信息的任何机制。例如,机器可读(例如,计算机可读)介质包括机器(例如,计算机)可读存储介质,诸如只读存储器(“ROM”)、随机存取存储器(“RAM”)、磁盘存储介质、光存储介质、闪存设备等。
在前述公开中,已经参考其具体示例实现描述了本公开的实现。很清楚的是,在不脱离如以下权利要求中所阐述的本公开的更广泛的精神和实现范围的情况下,可以对其进行各种修改。在本公开涉及单数时态的一些元素的情况下,可以在附图中描绘多于一个元素,并且相似的元素用相似的附图标记。相应地,本公开和附图应当被视为说明性的,而不是限制性的。
Claims (20)
1.一种非暂态计算机可读介质,包括用于延迟估计的存储指令,其中所述存储指令在由处理器执行时引起所述处理器:
接收被测设计(DUT)的多个逻辑块和连接所述多个逻辑块中的一个或多个逻辑块的组合路径;
将延迟模型应用于包括一个或多个正交特征的特征向量,所述一个或多个正交特征表示由于通过编译器对所述DUT进行分割而生成的所述组合路径的导线延迟,所述延迟模型使用表示多个组合路径的多个测量延迟的所述一个或多个正交特征来训练,所述延迟模型确定所述组合路径的所述导线延迟;
基于所述组合路径的所述导线延迟来生成时序图;以及
将所述时序图提供给所述编译器,以执行所述DUT的放置和路由。
2.根据权利要求1所述的非暂态计算机可读介质,其中所述指令还包括在由所述处理器执行时引起所述处理器执行以下操作的指令:
使用编译DUT的所述多个组合路径和所述多个组合路径的所述多个测量延迟来生成第一训练数据集;以及
使用所述第一训练数据集来训练所述延迟模型。
3.根据权利要求2所述的非暂态计算机可读介质,其中所述指令还包括在由所述处理器执行时引起所述处理器执行以下操作的指令:
接收所述组合路径的测量延迟,其中所述测量延迟是在所述编译器编译所述DUT之后获取的;以及
使用第二训练数据集来重新训练所述延迟模型,所述第二训练数据集使用所述组合路径和所述测量延迟而生成。
4.根据权利要求3所述的非暂态计算机可读介质,其中所述使用所述第二训练数据集来重新训练所述延迟模型的指令还包括在由所述处理器执行时引起所述处理器执行以下操作的指令:
调节与所述特征向量的多个维度相对应的多个权重;
使用经调节的所述多个权重、所述组合路径和所述测量延迟来生成所述第二训练数据集;以及
使用所述第二训练数据集来重新训练所述延迟模型。
5.根据权利要求1至4中任一项所述的非暂态计算机可读介质,其中所述指令还包括在由所述处理器执行时引起所述处理器执行以下操作的指令:
使用以下中的至少一项来生成所述特征向量:所述组合路径上的逻辑电平的数目、所述组合路径上的多个导线的总层次距离、所述组合路径上的所述多个导线的扇出的总和、所述组合路径的时序路径类型、所述组合路径所跨越的多个现场可编程门阵列(FPGA)的寄存器基元填充速率、以及所述多个FPGA的查找表(LUT)基元填充速率。
6.根据权利要求1至5中任一项所述的非暂态计算机可读介质,其中所述组合路径是跨越第一数目的FPGA的第一组合路径,其中所述延迟是第一延迟,并且其中所述指令还包括在由所述处理器执行时引起所述处理器执行以下操作的指令:
确定跨越第二数目的FPGA的第二组合路径的第二延迟,其中所述第二数目的FPGA少于所述第一数目的FPGA;以及
响应于所述第二延迟大于所述第一延迟,确定所述第二组合路径是关键路径,其中所述编译器向所述第一组合路径分配第一时分复用(TDM)比、并且向所述第二组合路径分配第二TDM比,所述第二TDM比大于所述第一TDM比。
7.根据权利要求1至6中任一项所述的非暂态计算机可读介质,其中所述指令还包括在由所述处理器执行时引起所述处理器执行以下操作的指令:
跨多个FPGA分割所述DUT的电路设计;以及
标识连接在所述组合路径上的所述一个或多个逻辑块。
8.根据权利要求7所述的非暂态计算机可读介质,其中所述时序图是第一时序图,其中所述分割所述电路设计的指令包括使用由所述延迟模型生成的第二时序图来分割所述电路设计的指令。
9.根据权利要求1至8中任一项所述的非暂态计算机可读介质,其中所述基于所述组合路径的所述导线延迟来生成所述时序图的指令包括执行以下操作的指令:
确定所述组合路径的基元延迟;以及
使用所述导线延迟和所述基元延迟来确定总组合路径延迟,其中所述时序图包括连接所述DUT的所述多个逻辑块的多个组合路径的多个总组合路径延迟。
10.一种用于延迟估计的方法,所述方法包括:
接收DUT的多个逻辑块和连接所述多个逻辑块中的一个或多个逻辑块的组合路径;
将延迟模型应用于表示所述组合路径的特征向量,所述延迟模型被配置为确定所述组合路径的延迟;
由处理器基于所述组合路径的所述延迟来生成时序图;以及
提供所述时序图,以用于所述DUT的放置和路由的执行。
11.根据权利要求10所述的方法,还包括:
使用编译DUT的多个组合路径和所述多个组合路径的多个测量延迟来生成第一训练数据集;以及
使用所述第一训练数据集来训练所述延迟模型。
12.根据权利要求11所述的方法,还包括:
接收所述组合路径的测量延迟,其中所述测量延迟是在编译器编译所述DUT之后获取的;以及
使用第二训练数据集来重新训练所述延迟模型,所述第二训练数据集使用所述组合路径和所述测量延迟而生成。
13.根据权利要求12所述的方法,其中使用所述第二训练数据集来重新训练所述延迟模型包括:
调节与所述特征向量的多个维度相对应的多个权重;
使用经调节的所述多个权重、所述组合路径和所述测量延迟来生成所述第二训练数据集;以及
使用所述第二训练数据集来重新训练所述延迟模型。
14.根据权利要求10至13中任一项所述的方法,还包括:
使用以下中的至少一项来生成所述特征向量:所述组合路径上的逻辑电平的数目、所述组合路径上的多个导线的总层次距离、所述组合路径上的所述多个导线的扇出的总和、所述组合路径的时序路径类型、所述组合路径所跨越的多个FPGA的寄存器基元填充速率、以及所述多个FPGA的LUT基元填充速率。
15.根据权利要求10至14中任一项所述的方法,其中所述组合路径是跨越第一数目的FPGA的第一组合路径,其中所述延迟是第一延迟,并且所述方法还包括:
确定跨越第二数目的FPGA的第二组合路径的第二延迟,其中所述第二数目的FPGA少于所述第一数目的FPGA;以及
响应于所述第二延迟大于所述第一延迟,确定所述第二组合路径是关键路径,其中所述编译器向所述第一组合路径分配第一时分复用(TDM)比、并且向所述第二组合路径分配第二TDM比,所述第二TDM比大于所述第一TDM比。
16.一种用于延迟估计的系统,所述系统包括:
存储器;以及
处理器,与所述存储器可操作地耦合,以执行:
接收DUT的多个逻辑块和连接所述多个逻辑块中的一个或多个逻辑块的组合路径;
将延迟模型应用于表示所述组合路径的特征向量,所述延迟模型被配置为确定所述组合路径的所述延迟;
基于所述组合路径的延迟来生成时序图;以及
将所述时序图提供给编译器,以执行所述DUT的放置和路由。
17.根据权利要求16所述的系统,其中所述处理器还被配置为:
使用编译DUT的多个组合路径和所述多个组合路径的多个测量延迟来生成第一训练数据集,所述多个测量延迟存储在测量延迟的数据库中;以及
使用所述第一训练数据集来训练所述延迟模型。
18.根据权利要求17所述的系统,其中所述处理器还被配置为:
接收所述组合路径的测量延迟,其中所述测量延迟是在所述编译器编译所述DUT之后获取的;以及
使用第二训练数据集来重新训练所述延迟模型,所述第二训练数据集使用所述组合路径和所述测量延迟而生成。
19.根据权利要求18所述的系统,其中所述处理器被配置为通过以下方式使用所述第二训练数据集来重新训练所述延迟模型:
调节与所述特征向量的多个维度相对应的多个权重;
使用经调节的所述多个权重、所述组合路径和所述测量延迟来生成所述第二训练数据集;以及
使用所述第二训练数据集来重新训练所述延迟模型。
20.根据权利要求16至19中任一项所述的系统,其中所述处理器还被配置为:
接收所述组合路径;以及
使用以下中的至少一项来生成所述特征向量:所述组合路径上的逻辑电平的数目、所述组合路径上的多个导线的总层次距离、所述组合路径上的所述多个导线的扇出的总和、所述组合路径的时序路径类型、所述组合路径所跨越的多个FPGA的寄存器基元填充速率、以及所述多个FPGA的LUT基元填充速率。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US202063124332P | 2020-12-11 | 2020-12-11 | |
US63/124,332 | 2020-12-11 | ||
PCT/US2021/062937 WO2022125978A1 (en) | 2020-12-11 | 2021-12-10 | Machine learning delay estimation for emulation systems |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116457788A true CN116457788A (zh) | 2023-07-18 |
Family
ID=79602236
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202180075354.0A Pending CN116457788A (zh) | 2020-12-11 | 2021-12-10 | 仿真系统的机器学习延迟估计 |
Country Status (5)
Country | Link |
---|---|
US (2) | US11860227B2 (zh) |
EP (1) | EP4217904A1 (zh) |
KR (1) | KR20230114264A (zh) |
CN (1) | CN116457788A (zh) |
WO (1) | WO2022125978A1 (zh) |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11543452B1 (en) * | 2020-09-08 | 2023-01-03 | Xilinx, Inc. | Hierarchical access simulation for signaling with more than two state values |
US20220300688A1 (en) * | 2021-03-17 | 2022-09-22 | Synopsys, Inc. | Fast synthesis of logical circuit design with predictive timing |
US20220335189A1 (en) * | 2022-07-01 | 2022-10-20 | Yi Peng | Systems and methods for programmable fabric design compilation |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5452239A (en) * | 1993-01-29 | 1995-09-19 | Quickturn Design Systems, Inc. | Method of removing gated clocks from the clock nets of a netlist for timing sensitive implementation of the netlist in a hardware emulation system |
US5457638A (en) * | 1993-02-23 | 1995-10-10 | Nec Research Institue, Inc. | Timing analysis of VLSI circuits |
US6334219B1 (en) * | 1994-09-26 | 2001-12-25 | Adc Telecommunications Inc. | Channel selection for a hybrid fiber coax network |
US7133819B1 (en) * | 2000-08-24 | 2006-11-07 | Altera Corporation | Method for adaptive critical path delay estimation during timing-driven placement for hierarchical programmable logic devices |
US7051312B1 (en) * | 2003-06-24 | 2006-05-23 | Xilinx, Inc. | Upper-bound calculation for placed circuit design performance |
US7437697B2 (en) * | 2005-12-16 | 2008-10-14 | International Business Machines Corporation | System and method of criticality prediction in statistical timing analysis |
US7689954B2 (en) * | 2006-05-25 | 2010-03-30 | Wisconsin Alumni Research Foundation | Efficient statistical timing analysis of circuits |
US8601420B1 (en) * | 2009-12-04 | 2013-12-03 | Cadence Design Systems, Inc. | Equivalent waveform model for static timing analysis of integrated circuit designs |
US10628625B2 (en) * | 2016-04-08 | 2020-04-21 | Synopsys, Inc. | Incrementally distributing logical wires onto physical sockets by reducing critical path delay |
CN109255159B (zh) * | 2018-08-17 | 2023-04-07 | 东南大学 | 一种基于机器学习的电路路径延时波动预测方法 |
-
2021
- 2021-12-10 US US17/548,317 patent/US11860227B2/en active Active
- 2021-12-10 KR KR1020237014259A patent/KR20230114264A/ko unknown
- 2021-12-10 CN CN202180075354.0A patent/CN116457788A/zh active Pending
- 2021-12-10 EP EP21843824.0A patent/EP4217904A1/en active Pending
- 2021-12-10 WO PCT/US2021/062937 patent/WO2022125978A1/en active Application Filing
-
2023
- 2023-11-28 US US18/520,731 patent/US20240094290A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20220187367A1 (en) | 2022-06-16 |
US20240094290A1 (en) | 2024-03-21 |
KR20230114264A (ko) | 2023-08-01 |
EP4217904A1 (en) | 2023-08-02 |
WO2022125978A1 (en) | 2022-06-16 |
US11860227B2 (en) | 2024-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11860227B2 (en) | Machine learning delay estimation for emulation systems | |
US11836641B2 (en) | Machine learning-based prediction of metrics at early-stage circuit design | |
US8214195B2 (en) | Testing in a hardware emulation environment | |
US7076416B2 (en) | Method and apparatus for evaluating logic states of design nodes for cycle-based simulation | |
US11853662B2 (en) | Machine-learning enhanced compiler | |
KR20210129071A (ko) | 상관된 샘플 생성 및 효율적인 통계적 시뮬레이션을 사용하여 타이밍 수율 및 수율 병목을 컴퓨팅하기 위한 신규한 방법 | |
US20210374314A1 (en) | Engineering Change Order Scenario Compression by Applying Hybrid of Live and Static Timing Views | |
US11023635B1 (en) | Sequence of frames generated by emulation and waveform reconstruction using the sequence of frames | |
US11709984B2 (en) | Automatic sequential retry on compilation failure | |
CN114115887A (zh) | 具有用于快速分区编译的动态分区负载均衡的自适应调度 | |
CN114330217B (zh) | 被测设计引脚位置驱动的同时的信号分组和引脚分配 | |
US20220382942A1 (en) | Non-functional loopback-paths removal from io-pads using logic replication | |
US20230195982A1 (en) | Transformations for multicycle path prediction of clock signals | |
US12014205B2 (en) | Advanced register merging | |
US20220300690A1 (en) | Incremental compilation for fpga-based systems | |
US20240028812A1 (en) | Waveform capture using multicycle path properties | |
US20230409788A1 (en) | Synchronizing distributed simulations of a circuit design | |
US11734080B1 (en) | Memory efficient and scalable approach to stimulus (waveform) reading | |
US20230186006A1 (en) | Slack budgeting and discretization for a programmable device | |
US20230071521A1 (en) | Detecting simulation, emulation and prototyping issues using static analysis tools | |
CN118363425A (zh) | 减少仿真或原型设计中时钟控制和触发器操作的性能开销 | |
CN118551717A (zh) | 用于各种协议总线事务的基于机器学习的异常检测系统 | |
WO2022251227A1 (en) | Non-functional loopback-paths removal from io-pads using logic replication | |
CN118734753A (zh) | 电路设计仿真的动态控制 | |
KR100594593B1 (ko) | 반도체 소자의 설계 검증을 위한 고속 병렬 시뮬레이션 방법 |
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 |