CN1828551A - 一种高速事务级软硬件协同仿真方法 - Google Patents

一种高速事务级软硬件协同仿真方法 Download PDF

Info

Publication number
CN1828551A
CN1828551A CN 200610020701 CN200610020701A CN1828551A CN 1828551 A CN1828551 A CN 1828551A CN 200610020701 CN200610020701 CN 200610020701 CN 200610020701 A CN200610020701 A CN 200610020701A CN 1828551 A CN1828551 A CN 1828551A
Authority
CN
China
Prior art keywords
software
transaction processor
module
message
status
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN 200610020701
Other languages
English (en)
Other versions
CN100373351C (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.)
University of Electronic Science and Technology of China
Original Assignee
University of Electronic Science and Technology of China
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 University of Electronic Science and Technology of China filed Critical University of Electronic Science and Technology of China
Priority to CNB2006100207017A priority Critical patent/CN100373351C/zh
Publication of CN1828551A publication Critical patent/CN1828551A/zh
Application granted granted Critical
Publication of CN100373351C publication Critical patent/CN100373351C/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

一种高速的事务级软硬件协同仿真方法,涉及集成电路芯片的功能仿真领域,它可以应用于将计算机与硬件仿真器联合进行仿真的软硬件协同仿真系统中。该事务级软硬件协同仿真方法在原有的事务级软硬件协同仿真系统结构下,改善了四个方面的处理机制,软件激励模块采用乐观预测方法判断输入事务处理器的接收状态,输入事务处理器提供四种接收状态来反映其缓存空间的使用程度,硬件方还定义了状态报告消息,该消息将所有的输入事务处理器的接收状态信息周期性的报告给软件方。通过改善事务级软硬件协同仿真系统中的激励消息的流控方法,该协同仿真系统减少了软件激励模块处于等待状态的次数,减小了状态反馈消息占用的通道带宽,由此提高了整个事务级软硬件协同仿真系统的仿真速度。

Description

