仿真设备、仿真系统、仿真方法和仿真程序 [0001] 相关申请的交叉引用 [0002] 于2017年11月13日提交的日本专利申请号2017-218190的包括说明书、附图和摘要在内的公开内容通过引用整体并入本文。 背景技术 [0003] 本发明涉及一种仿真设备、仿真系统、仿真方法和仿真程序。 [0004] 在开发与汽车等有关的技术时,正在引入基于模型的开发(MBD),其中通过使用模型来执行仿真以便防止在开发的后期阶段中出现问题,该模型仿真在开发的早期阶段待开发的产品的行为。在这种开发中,例如,详细分析定时和性能对于汽车控制技术而言是重要的。然而,在当前周期精确仿真器中,执行速度比实际芯片中的执行速度慢两个或更多个数量级。对于发动机启动、行驶等执行的数十秒到几分钟的仿真需要长的执行时间。 [0005] 为了解决该问题,例如,通过使用多核模型仿真器来提高仿真速度(参见日本未审查专利申请公开号2006-293759),该多核模型仿真器包括多个线程和执行线程的多个核心模型。 发明内容 [0006] 然而,在日本未审查专利申请公开号2006-293759中描述的发明涉及一种并发执行方法,其基于假定各自作为硬件单元的处理器元件PE0、PE1等之间的依赖性(即,处理器元件PE1使用处理器元件PE0的处理结果的依赖性)是稀疏的。因此,如果处理器元件PE0与PE1之间的依赖性或相同处理器元件PE0之间的依赖性是密集的,则在内部发生排队并且仿真速度难以增加。 [0007] 因此,需要一种仿真设备、仿真系统、仿真方法和仿真程序,其能够提高仿真速度。 [0008] 根据本说明书的描述和附图,其他目的和新颖特征将是显而易见的。 [0009] 根据一个实施例,通过使用第一跟踪信息从仿真目标模型生成多个处理单元,该多个处理单元没有相互依赖性并且能够并行处理;从第一跟踪信息生成用于处理单元的输入信息;关于处理单元并行执行仿真,以生成第二跟踪信息;并且按时间序列顺序组合第二跟踪信息的与第一跟踪信息匹配的部分,以获得仿真结果。 [0010] 根据上文所描述的实施例,可以提供一种仿真设备、仿真系统、仿真方法和仿真程序,其可以提高仿真速度。 附图说明 [0011] 图1是根据第一实施例的仿真的概要的说明图。 [0012] 图2是图示了包括根据第一实施例的仿真设备10的仿真系统1的示意性配置的框图。 [0013] 图3是图示了根据第一实施例的仿真方法的过程的流程图。 [0014] 图4是图示了根据第一实施例的同步分析进程的过程的流程图。 [0015] 图5是根据第一实施例的同步分析进程的说明图。 [0016] 图6是图示了根据第一实施例的验证进程的过程的流程图。 [0017] 图7图示了包括根据第一实施例的仿真设备10的仿真系统2的示意性配置。 [0018] 图8是图示了根据第一实施例的基于模型的开发的仿真系统100的示意性配置的框图。 [0019] 图9图示了包括根据第二实施例的仿真设备70的仿真系统3的示意性配置。 具体实施方式 [0020] 为了清楚说明,适当时在以下描述和附图中进行省略和简化。如果由硬件实现,则作为执行各种进程的功能框的附图中所图示的元件中的每个元件可以由CPU、存储器或其他电路配置,并且如果由软件实现,则可以通过加载到存储器的程序来实现。 [0021] 因此,本领域技术人员应当理解,这些功能框可以以各种方式仅通过硬件、仅通过软件或通过硬件和软件的组合来实现,并且这些元件的实现不限于它们中的任何一个。在整个附图中,相同的元件用相同的附图标记标注,并且根据需要省略多余的描述。 [0022] 上文所描述的程序可以存储在各种类型的非暂态计算机可读介质中,以提供给计算机。 [0023] 非暂态计算机可读介质包括各种类型的有形存储介质。非暂态计算机可读介质的示例包括磁存储介质(例如,软盘、磁带和硬盘驱动器)、磁光存储介质(例如,磁光盘)、CD-ROM(只读存储器)、CD-R、CD-R/W和半导体存储器(例如,掩模ROM、PROM(可编程ROM)、EPROM(可擦除ROM)、闪存ROM和RAM(随机存取存储器))。 [0024] 而且,程序可以通过各种类型的暂态计算机可读介质提供给计算机。暂态计算机可读介质的示例包括电信号、光信号和电磁波。暂态计算机可读介质可以将程序经由诸如电线和光纤之类的有线通信路径或无线通信路径提供给计算机。 [0025] 第一实施例 [0026] 接下来,对根据该第一实施例的仿真设备和仿真方法进行描述。 [0027] 首先,对根据该第一实施例的仿真设备和仿真方法能够实现高速仿真的原因进行描述。 [0028] 图1是根据该第一实施例的仿真的概要的说明图。 [0029] 在仿真系统中,作为高速低精度功能仿真器的Fast-ISS(指令集仿真器)输入输入数据[n](在该示例中,n=0至2),仿真仿真目标模型,并且输出第一跟踪信息,其包括输出数据[0]和输出数据[1]。尽管如稍后将描述的,Fast-ISS在根据该第一实施例的仿真系统或仿真设备中不是必需的,但是Fast-ISS可以作为一个部件被包括在内。 [0030] 仿真设备基于第一跟踪信息来将仿真目标模型划分为多个划分的模型。每个划分的模型包括没有相互依赖性的多个仿真处理单元中的至少一个仿真处理单元。通过准备划分的模型、用于划分的模型的输入数据[0]到输入数据[2]、以及作为功能仿真结果并且还作为以这种方式用于划分的模型的输入数据(输入信息)的输出数据[0]和输出数据[1],可以并行执行随后的低速高精度仿真。 [0031] 此后,各自作为低速高精度仿真器的多个CA(周期精确的)-ISS输入输入数据[0]至[2]和输出数据[0]和[1],并且并行对划分的模型执行仿真,从而可以计算仿真目标模型中的定时信息并且可以实现高速仿真。 [0032] 为了实现这种仿真,根据该第一实施例的仿真设备包括下文所描述的配置。 [0033] 图2是图示了包括根据该第一实施例的仿真设备10的仿真系统1的示意性配置的框图。 [0034] 仿真系统1包括仿真设备10、输入单元20、第一指令集仿真器30、进度信息记录单元40和输出单元50。这些部件可以在诸如个人计算机之类的计算机上或服务器上实现。 [0035] 输入单元20输入输入数据,例如,仿真执行程序的存储器图像、参数和来自用户的指令,并将输入数据输出到第一指令集仿真器30。 [0036] 第一指令集仿真器30输入该输入数据,执行功能仿真,并将包括仿真结果的第一跟踪信息(例如,存储器数据和寄存器值)输出到仿真设备10。 [0037] 第一指令集仿真器30是Fast-ISS,并且可以以接近实际芯片的操作速度的约 200MIPS的高速来执行操作。然而,因为简化或省略了周期精确仿真,所以第一指令集仿真器30不能评估精确的性能或精确的定时。因此,在第一跟踪信息中,精确的周期数目(例如,处理时间)不包括在内或不多。 [0038] 进度信息记录单元40通常也被称为时间机器或快照,并且记录进度信息并将其输出到仿真设备10。本文中所描述的进度信息包括关于Fast-ISS 30的存储器和寄存器的状态的信息,还包括用于存储该状态和恢复(从存储状态的时间开始恢复)的信息。 [0039] 进度信息记录单元40可以记录第一跟踪信息作为进度信息。通过存储第一跟踪信息,可以省略由稍后所描述的Fast-ISS 30重新执行的仿真的至少一部分。 [0040] 仿真设备10输入第一跟踪信息,生成用于仿真的输入数据(输入信息),通过使用所生成的输入数据执行周期精确仿真,并将仿真结果(例如,第二跟踪信息和执行结果的存储器数据)作为输出数据输出到输出单元50。第二跟踪信息包括比第一跟踪信息更多的定时信息,诸如周期数目。 [0041] 而且,仿真设备10将输出数据的一部分反馈给Fast-ISS 30作为中间仿真结果。 [0042] 除了从Fast-ISS 30输出的第一跟踪信息之外、或替代该第一跟踪信息,仿真设备 10还可以使用进度信息。 [0043] 稍后将对仿真设备10的细节进行描述。 [0044] 输出单元50将上文所描述的输出数据输出到仿真系统1的外部。 [0045] 仿真设备10包括同步分析单元11、划分单元12、多个第二指令集仿真器13至15、验证单元16和组合单元17。第二指令集仿真器的数目不限于三个。 [0046] 同步分析单元11从Fast-ISS 30等输入第一跟踪信息,分析仿真目标模型的程序流程中的多个进程之间的依赖性,检测可以并行处理的多个处理单元,并且将用于把仿真目标模型划分为那些处理单元的划分点的位置信息输出到划分单元12。同步分析单元11还将输入的第一跟踪信息按原样输出到划分单元12和验证单元16。 [0047] 同步分析单元11分别输入CA-ISS设置参数,例如,存储器数据、周期数目以及用于运行第二指令集仿真器13至15所需的配置信息,并经由划分单元12将它们输出到第二指令集仿真器13至15。 [0048] 在仿真设备10中,除了同步分析单元11的同步分析功能之外,Fast-ISS 30还可以具有同步分析功能。进一步地,替代在仿真设备10中包括同步分析单元11,Fast-ISS 30可以具有同步分析功能。 [0049] 划分单元12基于划分点的位置信息来将仿真目标模型划分为多个没有相互依赖性的划分的模型,并将它们输出到第二指令集仿真器13至15。每个划分的模型包括仿真目标模型的至少一个处理单元。 [0050] 划分单元12还从第一追踪信息生成用于每个划分的模型的输入数据,并将所生成的输入数据输出到第二指令集仿真器13至15。 [0051] 第二指令集仿真器13至15例如通过使用关于划分的模型和输入数据的信息来并行执行周期精确仿真,并将包括与定时(例如,执行周期数目)有关的信息在内的第二跟踪信息输出到验证单元16。 [0052] 在该示例中,第二指令集仿真器13至15中的每个第二指令集仿真器是CA-ISS,并且是低速高精度周期精确仿真器。它以几个MIPS到几个KIPS的低速运行,并且可以评估性能和定时。 [0053] CA-ISS 13至15可以直接从输入单元20输入输入数据,例如,执行程序的存储器图像、仿真参数和来自用户的指令。 [0054] 验证单元16确定从Fast-ISS 30输出的第一跟踪信息和从CA-ISS 13至15输出的第二跟踪信息是否相互匹配,并将是否存在失配和关于失配的定时的信息输出到组合单元 17。进一步地,当找到第一跟踪信息和第二跟踪信息相互失配的部分时,验证单元16停止验证进程一次。 [0055] 组合单元17按时间序列顺序组合与第一跟踪信息匹配的部分中的第二跟踪信息、或失配部分之前的第二跟踪信息,以获得CA-ISS 13至15的仿真结果。组合单元17还将上文所描述的失配的部分中的第一跟踪信息和第二跟踪信息、中断的定时信息等反馈给Fast-ISS 30作为中间结果。 [0056] 然后,Fast-ISS 30输入上文所描述的中间结果,并且Fast-ISS 30、同步分析单元 11、划分单元12、CA-ISS 13至15、验证单元16和组合单元17重复进程,直到消除上文所描述的失配部分为止。此后,仿真系统1将由组合单元17组合的第二跟踪信息输出到输出单元50作为仿真结果。 [0057] 通过该配置,根据该第一实施例的仿真设备10能够实现高速仿真。 [0058] 接下来,对仿真设备10的操作,即,根据该第一实施例的仿真方法进行具体描述。 [0059] 图3是图示了根据该第一实施例的仿真方法的过程的流程图。 [0060] 当仿真系统1开始操作时,输入单元20输入输入数据,例如,执行程序的存储器图像、仿真参数和来自用户的指令(步骤S10)。 [0061] 然后,Fast-ISS 30通过使用输入数据对仿真目标模型执行高速低精度的功能仿真,并计算第一跟踪信息(步骤S20)。该功能仿真可以与相关技术中的功能仿真相同。进一步地,尽管步骤S10和S20在根据该第一实施例的仿真方法中不是必需的,但是步骤S10和S20可以被包括在该过程中。 [0062] 随后,同步分析单元11分析仿真目标模型的多个处理单元之间的依赖性,并计算用于将仿真目标模型划分为处理单元的划分点的位置信息(步骤S30)。 [0063] 图4是图示了根据该第一实施例的同步分析进程的过程的流程图。步骤S30中的同步分析进程包括步骤S310至S350(注意:步骤S30之后不是步骤S310至S350)。 [0064] 当输入第一跟踪信息时(步骤S310),同步分析单元11分析第一跟踪信息中包括的资源访问信息和指令信息,例如,存储器的地址值、寄存器的数目等(步骤S320),并且提取当执行仿真目标模型的程序时存在的依赖性(对相同资源的访问,进程的开始、中断和结束等)(步骤S330)。在该分析中,如果在某些两个部分(处理单元)中不包括对相同资源的访问,则可以并发执行这些处理单元。 [0065] 图5是根据该第一实施例的同步分析进程的说明图。 [0066] 同步分析单元11监测作为处理单元的候选的进程1和进程2是否在预先确定的仿真时间段(例如,一秒)内访问存储器中的相同地址。例如,如果进程1和进程2在时间段α内访问相同的地址A,则关于该时间段α,进程1和进程2不能作为单独的处理单元进行处理。 [0067] 同时,如果在时间段β内,进程1访问地址A,而进程2访问地址B,并且进程1和进程2没有访问相同的地址,则关于该时间段β,进程1和进程2可以作为单独的处理单元进行处理。即使在除了进程1和2之外还存在进程3、4、5......的情况下,同样也可以适用。 [0068] 进一步地,同步分析单元11可以使用进程的起点、断点和终点作为处理单元的起点和终点。 [0069] 同步分析单元11生成用于执行划分成可以从这些分析结果并行处理的多个处理单元的划分点(步骤S340),并且将划分点的位置信息和处理单元的依赖信息输出到划分单元12(步骤S350)。 [0070] 在关于特定进程、特定时间段等确定了这种划分使开销大于预先确定的值的情况下,同步分析单元11还可以确定关于该特定进程、该特定时间段等不执行这种划分。 [0071] 进一步地,同步分析单元11还可以附加地从构建工具、编译器、OS、用户信息等输入用于同步分析的提示信息。 [0072] 例如,同步分析单元11从源代码的描述中提取干扰另一处理器元件的进程的进程作为提示信息,并将其用于分析划分的区段。通常,特定功能或指令用于对另一处理器元件的处理请求和对共享资源的独占控制。众所周知的示例是Pthreads API功能、“pthread_create”和“pthread_mutex_lock”。 [0073] 这些功能干扰新进程或另一处理器元件的进程的启动。因此,通过使用这些功能作为划分的区段的起点或终点,可以在该划分的区段中减少干扰另一执行区段。正由于此,可以使功能仿真结果与周期精确仿真结果之间几乎不发生差异,从而减少发生失配时的仿真的重新执行并提高仿真速度。 [0074] 另外,作为嵌入式系统和用户所指定的特定功能独有的进程的中断和异常处理程序也可以是提示信息,因为它们中的每个都是启动新进程的触发器。而且,OS和CPU的状态信息(例如,空闲状态和待机状态)可以是提示信息。 [0075] 在这种情况下,同步分析单元11可以仅基于提示信息来执行分析,以便防止同步分析花费很长时间。同步分析单元11还可以包括降低由于分析的负载、同时允许重新执行仿真的概率增加到一定程度的另一种模式,例如如稍后将描述的,当存储器访问、中断等的执行顺序从最初期望的仿真的进程内容改变时(即,当程序流程改变时),在验证进程中选择重新执行仿真的模式。 [0076] 进一步地,因为一些仿真(例如,嵌入式系统)继续操作,所以当Fast-ISS 30的进程已经进展到一定程度时(例如,当已经处理了多个指令时),同步分析单元11可以在不等待完成Fast-ISS 30的整个过程的情况下开始进程。也就是说,Fast-ISS 30进行的仿真以及同步分析单元11和后续部件的进程(即,由仿真设备10进行的仿真),可以针对作为目标的不同过程而并发进展。 [0077] 随后,划分单元12使用划分点的位置信息将仿真目标模型划分为多个划分的模型,并基于第一跟踪信息和仿真目标模型的程序代码来生成用于每个划分的模型的输入数据,即,作为寄存器、存储器等的输入值的执行信息(步骤S40)。 [0078] 在该步骤中,划分单元12可以基于用户进行的指定、仿真器的执行速度、重新执行的频率等来自适应地调整每个处理单元的最大长度。随着处理单元更长,减少了与其相关联的开始/结束的惩罚并且可以提高仿真速度。然而,当第一跟踪信息和第二跟踪信息之间的差异发生时,由于重新执行而导致的惩罚增加。 [0079] 更进一步地,划分单元12可以从第一追踪信息生成与每个划分的模型的输出数据相对应的信息。该信息用于稍后将描述的验证进程。 [0080] 随后,处于并行关系的CA-ISS 13至15中的每个CA-ISS输入设置信息、上文所描述的执行信息以及(如果必要)与划分的模型相对应的第一跟踪信息,执行仿真,并生成第二跟踪信息(步骤S50)。第二跟踪信息包括指令的执行日志,该指令例如指示值何时被写入存储器、值通过何种方式写入存储器、以及将哪个值写入存储器。 [0081] CA-ISS 13至15执行与现有技术相同的低速高精度周期精确仿真。也就是说,仿真本身与通过单独地给出已知CA-ISS的输入而实现的仿真相同。进一步地,尽管并发执行的数目取决于仿真器的执行资源,但是它还可以由用户指定。作为CA-ISS 13至15中的每个CA-ISS的执行程序,可以从Fast-ISS 30原样输入在Fast-ISS 30中使用的执行程序,或者可以从存储器输入每个划分的模型所需的部分的执行程序。 [0082] 随后,验证单元16确认作为由CA-ISS 13至15的仿真结果的第二跟踪信息和第一跟踪信息(或者从划分单元12中的第一跟踪信息生成的信息,其与每个划分的模型的输出数据相对应)是否相互匹配,并生成指示是否存在失配的信息和关于失配的定时的信息(步骤S60)。 [0083] 图6是图示了根据该第一实施例的验证进程的过程的流程图。步骤S60中的验证进程包括步骤S610至S670(注意:步骤S60之后不是步骤S610至S670)。 [0084] 当输入第一跟踪信息和第二跟踪信息时(步骤S610和S620),验证单元16将移除了定时信息(周期数目)的第二跟踪信息中的资源的值与第一跟踪信息中的资源的值进行比较(步骤S630)。在该比较中,验证单元16检测其中考虑了周期精度的CA-ISS 13至15中的事件的执行顺序或定时与Fsat-ISS 30中的事件的执行顺序或定时之间的差异。关于不同的部分,由Fast-ISS 30生成的输出数据(CA-ISS 13至15的输入数据)可以影响由CA-ISS 13至15所计算的输出数据。 [0085] 因此,验证单元16确定第二跟踪信息与第一跟踪信息之间是否存在失配部分(步骤S640)。当不存在失配部分时(步骤S640中为“否”),验证单元16确定是否将所有第二跟踪信息与第一跟踪信息进行比较(步骤S650)。当尚未比较所有第二追踪信息时(步骤S650中为“否”),进程返回到步骤S610。当已经比较了所有第二跟踪信息时(步骤S650中为“是”),验证单元16将所有第二跟踪信息输出到组合单元17并且结束进程(步骤S660)。 [0086] 当存在失配部分时(步骤S640中为“是”),验证单元16将关于失配的定时的信息输出到例如组合单元17并且结束进程(步骤S670)。 [0087] 随后,组合单元17按时间序列顺序组合上文所描述的匹配部分的周期精确仿真的结果(步骤S70)。而且,当在验证进程中存在失配部分时(步骤S60),组合单元17按时间序列顺序组合失配部分之前的匹配部分的周期精确仿真的结果。 [0088] 然后,组合单元17在步骤S60中确定验证进程中是否存在失配部分(步骤S80)。当存在失配部分时(步骤S80中为“是”),组合单元17将中断的定时信息、失配的定时处的执行日志等输出到Fast-ISS 30,以便使得Fast-ISS 30和CA-ISS 13至15再次对失配部分及其后续部分执行仿真。 [0089] 根据该第一实施例的仿真方法重复步骤S20至S80中的进程以消除失配部分。在该重复中,可以通过使用上文所描述的进度信息来恢复用于失配部分及其后续部分的进程。 [0090] 同时,当在步骤S60中的验证进程中不存在失配部分时(步骤S80中为“否”),组合单元17将在步骤S70中组合的周期精确仿真的结果(例如,关于循环数目的信息)输出到输出单元50,并且输出单元50将结果输出到外部(步骤S90)。仿真以该输出结束。 [0091] 根据该第一实施例的仿真设备10的仿真结果与由单个CA-ISS的仿真结果相同。 [0092] 在根据该第一实施例的Fast-ISS 30的仿真中,定时不精确。因此,可以允许进程进展,直到在CA-ISS 13至15执行仿真期间发生外部中断为止,并且Fast-ISS 30再次从中断的发生时间执行仿真。而且,在仿真器等内部的模型发生内部中断的情况下,同样的过程基本上可以适用。然而,在无需来自外部的规定的情况下,通过使用该内部模型执行仿真就已足够。 [0093] 另外,根据该第一实施例的仿真设备10可以以这种方式设计:当发现新添加了原始仿真目标模型中不存在的中断以改变进程的内容时,仿真再次从该改变点执行。 [0094] 更进一步地,在根据该第一实施例的仿真设备10中,验证单元16将第一跟踪信息和第二跟踪信息相互比较以验证第二跟踪信息。然而,当划分的区段关于仿真目标的处理内容没有依赖性并且没有影响处理内容的操作(例如,诸如定时器中断之类的中断)时,可以省略由验证单元16的验证进程,并且组合单元17可以组合第二跟踪信息以创建仿真结果。 [0095] 另外,如上文所描述的,Fast-ISS 30在根据该第一实施例的仿真系统中不是必需的。 [0096] 图7图示了根据该第一实施例的仿真系统2的示意性配置。仿真系统2与仿真系统1的修改相对应。仿真系统2的仿真设备10、输入单元20、Fast-ISS 30、进度信息记录单元40和输出单元50可以是与仿真系统1的那些相同,并且这里省略了详细描述。 [0097] 仿真系统2还包括RTL(寄存器传输级)仿真器61、仿真目标模型所基于的实际机器(实际芯片)62(其与仿真目标模型相对应)、以及FPGA(现场可编程门阵列)63,并且可以通过这种方式进行配置:Fast-ISS 30、RTL仿真器61、实际机器62和FPGA 63可以通过开关进行切换。这些部件的共同之处在于它们生成第一跟踪信息,并且取决于用户的使用环境、过去的使用记录等来使用。 [0098] 在使用实际芯片62或FPGA 63的情况下,可以通过扫描链从进度信息记录单元40输入进度信息,以将仿真置于特定状态。 [0099] 通过这种配置,仿真系统2可以与仿真系统1一样实现高速仿真。 [0100] 在使用根据该第一实施例的仿真设备10作为用于基于模型的开发的工具的情况下,可能需要CA-ISS 13至15与仿真设备10外部的另一工具之间的通信。在这种情况下,优选的是,仿真设备10包括作为用于MBD工具的输入的输入接口,其能够从GUI、列表或其他连接工具输入中断事件或所传输/接收的数据的定时、类型等。 [0101] 这里,对基于模型的开发的仿真系统的整体配置进行简要描述。 [0102] 图8是图示了根据第一实施例的基于模型的开发的仿真系统100的示意性配置的框图。 [0103] 仿真系统100包括MILS(回路中的模型的仿真器(Model In Loop Simulator))环境中的建模工具110、CPU模型120和集成开发环境单元130。 [0104] 例如,仿真系统100可以由个人计算机配置。而且,仿真系统100还连接到HILS(回路中的硬件的仿真器(Hardware In Loop Simulator))环境中的外部设备150。 [0105] 建模工具110例如是MATLAB(注册商标),其是由美国的The MathWorks,Inc.开发的数值计算软件,并且包括仿真目标模型111、112和113。仿真目标模型111、112和113中的每个仿真目标模型是用于构建除了下面所描述的CPU模型120之外的系统的模型,并且例如是用于汽车的ECU的模型或车辆的模型。 [0106] 仿真系统100可以组合使用多个建模工具来进行一些建模内容。 [0107] CPU模型120是根据该第一实施例的仿真系统1或2。仿真系统1或2包括仿真设备 10。CPU模型120可以并入建模工具110。 [0108] 例如,集成开发环境单元130包括调试器、GUI和编译器,并且执行CPU的控制和执行调试。 [0109] 例如,外部设备150是硬件部件或测量仪器,并且用于仿真模型与实际硬件部件之间的连接。 [0110] 以这种方式,例如,根据该第一实施例的仿真设备10被用于基于模型的开发仿真系统100,并且可以提高基于模型的开发仿真的速度。 [0111] 如上文所描述的,根据该第一实施例的仿真设备10包括:第一指令集仿真器30,其生成第一跟踪信息;分析单元11,其通过使用第一跟踪信息检测仿真目标模型中的处理单元,这些处理单元没有相互依赖性并且能够并行处理;划分单元12,其从仿真目标模型生成多个处理单元,并从第一追踪信息生成用于处理单元的输入信息;多个周期精确的第二指令集仿真器13至15,其通过使用输入信息,关于处理单元并行执行仿真,以生成第二跟踪信息,该第二跟踪信息包括比第一跟踪信息更多的定时信息;确认单元16,其将第一跟踪信息和第二跟踪相互比较,以检测匹配部分和失配部分;以及组合单元17,其按时间序列顺序组合与匹配部分相对应的第二跟踪信息。 [0112] 进一步地,优选的是,根据该第一实施例的仿真设备10包括:第一跟踪信息生成单元,其被提供以替代第一指令集仿真器30,并且生成第一跟踪信息;以及记录单元40,其记录第一跟踪信息,第一跟踪信息生成单元是与仿真目标模型相对应的实际机器62或FPGA 63,并且实际机器62或FPGA 63经由扫描链从进度信息记录单元40输入第一跟踪信息。 [0113] 进一步地,在根据该第一实施例的仿真设备10中,优选的是,当检测到失配部分时,确认单元16停止检测匹配部分和失配部分的进程,并且第一指令集仿真器30或第一跟踪信息生成单元基于第二跟踪信息而在失配部分之后生成新的第一跟踪信息。 [0114] 进一步地,在根据该第一实施例的仿真设备10中,优选的是,除了第一跟踪信息之外或替代第一跟踪信息,分析单元11还通过使用仿真目标模型的源代码来检测能够并行处理的处理单元。 [0115] 进一步地,在根据该第一实施例的仿真设备10中,优选的是,当第一跟踪信息和第二跟踪信息相互匹配时,组合单元17输出按时间序列顺序组合的第二跟踪信息,作为仿真结果。 [0116] 根据该第一实施例的仿真系统100包括仿真设备10、创建仿真目标模型的建模工具110、以及执行仿真设备10的控制或执行调试的集成开发环境单元130。 [0117] 另外,根据该第一实施例的仿真方法包括:生成第一跟踪信息的第一仿真步骤S20;通过使用第一跟踪信息,检测仿真目标模型中的处理单元的分析步骤S30,该处理单元没有相互依赖性并且能够并行处理;从仿真目标模型生成多个处理单元,并从第一跟踪信息生成处理单元的输入信息的划分步骤S40;通过使用输入信息,关于处理单元并行执行仿真,以生成第二跟踪信息的第二仿真步骤S50;将第一跟踪信息和第二跟踪信息相互比较,以检测匹配部分和失配部分的确认步骤S60;以及按时间序列顺序组合与匹配部分相对应的第二跟踪信息的组合步骤S70。 [0118] 更近一步地,在根据该第一实施例的仿真方法中,优选的是,当检测到失配部分时,确认步骤S60停止进程,并且通过使用第二跟踪信息,关于失配部分之后的处理单元再次执行第一仿真步骤S20、分析步骤S30、划分步骤S40、第二仿真步骤S50、确认步骤S60和组合步骤S70。 [0119] 第二实施例 [0120] 虽然根据第一实施例的仿真设备10通过使用功能仿真结果并行执行周期精确仿真以提高仿真速度,但是根据该第二实施例的仿真设备省略了关于功能仿真结果就已足够的处理单元、以及尚未执行功能仿真的处理单元的周期精确仿真,从而进一步提高了仿真速度。 [0121] 图9图示了包括根据该第二实施例的仿真设备70的仿真系统3的示意性配置。 [0122] 除了与仿真系统1相同的输入单元20、Fast-ISS 30和输出单元50之外,仿真系统3还包括仿真设备70、第三指令集仿真器(CA-ISS)80、以及开关SW3和SW4。仿真系统3还可以包括进度信息记录单元。 [0123] 仿真设备70包括与仿真设备10相同的同步分析单元11、划分单元12、CA-ISS 13至 15、验证单元16和组合单元17,并且还包括开关SW1和SW2以用于将划分单元12的输出数据直接输出到输出单元50。 [0124] 在该配置中,同步分析单元11关于仿真目标模型的处理单元,经由划分单元12和验证单元16将第一跟踪信息原样输入到组合单元17,对于该仿真目标模型的处理单元,确定功能仿真结果就已足够,或者作为第一跟踪信息的分析结果而不需要周期精确仿真。关于该处理单元,尚未执行周期精确仿真。因此,验证进程不是必需的,并且可以在组合单元 17中将第一跟踪信息和第二跟踪信息相互组合以获得仿真结果。 [0125] 进一步地,同步分析单元11切换开关SW1和SW2,以使得能够关于被确定尚未执行周期精确仿真的处理单元来省略周期精确仿真、验证进程和组合进程,尚未执行周期精确仿真的处理单元是因为处理单元是不必要的功能(作为信息的分析结果,信息例如为未使用的资源和指示第一跟踪信息中是否存在依赖性的信息)。 [0126] 为了使同步分析单元11确定可以省略这些进程,第一跟踪信息可以附加地包括关于未使用的资源的信息,例如,未使用的分支预测或指令高速缓存。 [0127] 如上文所描述的,在根据该第二实施例的仿真设备70中,优选的是,分析单元11还检测不需要由第二指令集仿真器13至15进行仿真的处理单元,并且组合单元17按时间序列顺序将该处理单元的第一跟踪信息与第二跟踪信息相互组合。 [0128] 进一步地,在根据该第二实施例的仿真设备70中,优选的是,分析单元11还检测不需要由第二指令集仿真器13至15进行仿真的处理单元,并且第二指令集仿真器13至15、确认单元16和组合单元17不会关于该处理单元执行进程。 [0129] 在上文中,已经通过实施例对由本申请的发明人做出的本发明进行了具体描述。 然而,应当很自然地理解,本发明不限于上述实施例,并且可以在不脱离其主旨的范围内以各种方式进行改变。