一种验证芯片硬件行为与软件模拟行为的一致性的方法

文档序号:7135253阅读:217来源:国知局
专利名称:一种验证芯片硬件行为与软件模拟行为的一致性的方法
技术领域
本发明涉及芯片设计过程中的芯片验证技术,特别是涉及一种验证芯片硬件行为与软件模拟行为的一致性的方法。
背景技术
在现有的芯片设计过程中,设计芯片的技术人员通常没有简单、有效的测试方法,来提升芯片设计质量。在设计完成之后,进行一些效率很低的测试,或是用一些复杂的额外设计实现测试,再就只有等待用户使用产品之后反馈回来信息来修改原来设计。这些不能有效保证芯片设计的正确性,更不能有效提升芯片设计质量,从而会影响芯片整体品质。
在目前,为了方便硬件的开发,提出了软件模拟器的概念。软件模拟器是通过软件运行形式来模拟硬件的运行行为,从而可以在开发硬件之前先通过软件模拟来设计硬件所要实现的功能,为硬件设计人员的开发工作提供了辅助的设计和测试手段。
目前主要是在芯片开发时使用软件模拟器来进行硬件行为验证,而在芯片开发完成之后,主要将软件模拟器作为开发工具或产品使用,而没有将软件模拟器用于芯片开发完成后验证硬件运行行为的方法。

发明内容
有鉴于此,本发明的主要目的是提供一种验证芯片硬件行为与软件模拟行为的一致性的方法,用于在实际制造芯片之前确保芯片设计的正确性,从而为提高芯片的整体品质提供一种简单、有效的芯片验证手段。
本发明的上述目的是通过如下的技术方案予以实现的
一种验证芯片硬件行为与软件模拟行为的一致性的方法,至少包括如下步骤a.编写用于进行一致性验证的测试用例,并根据测试用例生成可执行文件;b.芯片和软件模拟器分别载入并运行可执行文件,生成分别包含硬件行为信息和软件模拟行为信息的输出文件;c.通过比对输出文件的硬件行为信息和软件模拟行为信息是否相同判断芯片硬件行为与软件模拟行为是否一致。
在上述方法中,较佳地根据芯片的读写区域限制要求编写测试用例。
在上述方法中,在步骤a编写测试用例的过程中可以进一步包括定制硬件行为输出文件和软件模拟行为输出文件中的内容信息。其中,内容信息较佳地包含每运行一条指令之后的寄存器数值、程序计数器数值和存储单元的内容,以及运行完成一个测试用例之后预先约定的存储区域中的数值;并且较佳地定制内容信息按行保存。
在上述方法中,软件模拟器载入可执行文件可以通过将可执行文件手动装载到软件模拟器来进行的,比对输出文件通过人工观察和记录来进行。
较佳地,本发明进一步包括建立用于将可执行文件装载到软件模拟器以及比对输出文件的自动处理模块,这样将可执行文件装载到软件模拟器和比对输出文件的处理由所述自动处理模块进行。
在这种情况下,本发明进一步包括预先将所有的可执行文件保存在一个文件目录中,软件模拟器载入并运行可执行文件是由自动处理模块将所述文件目录中的可执行文件依次在软件模拟器中装载和运行。
本发明可以进一步包括设置停止运行可执行文件的条件,并且在软件模拟器运行可执行文件的过程中判断是否满足该条件,如果是,停止运行可执行文件,否则继续运行可执行文件。
本发明可以进一步包括将硬件输出文件和软件模拟器输出文件分别保存到预先指定的文件目录下或缺省文件目录,并且预先设置硬件输出文件和软件模拟器输出文件中包含的内容信息及输出格式,此时步骤c中比对输出文件的内容的操作包括c1.分别在预先指定的文件目录下或缺省文件目录下读取对应于同一可执行文件的硬件输出文件和软件模拟器输出文件;c2.对两个文件的内容进行比对,并将对比结果记录到比对结果文件;c3.判断预先指定的文件目录下或缺省文件目录下是否还有未进行比对的硬件输出文件和软件模拟器输出文件,如果是,重新执行步骤c1,读取文件目录下对应于下一个可执行文件的硬件输出文件和软件模拟器输出文件,否则结束本流程。
在上述方法中,步骤c2中对两个文件的内容进行比对是逐行进行的,比对结果是比对结果一致或不一致信息,如果不一致,可以进一步包括两个输出文件的相区别的内容及相应的行号。
在上述方法中,在完成输出文件的比对处理之后,进一步包括输出比对结果的操作。
本发明中提到的芯片可以是微控制器单元(MCU)、数字信号处理(DSP)芯片或者微处理器(MPU)芯片。
从本发明的技术方案可以看出,通过编写测试用例形成可执行文件,然后由硬件和软件模拟器同时运行该可执行文件,分别输出包含硬件行为和软件模拟行为的输出文件,然后比对硬件输出文件和软件模拟器输出文件,如果两者的内容完全一致,则表明芯片硬件行为和软件模拟行为一致,从而表明硬件设计正确,可以批量生产;否则表明芯片硬件行为和软件模拟行为不一致,此时可以进一步确定错误发生在芯片设计还是软件模拟器,如果是前者,可以修改芯片设计。因此,本发明可以在批量生产芯片之前验证硬件设计是否正确,从而能确保芯片设计的正确性,并极大地提高芯片的整体品质。
另外,在测试用例很多的情况下,本发明可以自动装载测试用例,自动对硬件输出文件和软件模拟器输出文件进行比对,并且可以将比对结果输出到文件中提供给用户来查验,这样极大地减轻了用户的工作量,提高了验证效率,从而进一步提高了硬件设计和制造的效率。