一种高速事务级软硬件协同仿真方法
技术领域
一种高速事务级软硬件协同仿真方法,属于集成电路芯片的功能仿真技术领域,可应用于计算机软硬件协同仿真系统中。
背景技术
随着集成电路技术的飞速发展,集成电路芯片的集成度和复杂性日益增加,特别是SoC芯片的出现更加剧这个情况。SoC芯片可以达到几百门到几千门的复杂度,内部具有CPU,存储器,高速总线等各种复杂组件,同时SoC芯片还需要由复杂的软件支持,如嵌入式操作系统,各种通信协议,多媒体处理等程序。基于上述的复杂性,复杂的大规模集成电路芯片的功能仿真已经成为一个亟待解决的问题。为了提高人们对芯片进行功能仿真的效率,事务级软硬件协同仿真技术作为一种新的解决方案提供了更高速,更灵活的仿真方法。
事务级软硬件协同仿真技术是一种用于复杂的大规模集成电路芯片的功能仿真方法,主要用于验证芯片RTL级模型是否完成了需要的功能,保证该RTL级模型符合设计规范。在该方法中,事务级软硬件协同仿真系统使用计算机和硬件仿真器联合工作共同完成一个被测系统的仿真。
事务级的软硬件协同仿真的基本思想是通过提高软件仿真方的建模层次和减少软硬件双方之间的同步信息量来提高协同仿真的速度,通过在硬件仿真方增加各种标准的和综合的事务处理器模块来加速各种标准接口的测试。为了实现上述目的,事务级的软硬件协同仿真系统需具备下述四个重要特性。
软件仿真模块使用事务级建模,通常可以使用C/C++/SystemC等语言描述,这与用HDL语言描述的RTL级模型有很大的不同,它不再基于时钟或者信号变化。由于具有了更高的抽象级别,软件仿真模块可以有更加快速的建模速度和运行速度。
基于消息的通信,软硬件仿真双方以消息作为传输单元进行双方之间的仿真同步和信息交换。协同仿真系统定义了系统中可能的各种事务,仿真方在约定的事务发生后,将其用约定的消息表示,并传给对方。使用消息代替具体信号值进行通信,可以减少双方之间的数据传输频率和数据传输量。
事务处理器完成消息与信号之间的数据格式的转换。由于硬件仿真模块本身使用信号工作,为了通过消息与软件仿真方通信,硬件仿真方中增加了事务处理器模块进行信息格式的转换工作,它可以将来自软件仿真方的消息转变成多个时钟周期的激励信号,同时也可以将多个时钟周期的响应信号转变成消息。事务处理器实现了软硬件双方的数据格式之间的转换。
控制时钟和非控制时钟,非控制时钟控制整个硬件仿真方系统的工作,是一个实际的系统时钟。控制时钟控制硬件仿真模块的工作,它受到事务处理器模块的控制。当事务处理器进行消息转换时,硬件仿真模块需要的信号还没有产生,非控制时钟被关闭来停止硬件仿真模块的工作。
在事务级的软硬件协同仿真系统中,被测系统中的各个子模块及其测试模块被分为两组,一组命名为软件仿真模块,在计算机中仿真,一组命名为硬件仿真模块,在硬件仿真器中仿真。软件仿真模块和硬件仿真模块分别利用计算机的灵活性和硬件仿真器的高速性共同完成SoC系统的功能仿真。
事务级的软硬件协同仿真系统的基本结构如图1所示。软件仿真方包括多个软件仿真模块和消息通道的软件接口部分,硬件仿真方包括硬件仿真模块、多个事务处理器模块,消息通道的硬件接口部分。这些模块的作用如下:
软件仿真模块通常可以分为软件激励模块和软件响应模块。软件激励模块根据具体仿真/验证要求产生对应的激励消息,并将激励消息写入消息代理端口。软件响应模块分析来自消息代理端口的响应消息,记录被测系统的输出结果和验证其正确性。该模块通常使用C/C++等语言在计算机上实现。
硬件仿真模块通常是待测试的芯片的RTL级模型。设计人员在完成待测试的被测系统的RTL(寄存器转移级)模型后,将其进行综合后下载到硬件仿真器进行验证。
事务处理器分为输入事务处理器和输出事务处理器。输入事务处理器通过消息端口接收来自软件激励模块的激励消息,将其转换成对应的待测试系统的激励信号。一个对应的激励消息可以产生几十甚至上百的时钟周期的激励信号的输入。输出事务处理器监视待测试系统的响应信号,将其转换成对应的响应消息,然后传给软件响应模块。类似的,相关的多个时钟周期的响应信号可以被一个响应消息所表示。
消息通道用于连接软件仿真方和硬件仿真方,通过在通道上传输激励消息和响应消息实现软件仿真模块和硬件仿真模块的同步和信息交换。消息通道分别在软件仿真方和硬件仿真方提供了消息代理端口和消息端口,通过这些端口软件仿真模块和事务处理器模块就可以访问消息通道进行消息的传递。
在该事务级软硬件协同仿真系统中,通常定义了三种消息用于实现软件仿真方与硬件仿真方的信息交换和仿真同步:
1、激励消息。它通过消息通道从软件激励模块发送到对应的输入事务处理器,用于软件仿真方向硬件仿真模块通知一个激励事务。通常激励消息包括了目的输入事务处理器的编号和要产生的激励事务的编码。
2、响应消息。它通过消息通道从输出事务处理器发往软件响应模块,用于硬件仿真方向软件仿真方通知发生了一个响应事务。通常响应消息包括了目的软件仿真模块的编号和发生的响应事务的编码。
3、输入准备好消息。为了防止由于软件激励模块发送激励消息过快或者输入事务处理器的处理速度较慢,造成激励消息在输入事务处理器的溢出,系统使用输入准备好消息进行激励消息的流控。输入准备好消息通过消息通道从输入事务处理器发往软件激励模块,告知软件激励模块现在对应的输入事务处理器已经准备好接收激励消息。通常输入准备好消息包括输入事务处理器的编号和表示输入准备好的编码。输入准备好消息的格式示例如图2所示。8bit的编号可以实现含有256个输入事务处理器的协同仿真系统。
软硬件协同仿真系统中的消息定义约定了软硬件仿真双方的同步操作的内容和格式,方便了软件仿真方的事务级建模。同时通过硬件方的事务处理器高速的实现激励输入和响应分析,并且减少了消息通道上的数据传输量,减小了通道上产生的仿真延迟。
在上述的事务级软硬件协同系统中,在软件仿真模块和硬件仿真模块被恰当的布置在该协同仿真系统后,通过三种消息进行软硬件双方的信息交换和仿真同步,通常整个仿真的步骤如下:
1、软件仿真方进行初始化。软件仿真方先进行初始化,软件激励模块从初始化状态直接进入等待状态,软件响应模块处于等待响应消息状态。软件仿真方在稳定后向硬件仿真方发送复位信号,通知硬件仿真方进行初试化。
2、硬件仿真方在收到复位信号后进行初始化,各个输入事务处理器向对应的软件激励模块发送输入准备好消息,然后准备接收激励消息。
3、软件激励模块在收到输入准备好消息后开始进行自己的仿真工作,在发生约定的事务后,向对应的输入事务处理器发送激励消息。然后处于等待状态,等待输入准备好消息的到来。
4、硬件仿真方的输入事务处理器在收到激励消息后将消息翻译成对应的多个时钟周期的激励信号,实现对被测模块的激励输入。同时,输入事务处理器根据自己的消息缓存空间空满状态,发送输入准备好消息。
5、软件激励模块在收到对应的输入事务处理器的输入准备好消息后,进入激励发送状态。软件激励模块继续之前的仿真任务,同时在发生约定的事务后,向对应的输入事务处理器发送激励消息。然后转移到等待状态。软件激励模块的状态转移图如图3所示,它采用悲观方法预测输入事务处理器的接收状态。
6、硬件仿真方的输出事务处理器在仿真过程中监视被测模块的输出端口,不断的将响应信号的变化用响应消息进行编码,并且发给对应的软件响应模块。
7、软件响应模块在接收响应消息后,进行相应的响应记录和分析,判断被测模块的输出是否正确。
在整个事务级软硬件协同仿真过程中,步骤4、5反复执行,由此推动硬件仿真模块和软件激励模块不断的完成仿真任务,推进被测模块的仿真进度。同时步骤6、7在仿真过程中不断完成被测模块的响应记录和分析。
在仿真过程中,激励消息完成对被测模块的激励输入,响应消息完成对被测模块的输出响应的分析,输入准备好消息实现对激励消息的流控功能,保证激励消息的发送速度不会超过输入事务处理器的接收能力。
上述事务级软硬件协同仿真方法的优点:
1.该方法为用户提供了很方便的激励产生和响应分析方案。由于软件仿真模块在计算机上运行,可以使用软件语言(如C/C++)来描述,具有很灵活的数据处理能力。该协同仿真系统可以产生仿真覆盖率很高的激励形式,并对响应状况做各种计算和以各种形式输出。
2.该方法提供了快速的仿真速度。在该方法中,被测模块通常放在硬件仿真器中运行,使得仿真系统中最复杂的部分得到最快的运行速度。
3.该方法通过使用标准的事务处理器,使得对模块的测试是基于事务概念的宏操作,而不是具体信号变化,提高了用户的验证效率。
4.该方法使用约定格式的消息实现激励形式的表示和响应结果的记录。与直接使用信号值来表示激励信号和响应信号,该方法降低了在通道上的数据传输造成的仿真延迟。
该事务级软硬件协同仿真方法的缺点:
事务级软硬件协同仿真方法使用了由消息通道连接的两个独立仿真平台(软件方和硬件方)进行被测模块的功能仿真。在仿真过程中,在软件方的软件激励模块需要不断的产生激励消息,这些大量激励消息通过消息通道传到输入事务处理器,输入事务处理器将这些激励消息转换成对应的激励信号。为了防止软件激励模块发送激励消息的速度大于输入事务处理器的接收和处理能力,该协同仿真系统定义了一种输入准备好机制。输入准备好机制为每一个有可能发生激励消息溢出情况的输入事务处理器提供了一个状态反馈方法,它将对应输入事务处理器是否准备好接收激励消息的状态发给对应的软件激励模块,该软件激励模块根据该状态信息就可以判断是否可以继续发送激励消息而不会导致输入事务处理器的溢出。
在上述的实现方案中,软件激励模块采用的是悲观预测方法,在初始化时和每次发送激励消息后就认为对应的输入事务处理器没有准备好并进入等待状态。只有在接收到对应编号的输入事务处理器的准备好消息后才会从等待状态返回到激励发送状态,然后继续发送下一个激励消息。
在仿真过程中,输入事务处理器产生的输入准备好消息与软件激励模块产生的激励消息一一对应,假设系统中有n个输入事务处理器,单位时间内每个输入事务处理器收到激励消息为v个,且输入准备好消息的大小如图2所示为9bit,则单位时间内输入准备好消息消耗了(9*n*v)bit的传输数据量。该传输数据量显示输入准备好消息与激励消息使用的带宽相当,会降低整个消息通道的使用效率。
通过该输入准备好机制的实现方案可以保证输入事务处理器只要能接收一个最大的激励消息就绝对不会产生溢出情况,但是该方案会降低协同仿真系统的仿真效率。
软件激励模块每发送一个激励消息就必须等待来自硬件方的输入事务处理器的输入准备好消息。由于软件激励模块采用了这种较悲观的预测方法,认为输入事务处理器很容易进入溢出状态,导致输入事务处理器即使有较大的缓存空间也必须在发出其输入准备好消息后才会有新的激励消息输入。因此软件激励模块不能流畅的发送激励消息给输入事务处理器,抑制了协同仿真速度的提高。
在该方案中,对于每一个激励消息都会有一个对应的输入准备好消息需要在通道上传输。这将大大增加通道上需要传输的数据量,通道对消息数据的传输延迟将进一步抑制协同仿真速度的提高。
发明内容
本发明在基于一种状态报告消息实现激励消息的流控功能的基础上,提供一种高速事务级软硬件协同仿真方法,和现有方法相比,本发明具有更高的仿真速度。
在阐述本发明详细技术方案之前,首先介绍本发明的基本思想:
1.在本发明中,软件激励模块采用乐观预测方法实现输入准备好机制。软件激励模块认为输入事务处理器具有较大的缓存空间,在初始化时和发送激励消息后都认为对应的输入事务处理器依然是处于激励发送状态,只有在收到输入事务处理器反馈来的缓存空间满或者消息溢出情况才会等待。
2.状态报告消息的状态信息不再是简单的反映输入事务处理器是否准备好接收激励消息。而是通过多个状态信息编码表示对应的输入事务处理器的缓存空间的使用情况,由此反映输入事务处理器能够接收新的激励消息的各种不同程度。
3.硬件仿真方不是针对每个输入事务处理器单独进行激励发送状态信息的反馈,而是采用全体状态信息反馈。状态报告消息将所有的输入事务处理器的接收状态按照约定的编号排列打包成一个消息,然后一起给软件方。软件方通过解析后将各个输入事务处理器的接收状态告知对应的软件激励模块,用于指示软件激励模块是否可以发送激励消息。
4.硬件仿真方不是在每次收到激励消息就反馈输入事务处理器的接收状态信息,而是周期性的发送状态报告消息来报告输入事务处理器的接收状态。发送的周期根据输入事务处理器的缓存空间大小,激励消息的发送密度等具体情况来设置。
事务级软硬件协同仿真系统的基本结构如图1所示,为了实现软件激励模块向输入事务处理器发送激励消息的流控功能,提高原来的输入准备好消息机制的处理效率,本发明对事务级软硬件协同仿真的仿真步骤和消息内容进行了改善。
根据上述基本思想,下面说明本发明提供的高速事务级软硬件协同仿真方法的技术方案案:
一种高速事务级软硬件协同仿真方法,其特征在于,包括以下步骤:
步骤1、软件仿真方进行初始化。软件仿真方先进行初始化,软件仿真方在稳定后向硬件仿真方发送复位信号,通知硬件仿真方进行初试化。然后经过一段时间的延迟,保证硬件仿真方已经进入正常工作状态后,软件激励模块直接转移到激励发送状态,发送激励消息。
步骤2、硬件仿真方在收到复位信号后进行初始化,各个输入事务处理器开始准备接收激励消息。
步骤3、软件仿真方进行相应的仿真任务,在发生约定的事务后,软件激励模块向对应的输入事务处理器发送激励消息。然后软件激励模块继续保持在激励发送状态,并继续之后的仿真任务。
步骤4、硬件仿真方的输入事务处理器在收到激励消息后将消息翻译成对应的多个时钟周期的激励信号,实现对被测模块的激励输入。同时,硬件仿真方定期检查所有输入事务处理器的消息缓存空间的使用情况,向软件仿真方发送状态报告消息,状态报告消息格式如图6所示,由顺序编号的各输入事务处理器的状态编码组成。所述各输入事务处理器的状态编码如表1所述。
步骤5、软件激励模块在收到状态报告消息后,根据对应输入事务处理器的状态编码进行状态转移控制。若软件激励模块处于激励发送状态时,收到“10”或者“11”状态编码,则转入到等待状态,否则不变。若处于等待状态时,收到“00”状态编码则转入到激励发送状态。该状态变换如图4所示。
步骤6、硬件仿真方的输出事务处理器在仿真过程中监视被测模块的输出端口,不断的将响应信号的变化用响应消息进行编码,并且将响应消息发给对应的软件响应模块。
步骤7、软件响应模块在接收响应消息后,进行相应的响应记录和分析,判断被测模块的输出是否正确。
在整个仿真过程中,步骤3、4,5不断重复描述了软件仿真方通过激励消息对硬件仿真模块进行激励的过程。步骤6、7不断重复描述了硬件仿真模块的响应通过响应消息被软件仿真方进行记录和分析的过程。其中,周期性的状态报告消息有效的实现了激励消息的流控功能。
本发明实质是在现有的事务级软硬件协同仿真方法的基础上,进行了下述四个方面的改善:
一、软件激励模块的处理流程的改善
在协同仿真的过程中,需要向输入事务处理器发送激励消息的软件激励模块不断的接收来自对应的输入事务处理器的接收状态信息,然后判断是否可以向该对应的输入事务处理器发送激励消息。通常,软件激励模块采取悲观预测的方法来判断输入事务处理器的接收状态,其处理过程的状态转移图如图3。软件激励模块具有初始化、输入准备好和等待三个状态。在系统复位后进入初始化状态,设置软件激励模块的各种初始参数。这时软件激励模块认为对应的输入事务处理器的状态为没有准备好。当其收到输入准备好消息时才进入激励发送状态。然后在激励发送状态时软件激励模块发送激励消息,并在发送后进入到等待状态。等待状态时认为输入事务处理还没有做好接收激励消息的准备。然后在等待状态时收到输入准备好消息软件激励模块返回到激励发送状态,继续发送下一个激励消息。由于在每次发送激励消息后软件激励模块都要进入等待状态等待接收输入准备好消息,所以该方法抑制了软件激励模块的运行速度。
在本发明中,软件激励模块采取乐观方法预测输入事务处理器的接收状态。如图4所示,软件激励模块在系统复位后进入初始化状态设置各种参数,然后直接进入到激励发送状态,这时软件激励模块就可以发送激励消息了。每次发送激励消息后,软件激励模块仍然处于激励发送状态。只有在收到对应输入事务处理器的缓存空间满状态信息时,软件激励模块才进入等待状态。在等待状态软件激励模块不能发送激励消息。在等待状态时软件激励模块收到输入事务处理器的缓存空间空状态信息后返回到激励发送状态继续发送下一个激励消息。本处理流程减少了软件激励模块处于等待状态的时间,能够提高协同仿真的速度。
二、输入事务处理器的接收状态信息的编码
为了对激励消息进行有效的流控,输入事务处理器需要向软件激励模块发送自己的接收状态信息,通常就是其缓存空间的使用信息。在现有的方法中,输入事务处理器采用了与上述的悲观预测匹配的状态报告机制。在每次收到激励消息后,输入事务处理器将检查其缓存空间是否为满。如果缓存为不满,则发送输入准备好消息告知软件激励模块继续发送激励消息,如果缓存空间为满,则等待,延迟输入准备好消息的发送,直到缓存空间为不满。这样的方法产生了较多的输入准备好消息,增加了消息通道上的数据传输量。而且由于输入事务处理器的反馈状态信息只包括了空满信息,不能反映缓存空间的使用程度,即使有较多剩余空间时,软件激励模块依然不能发送多个激励消息来提高运行效率。
在本发明中,输入事务处理器根据其缓存空间的使用情况设置了四种接收状态,并进行了编码。输入事务处理器的基本结构如图5所示。激励消息从输入消息端口进入,然后由fifo(输入事务处理器的缓存)模块存储,激励信号产生模块根据激励消息产生需要的激励信号。根据fifo模块提供的4个信号empty,ae,af,full来区分输入事务处理器的四种接收状态。
信号empty表示fifo模块为空。
信号ae表示fifo模块使用单元数较少。具体实现时通常表示其使用单元数小于参数ae_num,参数ae_num由用户设置。
信号af表示fifo模块使用单元数较少。具体实现时通常表示其使用单元数大于参数af_num,参数af_num由用户设置。
信号full表示fifo模块为满。
四个接收状态的设置如下表1:
                     表1:输入事务处理器的四个接收状态表
  状态   输入事务处理器处于该状态的条件   此状态下fifo的使用情况   状态编码
  较空状态   当信号empty或者ae有效时   0~ae_num   “00”
  中等状态   当四个信号empty、ae、af、full都无效时   ae_num~af_num   “01”
  较满状态   当信号af或者full有效时处于该状态   af_num~fifo_num   “10”
  溢出状态   当full有效且还有新的激励消息企图写入fifo时处于该状态   激励消息发生溢出   “11”
注:fifo_num表示fifo总的单元数。
通过向软件激励模块返回输入事务处理器的上述的状态编码,软件激励模块可以知道输入事务处理器处于“较空状态”、“中等状态”、“较满状态”和“溢出状态”四个状态中的一个,由此知道输入事务处理器的缓存空间的使用程度。在本发明中,根据上述的乐观预测方法,软件激励模块在激励发送状态收到“较空状态”和“中等状态”时继续保持激励发送状态,在收到“较满状态”时进入等待状态,在收到“溢出状态”时根据用户需要可以进行报错处理。软件激励模块在等待状态收到“较满状态”和“中等状态”时继续保持等待状态,在收到“较空状态”后才返回激励发送状态。
通过更多种的状态信息的报告,软件激励模块可以根据输入事务处理器的缓存空间的使用程度来发送适量的激励消息。在“较空状态”软件激励模块可以连续发送多个激励消息,在“中等状态”软件激励模块可以连续发送少量激励消息,在“较满状态”软件激励模块应该停止发送激励消息,“溢出状态”用于系统报错。同时在激励发送状态与等待状态之间的转换使用了两个不同的门限值来进行区分,只有fifo使用大于af_num,激励发送状态才进入等待状态,只有fifo使用小于ae_num,等待状态才返回激励发送状态。由于af_num与ae_num的差别可以防止软件激励模块在激励发送状态与等待状态之间频繁转换。而且用户可以通过配置ae_num和af_num的值来调节系统的效率与稳定。
因此,输入事务处理器的多种接收状态信息配合软件激励模块的乐观预测方法减少了处于等待的时间,实现了激励消息的更快发送速度。
三、输入事务处理器的接收状态信息的全体反馈
在一个事务级软硬件协同仿真系统中,通常有多个输入事务处理器需要对其对应的软件激励模块进行接收状态的信息反馈。通常,每个输入事务处理器独立完成各自的状态信息的反馈,在需要状态信息反馈时,输入事务处理器发送一个输入准备好消息给对应的软件激励模块。单独的输入准备好消息的格式示例如图2。由于每个输入事务处理器独立的进行状态信息报告,在输入准备好消息中需要有输入事务处理器的编号信息,同时每个输入准备好消息都有自己的额外消耗。在本发明中,状态信息报告不在是单独地针对一个输入事务处理器,而是用一个状态报告消息对所有的输入事务处理器的状态信息进行报告。该状态报告消息的格式如图6所示。假设共有n个输入事务处理器需要进行状态信息报告,则状态报告消息分为n个区域,每个区域占用2bit。各个区域按顺序分别对应了各个编号的输入事务处理器器的接收状态。区域内的2bit信息就是上述的输入事务处理器的状态信息编码。
该状态报告消息发给软件方后,软件根据约定编号顺序将各个输入事务处理器的状态信息解析出来,分发给各个对应的软件激励模块。软件激励模块根据其状态信息进行激励消息的流控。
这种状态信息的全体反馈机制通过状态报告消息的约定位置标志各个输入事务处理器的状态信息,减少了原来的用于识别输入事务处理器的编号信息。同时用一个状态报告消息代替n个独立的输入事务处理器的输入准备好消息。因此该方法既将减少了通道上的数据传输量,也节约了频繁发送输入准备好消息的时间消耗。
四、周期发送状态报告消息
为了保证激励消息不造成输入事务处理器的溢出,在过去的方法中,软件激励模块每次发送激励消息后,对应的输入事务处理器就必须检查其缓存空间是否还有剩余空间。如果有剩余空间就发送输入准备好消息,如果没有就等待直到有剩余空间再发送输入准备好消息。因此每一个激励消息都对应了一个输入准备好消息,输入准备消息好消息的平均产生速度与激励消息的平均产生速度相同。在激励消息较多的情况下,输入准备好消息将占用了大量的消息通道带宽,延迟整个协同仿真系统的仿真进度。
在本发明中,事务级软硬件协同仿真系统使用上述的状态报告消息代替输入准备好消息完成激励消息的流控功能。由于状态报告消息不再是对应某一个输入事务处理器模块或者某一个激励消息进行的状态反馈,所以不能也不需要使用激励消息来触发状态报告消息的发送。在本发明中,状态报告消息采用周期性发送方式,硬件方按照固定的周期采集各个输入事务处理器的接收状态信息,然后封装成一个状态报告消息发送给软件仿真方。用户可以根据系统中激励消息发送的频率和输入事务处理器的缓存空间大小来设置发送周期。只要保证输入事务处理器的缓存空间比较大,在一个周期内的激励消息不会立即造成缓存空间的溢出,那么周期性的状态报告消息就可以帮助软件激励模块实现激励消息的流控。通常只要状态报告消息的发送速度是单个输入事务处理器的激励消息的平均发送速度的1/4到1/2,就可以有效地实现对激励消息的流控。
周期性的状态报告消息使得用于激励消息流控的状态反馈消息数量不再是与激励消息的数量呈正比,而是与用户设置的发送周期呈正比,大约是单个输入事务处理器发送的激励消息的四分之一。一旦设定了发送周期,在整个协同仿真过程中该状态报告消息占用的消息通道的带宽是一个较稳定的数值,不会和激励消息的发送速度相关。因此,周期性的状态报告消息机制即有助于节约消息通道的带宽也提高了协同仿真速度的稳定性。
性能估计
在仿真过程中,硬件仿真方周期性的产生的状态报告消息告知软件仿真方各个输入事务处理器的状态信息。假设系统中有n个输入事务处理器,单位时间内每个输入事务处理器平均收到激励消息为v个,且状态报告消息的大小根据图6所示为(2n)bit,设置状态报告消息的发送速度为激励消息发送速度的1/4,于是可以得出单位时间内状态报告消息平均消耗了(2n*(1/4)*v)bit=(1/2*n*v)bit的传输数据量。由此可见,对比原来方法的(9*n*v)bit,本发明中的状态报告消息完成同样的流控功能消耗了更少的消息通道带宽。
本发明的有益效果是:
本发明提供了更高速的事务级软硬件协同仿真的方法和用于激励消息的流控功能的状态报告消息的定义。在该方法中,软件激励模块采用乐观预测方法判断输入事务处理器的接收状态,输入事务处理器提供四种接收状态来反映其缓存空间的使用程度,硬件方还定义了状态报告消息,该消息将所有的输入事务处理器的接收状态信息周期性的报告给软件方。本发明通过用乐观预测代替悲观预测,用四种接收状态代替两种接收状态,用全体状态报告代替单独状态报告,用周期性状态报告代替激励消息触发状态报告等四个主要方面的改善,减少了软件激励模块处于等待状态的次数和时间,即加快了激励消息的发送速度,同时使用状态报告消息减小了状态反馈消息对消息通道的带宽的占用,即缩小了各种消息在通道上传输的延迟时间。总之本发明通过提高激励消息的流控效率,可以大大提高该仿真系统的仿真速度。该发明可以为事务级软硬件协同仿真系统提供以下优点:
1、通过乐观预测方法,便得软件激励模块更多的处于激励发送状态,激励消息可以更加流畅的发送到输入事务处理器。因此同样的时间内更多的激励消息被处理,协同仿真系统的仿真也更快。
2、通过输入事务处理器的多个接收状态的编码,软件激励模块可以更加详细的了解输入事务处理器的缓存空间的使用程度,由此可以更加精确的调节激励消息的发送速度。恰当的激励消息的发送速度可以帮助提高协同仿真系统的仿真速度。
3、通过将所有的输入事务处理器的接收状态都放在一个状态报告消息里发送,协同仿真系统减少了需要发送的状态反馈消息的数量,减小了消息通道的带宽消耗,缩小了协同仿真系统中所有消息的传输延迟,由此提高了协同仿真系统的速度。
4、通过采用周期性的发送状态报告消息,在确定发送周期后,该协同仿真系统中的状态报告消息占用的消息通道带宽成为一个较稳定的数值。该方法可以进一步减小状态反馈消息的数量,提高协同仿真系统的速度,并且还可以提高协同仿真系统的仿真速度的稳定性。
附图说明
图1:事务级的软硬件协同仿真系统的基本结构示意图。
图2:输入准备好消息的格式示意图。
图3:软件激励模块采用悲观方法预测接收状态示意图。
图4:本发明采用乐观方法预测接收状态示意图。
图5:输入事务处理器的基本结构示意图。
图6:状态报告消息的格式示意图。