图1是本发明的总体流程图。
图2是本发明第一实施例的处理流程图。
图3是本发明第二实施例的处理流程图。
具体实施例方式
下面结合附图和具体实施例对本发明进行详细说明。
本发明提供了一种用于验证芯片的硬件行为与软件模拟行为的一致性的方法。在该方法中,通过编写测试用例,然后分别在硬件和软件模拟器中运行由该测试用例生成的可执行文件,并分别生成输出运行结果的文件,然后对文件中的运行结果信息进行比对,即可判断芯片的硬件行为与软件模拟行为是否一致。
下面以单片机中经常使用的MCU作为示例详细说明本发明。如图1所示,本发明的处理流程包括如下步骤在步骤101,首先编写用于对硬件行为和软件模拟行为的一致性进行检测的测试用例。这里的测试用例也就是能在芯片上运行的程序。编写测试用例可以通过汇编语言、C语言等任何一种计算机程序语言,只要最后能够通过编译和链接产生能够在芯片上运行的可执行机器码文件即可。测试用例可以有多种,例如算术运算、逻辑运算和其它一些运算以及它们之间的任意组合,具体如何编写测试用例根据验证需要而定。为了能够全面地验证MCU的硬件设计,测试用例的编写种类越多越好,这样的测试的覆盖范围会更全更广,测试的效果也会更好。为了更准确地验证芯片的硬件设计,这里的测试用例最好是边缘用例、算术逻辑运算用例、算法用例以及指令的组合用例或随机指令用例。
另外,由于芯片中有些区域只能执行读操作,有些区域只能执行写操作,而有些区域既不能执行读操作又不能执行写操作,这样在编写测试用例程序时必须进行约定限制,对某些区域只能进行读或者只能进行写,或者既不能读也不能写,或者虽然能够进行读写,但要保证先写后读等等。进行这种约定限制的目的为了保证验证的有效性和正确性。例如,如果硬件某一个区域不能对其执行读操作,而在编写测试用例时没有考虑到这一个问题,那么运行根据测试用例生成的可执行文件时将对该区域执行读操作,这时硬件和软件模拟器的执行结果将产生随机行为。比对这样的随机行为是毫无意义的,这会影响正常的验证过程。
在编写测试用例时,还需要定制硬件输出文件和软件模拟器输出文件所包含的内容信息。为了验证硬件行为和软件模拟器的软件行为是否一致,需要定义包含硬件行为的硬件输出文件和包含软件模拟行为的软件模拟器输出文件输出同样的行为内容。并且,为了能够反映芯片运行时所需的行为信息,也需要预先定义这两个输出文件的输出内容。具体地说,要求硬件或软件模拟器在运行一条指令之后,在输出文件中示出此时MCU中各个寄存器的数值、程序计数器数值、存储单元的内容;在运行完成一个测试用例之后,约定的存储区域中的数值。对于可执行文件而言,还需要约定一个停止位置,例如程序运行时程序计数器达到某一个数值时停止运行程序。
为了便于对两个输出文件进行比对,在这一步骤中可以进一步设置输出文件的格式。例如,要求在输出文件中每一行顺次列出执行一条指令之后的MCU中所有寄存器数值、程序计数器数值、存储单元内容,然后在完成整个测试用例之后用一行或多行列出约定区域存储单元内容。通过如此设置,可以方便在稍后说明的本发明第一实施例中的人工观察,更方便于在本发明第二实施例中自动识别它们之间的区别。
在步骤102,顺序通过汇编器、编译器和链接器对所编写的测试用例进行汇编、编译和链接,形成可以下载到硬件在线仿真器的可执行文件,作为本发明中分别在硬件和软件模拟器上运行的导入文件。这里的可执行文件是二进制文件,其文件扩展名为bin或tsk等。但本领域技术人员知道,可执行文件并不局限于此两种二进制文件,只要在装载之后能够被识别的任何文件形式的二进制文件都可以作为可执行文件。
在步骤103,将步骤102得到的根据测试用例生成的可执行文件下载到MCU硬件中运行。也就是将可执行文件下载到由MCU硬件和外围电路组成的在线仿真器中,或者通过硬件描述语言下载可执行文件。
在步骤104,MCU硬件通过运行可执行文件,产生一个输出文件。该输出文件包含了硬件运行行为,其文件扩展名可以是log或者tra。
在步骤105,将步骤102中得到的根据测试用例生成的可执行文件下载到MCU软件模拟器。
在步骤106,软件模拟器运行可执行文件,产生一个输出文件。该输出文件包含了软件模拟器的运行行为,其文件扩展名同样可以是log或者tra,但是为了与步骤104的输出文件相区别,其文件扩展名和步骤104的输出文件使用的文件扩展名不同,或者文件扩展名相同,但分别放在不同路径的文件目录下。例如,包含硬件运行行为的输出文件使用log扩展名,那么包含软件模拟器运行行为的输出文件则采用tra扩展名。
在步骤107,比对步骤104得到的硬件运行行为的硬件输出文件以及步骤106得到的软件模拟器运行行为的软件模拟器输出文件。如果两类输出文件对于所有用例的运行行为,结果完全相同,则证明该MCU的硬件行为与软件模拟行为一致。如果两类输出文件对于用例的运行行为,结果有区别,则证明该MCU的硬件行为与软件模拟行为不一致。此时可以进一步根据区别所在位置来调整MCU硬件设计或者MCU软件模拟器的行为,直到最后得到行为一致的结果为止。
在本发明中,硬件运行可执行文件和软件模拟器运行可执行文件是两个完全独立的过程,因此这两个过程在处理时间上可以灵活安排。例如,它们可以同时进行,或者先由硬件运行可执行文件,然后再由软件模拟器运行。
上述通过一个总体处理流程说明了本发明的基本思路。下面通过两个具体实施例对本发明作进一步的说明。其中在第一实施例中通过手动方式进行测试用例的下载和输出文件的比对,而在第二实施例中则通过由程序自动运行的方式来进行测试用例的下载和输出文件的比对。
图2示出了本发明第一实施例的处理流程。如图2所示,对于图1的步骤105至步骤107按照如下流程进行处理。
在步骤201,用户在得到了可执行文件和包含硬件运行行为的硬件输出文件后,人工将测试用例可执行文件装载到软件模拟器,然后执行软件模拟器,由软件模拟器运行该可执行文件。
在步骤202,在可执行文件运行完毕后,会产生记录有软件模拟器运行行为信息的输出文件。
在步骤203,在特定的比对文件工具或编辑器中,手动打开软件模拟器输出文件和对应于同一个测试用例的硬件输出文件。这里的比对文件工具或编辑器可以是通用的文字编辑工具,例如edit程序或者ultraedit32程序。
在步骤204,人为观察两个输出文件之间的区别,并将所观察到的区别记录下来。
在这种手动方式中,如果有多个测试用例,在步骤201中需要用户多次进行人工装载,在步骤203中需要用户多次手动打开硬件输出文件和软件模拟器输出文件。如果测试用例只有几个的话,用户还可以忍受,而如果有几十甚至上百个测试用例的话,对于用户来说就必须为此付出大量的时间和精力。
另外,在步骤204中,用户需要人工观察两个输出文件之间的区别。同样,如果输出文件很长,或者需要进行多次的人工观察,给用户造成的工作量也将非常大,对用户来说也是难以忍受的。
为了在测试用例很多的情况下提高用户的工作效率并减轻工作负担,本发明在第二实施例中提出了自动进行测试用例的装载和自动进行输出文件的比对的方法。
图3示出了本发明第二实施例的处理流程。如图3所示,在步骤301中,首先将所有的对应于测试用例的可执行文件集中保存在一个文件目录中,同时可以将所有的硬件行为输出文件保存在本文件目录中或另一个文件目录中。
在步骤302,根据本发明建立的自动处理模块扫描保存可执行文件的文件目录,逐个寻找并识别对应于测试用例的可执行文件。
在步骤303,判断该文件目录下是否有对应于测试用例的可执行文件。如果有,执行下一步,否则结束本流程。同样,这里的可执行文件的扩展名可以是bin或者tsk,这里的判断即是根据文件的扩展名来进行的。
在步骤304,按照顺序读取一个可执行文件。
在步骤305,判断是否可以打开和读入该可执行文件。如果是,执行下一步,否则重新执行步骤304。执行步骤305的目的是在可执行文件因为病毒等原因被破坏的情况下可以迅速地放弃该文件并转到下一个可执行文件,以提高系统处理效率。
在步骤306,调用MCU软件模拟器的接口函数,将可执行文件装入到内存,然后关闭该可执行文件。
在步骤307,判断能否为写入而打开和可执行文件对应的软件模拟器输出文件。如果能打开该文件,执行下一步,否则重新执行步骤303。这里可以设定软件模拟器输出文件的扩展名为tra。执行步骤307的目的同样是为了在文件出错的情况下可以迅速转入下一次验证,以提高系统处理效率。
在步骤308,调用MCU软件模拟器接口函数,重新启动并运行软件模拟器,由软件模拟器运行可执行文件。
在步骤309,软件模拟器将运行行为按照前述的约定限制写入软件模拟器输出文件中,同时将该输出文件保存在一个预先设置的文件目录下,并关闭此输出文件。
在步骤310,判断是否完成运行保存在可执行文件的目录下的所有可执行文件,或者是否有软件模拟器运行错误。如果是,执行下一步,如果还有可执行文件没有运行并且软件模拟器运行没有错误,则重新执行步骤303。这里判断软件模拟器是否运行错误是根据软件模拟器是否报告错误或者某个标志变量的值是否改变来确定的。例如,如果芯片中某些区域设定为只读,那么编写用例程序时如果违反了该限制,模拟器运行用例程序到相应地方时就会报告错误,或者改变某个标志变量的值。
在步骤311,判断是否能为写入硬件输出文件和软件模拟器输出文件的比对结果而打开一个比对结果文件。这里的比对结果文件的扩展名可以设置成cmp。如果是,执行下一步,否则结束本流程。
在步骤312,搜索步骤309中保存软件模拟器输出文件的文件目录,依次读取一个软件模拟器输出文件。
在步骤313,判断是否可以打开并读入该软件模拟器输出文件。如果是,执行下一步,否则重新执行步骤312,读取下一个软件模拟器输出文件。
在步骤314,在存储硬件输出文件的目录下读取和步骤313中操作的软件模拟器输出文件对应的硬件输出文件。在此实施例中,可以设置软件模拟器输出文件和硬件输出文件的文件名相同而扩展名不同,例如软件模拟器行为输出文件的扩展名是tra,而硬件输出文件的扩展名是log,那么这里的对应就是两个输出文件具有相同的文件名。或者,也可以设置它们的文件名和文件扩展名都相同,但是将它们分别放在不同的文件目录中,那么这里的对应就是不同文件目录中的具有相同文件名和文件扩展名的两个文件。
在步骤315,判断是否可以打开该硬件输出文件。如果是,执行下一步,否则重新执行步骤312,也就是读取下一个软件模拟器输出文件。
在步骤316至步骤322,由自动处理模块自动比对两个输出文件的内容,并将比对结果写入步骤311中打开的比对结果文件中。具体包括如下处理在步骤316,判断是否相对应的两个输出文件都没有具体内容,也就是判断它们是否都是空文件。如果是,重新执行步骤312,否则执行下一步。
在步骤317,设置一个行为输出内容不同的行记录数变量,用于表示整个比对结果文件中有多少行的内容有区别。在这里将其初始化为零。
在步骤318,按照顺序对两个文件的同一行中的内容进行比对。
在步骤319,判断所比对的该行中两个输出文件的内容是否相同。如果相同,重新执行步骤318,也就是比对下一行。如果不相同,执行下一步。
在步骤320,将内容不同的行的行号,以及两个文件的该行内容分别写入到比对结果文件中。
在步骤321,将内容不同的行记录数变量在原来的基础上加上1。
在步骤322,判断目前所比对的是否是最后一行。如果是,执行下一步,否则重新执行步骤318。
在步骤323,判断是否已经比对了所有的输出文件,如果是,执行下一步,否则重新执行步骤312。
在步骤324,将比对结果文件的内容输出给用户察看。这里的比对结果文件的内容包括比对结果一致或不一致的信息,如果不一致,进一步包括相区别的内容、其所在行号以及总计行号等信息。这里的输出可以是在计算机的显示屏上显示,也可以是直接通过纸介质打印出来供用户察看。
在第二实施例中,输出文件的内容信息和格式通过配置文件的方式由自动处理模块进行设置。
在此实施例中,可执行文件装载到软件模拟器,打开并比对软件模拟器输出文件和硬件输出文件都是由自动处理模块自动进行的,不需要人为干预,从而极大地减轻了用户的工作量,并且极大地提高了验证效率。此实施例中的自动处理模块可以是一个运行在计算机上的应用程序。
可以理解,本发明的芯片并不局限于MCU,还可以是DSP芯片或者MPU芯片。因此,以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种验证芯片硬件行为与软件模拟行为的一致性的方法,至少包括如下步骤a.编写用于进行一致性验证的测试用例,并根据测试用例生成可执行文件;b.芯片和软件模拟器分别载入并运行可执行文件,分别生成硬件行为信息和软件模拟行为信息的输出文件;c.通过比对所述输出文件的硬件行为信息和软件模拟行为信息是否相同判断芯片硬件行为与软件模拟行为是否一致。
2.根据权利要求1所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,所述编写测试用例是根据芯片的读写区域限制要求编写。
3.根据权利要求1所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,在步骤a编写测试用例的过程中进一步包括定制硬件行为输出文件和软件模拟行为输出文件的内容信息。
4.根据权利要求3所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,所述内容信息包含每运行一条指令之后的寄存器数值、程序计数器数值和存储单元的内容,以及运行完成一个测试用例之后预先约定的存储区域中的数值。
5.根据权利要求4所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,本发明进一步包括在定制内容信息的同时,定制每一条指令执行完成之后按行保存信息内容以及一个测试用例运行完成之后也按行保存预先约定的芯片存储区域数值到输出文件之中。
6.根据权利要求1所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,所述软件模拟器载入可执行文件是通过将可执行文件手动装载到软件模拟器来进行的,所述比对输出文件过程是通过人工观察和记录来进行的。
7.根据权利要求1所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,本发明进一步包括建立用于将可执行文件装载到软件模拟器以及比对输出文件的自动处理模块,所述将可执行文件装载到软件模拟器和比对输出文件的处理由所述自动处理模块进行。
8.根据权利要求7所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,本发明进一步包括预先将所有的可执行文件保存在一个文件目录中,所述软件模拟器载入并运行可执行文件是由自动处理模块将所述文件目录中的可执行文件依次在软件模拟器中装载和运行。
9.根据权利要求7所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,本发明进一步包括设置停止运行可执行文件的条件,并且在软件模拟器运行可执行文件的过程中判断是否满足所述条件,如果是,停止运行可执行文件,否则继续运行可执行文件。
10.根据权利要求7所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,本发明进一步包括将硬件输出文件和软件模拟器输出文件分别保存到一个预先指定的文件目录或缺省文件目录下,并且预先设置硬件输出文件和软件模拟器输出文件中包含的内容信息及输出格式,步骤c中比对输出文件的内容的操作包括c1.分别在所述预先指定的文件目录或缺省文件目录下读取对应于同一可执行文件的硬件输出文件和软件模拟器输出文件;c2.对两个文件的内容进行比对,并将比对结果存储到比对结果文件;c3.判断所述预先制定的文件目录或缺省的文件目录下是否还有未进行比较的硬件输出文件和软件模拟器输出文件,如果是,重新执行步骤c1,读取所述文件目录下对应于下一个可执行文件的硬件输出文件和软件模拟器输出文件,否则结束本流程。
11.根据权利要求10所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,步骤c2中对两个文件的内容进行比对是逐行进行的,所述比对结果是比对结果一致或不一致信息,在不一致情况下比对结果进一步包括两个输出文件的相区别的内容及相应的行号。
12.根据权利要求10所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,在完成输出文件的比对处理之后,进一步包括输出比对结果的操作。
13.根据权利要求1所述的验证芯片硬件行为与软件模拟行为的一致性的方法,其特征是,所述芯片是微控制器单元MCU,或者数字信号处理芯片DSP,或者微处理器MPU。
全文摘要
本发明公开了一种验证芯片硬件行为与软件模拟行为的一致性的方法,至少包括编写用于进行一致性验证的测试用例,并根据测试用例生成可执行文件;芯片和软件模拟器分别载入并运行可执行文件,分别生成硬件行为信息和软件模拟行为信息的输出文件;比对输出文件的硬件行为信息和软件模拟行为信息是否相同。通过本发明可以在批量生产芯片之前对芯片设计进行验证,从而能确保芯片设计的正确性,并极大地提高芯片的整体品质。
文档编号H01L27/00GK1622312SQ200310115278
公开日2005年6月1日 申请日期2003年11月27日 优先权日2003年11月27日
发明者张新 申请人:北京北阳电子技术有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1