Claims (1)

1、一种高速事务级软硬件协同仿真方法,其特征在于,包括以下步骤:
步骤1、软件仿真方进行初始化
软件仿真方先进行初始化,软件仿真方在稳定后向硬件仿真方发送复位信号,通知硬件仿真方进行初试化;然后经过一段时间的延迟,保证硬件仿真方已经进入正常工作状态后,软件激励模块直接转移到激励发送状态,发送激励消息;
步骤2、硬件仿真方在收到复位信号后进行初始化,各个输入事务处理器开始准备接收激励消息;
步骤3、软件仿真方进行相应的仿真任务,在发生约定的事务后,软件激励模块向对应的输入事务处理器发送激励消息,然后软件激励模块继续保持在激励发送状态,并继续之后的仿真任务;
步骤4、硬件仿真方的输入事务处理器在收到激励消息后将消息翻译成对应的多个时钟周期的激励信号,实现对被测模块的激励输入;同时,硬件仿真方定期检查所有输入事务处理器的消息缓存空间的使用情况,向软件仿真方发送状态报告消息,状态报告消息格式由顺序编号的各输入事务处理器的状态编码组成;所述各输入事务处理器的状态编码如下表所述;
                          输入事务处理器的四个接收状态表   状态   输入事务处理器处于该状态的条件   此状态下fifo的使用情况   此状态的编码   较空状态   当信号empty或者ae有效时   0~ae_num   “00”   中等状态   当四个信号empty、ae、af、full都无效时   ae_num~af_num   “01”   较满状态   当信号af或者full有效时处于该状态   af_num~fifo_num   “10”   溢出状态   当full有效且还有新的激励消息企图写入fifo时处于该状态   激励消息发生溢出   “11”
注:fifo_num表示fifo总的单元数
步骤5、软件激励模块在收到状态报告消息后,根据对应输入事务处理器的状态编码进行状态转移控制。若软件激励模块处于激励发送状态时,收到“10”或者“11”状态编码,则转入到等待状态,否则不变。若处于等待状态时,收到“00”状态编码则转入到激励发送状态;
步骤6、硬件仿真方的输出事务处理器在仿真过程中监视被测模块的输出端口,不断的将响应信号的变化用响应消息进行编码,并且将响应消息发给对应的软件响应模块;
步骤7、软件响应模块在接收响应消息后,进行相应的响应记录和分析,判断被测模块的输出是否正确;
在整个仿真过程中,步骤3、4,5不断重复,步骤6、7不断重复。
CNB2006100207017A 2006-04-13 2006-04-13 一种高速事务级软硬件协同仿真方法 Expired - Fee Related CN100373351C (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CNB2006100207017A CN100373351C (zh) 2006-04-13 2006-04-13 一种高速事务级软硬件协同仿真方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CNB2006100207017A CN100373351C (zh) 2006-04-13 2006-04-13 一种高速事务级软硬件协同仿真方法

Publications (2)

Publication Number Publication Date
CN1828551A true CN1828551A (zh) 2006-09-06
CN100373351C CN100373351C (zh) 2008-03-05

Family

ID=36946962

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2006100207017A Expired - Fee Related CN100373351C (zh) 2006-04-13 2006-04-13 一种高速事务级软硬件协同仿真方法

Country Status (1)

Country Link
CN (1) CN100373351C (zh)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101365150B (zh) * 2007-08-08 2011-08-24 华为技术有限公司 提高基于随机网络编码的多播传输效率的方法及节点
CN102760176A (zh) * 2011-04-29 2012-10-31 无锡江南计算技术研究所 硬件事务级仿真方法、引擎及系统
CN106326599A (zh) * 2016-09-14 2017-01-11 郑州云海信息技术有限公司 一种多处理器系统仿真的系统状态监测方法和装置
CN109213626A (zh) * 2018-08-20 2019-01-15 上海集成电路研发中心有限公司 一种状态机及其状态机的控制方法
CN109683877A (zh) * 2018-12-11 2019-04-26 中国航空工业集团公司西安航空计算技术研究所 一种基于SystemC的GPU软硬件交互TLM系统

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP1301846A4 (en) * 2000-06-19 2006-03-22 P C Krause And Associates Inc DISTRIBUTED SIMULATION
CN1252593C (zh) * 2001-11-16 2006-04-19 中兴通讯股份有限公司 板级支持包的仿真方法
US6963997B2 (en) * 2004-02-03 2005-11-08 Hewlett-Packard Development Company, L.P. Transaction logging and intelligent error reporting in an expectation-based memory agent checker

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101365150B (zh) * 2007-08-08 2011-08-24 华为技术有限公司 提高基于随机网络编码的多播传输效率的方法及节点
CN102760176A (zh) * 2011-04-29 2012-10-31 无锡江南计算技术研究所 硬件事务级仿真方法、引擎及系统
CN106326599A (zh) * 2016-09-14 2017-01-11 郑州云海信息技术有限公司 一种多处理器系统仿真的系统状态监测方法和装置
CN109213626A (zh) * 2018-08-20 2019-01-15 上海集成电路研发中心有限公司 一种状态机及其状态机的控制方法
CN109683877A (zh) * 2018-12-11 2019-04-26 中国航空工业集团公司西安航空计算技术研究所 一种基于SystemC的GPU软硬件交互TLM系统
CN109683877B (zh) * 2018-12-11 2022-03-15 中国航空工业集团公司西安航空计算技术研究所 一种基于SystemC的GPU软硬件交互TLM系统

Also Published As

Publication number Publication date
CN100373351C (zh) 2008-03-05

Similar Documents

Publication Publication Date Title
US10671562B2 (en) Clock gating circuit
Kobayashi et al. OpenCL-ready high speed FPGA network for reconfigurable high performance computing
Xu et al. A design methodology for application-specific networks-on-chip
CN1828551A (zh) 一种高速事务级软硬件协同仿真方法
Liu et al. An energy-efficient coarse-grained reconfigurable processing unit for multiple-standard video decoding
CN1570907A (zh) 多处理器系统
CN104954795A (zh) 一种基于jpeg2000的图像采集传输系统
CN114253889A (zh) 用于延时敏感应用的近似数据总线倒置技术
CN107704413A (zh) 一种基于vpx架构的加固型并行信息处理平台
CN1205560C (zh) 支持具有点到点半双工互连的计算机系统中多时钟传播的方法与装置
CN101937415A (zh) 嵌入式信号处理平台的处理器内外数据交换系统
KR101575711B1 (ko) 하이브리드 레인 스톨링 또는 비고정 버스 아키텍처를 위한 방법, 장치, 시스템
CN1561492A (zh) 用于与总线连接的总线系统和总线接口
Yang et al. A low-cost and high-performance embedded system architecture and an evaluation methodology
CN100343778C (zh) 数据传送方法和数据传送桥接器
CN2886683Y (zh) 具有多媒体和网络处理功能的SoC芯片
CN100338593C (zh) 在计算机部件之间设置改进接口的装置
Issenin et al. Data reuse driven energy-aware mpsoc co-synthesis of memory and communication architecture for streaming applications
CN202495036U (zh) 总线从单元通用接口
Chen et al. A technique for approximate communication in network-on-chips for image classification
Han et al. Converting Interfaces on Application-specific Network-on-chip
Srinivasan et al. Simultaneous memory and bus partitioning for SoC architectures
CN1278204C (zh) 电源管理状态控制方法
Shafik et al. Soft error-aware voltage scaling technique for power minimization in application-specific multiprocessor system-on-chip
CN1779653A (zh) 片上系统的片上调试器

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
C17 Cessation of patent right
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20080305

Termination date: 20110413