专利名称:一种周期精确转换器及其集成电路验证方法和系统的制作方法
技术领域:
本申请属于集成电路设计和验证技术领域,具体涉及一种周期精确转换器及其集成电路验证方法和系统。
背景技术:
目前由于集成电路设计的复杂度逐渐提升,建模 已经成为了设计流程中不可缺少的步骤之一。在设计的早期,进行系统建模阶段,主要完成性能评估和功能模拟的任务,以验证设计的框架结构是否满足性能要求,功能理解是否正确,此时构建的模型为非周期精确的功能参考模型,其后会逐渐细化完成周期精确的设计。在处理器设计中,指令集定义完成后,每次的处理器芯片的版本升级对指令集的功能影响很小,而对其流水线的划分会有较大的改动,即指令功能不变,结构变化,从而时序发生变化。如果仍然沿用原有的指令级精确的功能模型直接进行仿真验证就会出现一个问题,即只能对比指令运行完毕后的执行结果,对错误的定位和修改都产生了很大的困难。如何重复使用已有的指令级精确的功能模型(即非周期精确的功能参考模型)来适应不同处理器实现结构的功能验证工作,实现很好的错误定位,方便设计人员修改,以缩短验证时间,成为一个需要解决的问题。
发明内容
本申请要解决的主要技术问题是,提供一种周期精确转换器及其集成电路验证方法和系统,实现很好的错误定位以缩短对周期精确的设计实现的验证时间。为解决上述技术问题,本申请提供一种周期精确转换器,包括读入单元,用于读入非周期精确的功能参考模型输出的执行结果以及实际被执行的事务包或者指令;类型判定单元,从所述读入单元接收被非周期精确功能模型执行的事务包或者指令,判定每个事务包或指令的类型,然后输出带标识类型的事务包或者指令;情况区分单元,根据类型判定单元输出的带标识类型的事务包或者指令,结合周期精确的设计实现中的控制信号或者指示信号来判断区分当前工作时钟周期下验证环境的场景类型,所述场景类型包括特殊情况、中断情况、异常情况和一般情况;周期计算排序单元,根据情况区分单元输出的当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或者指示信号,对非周期精确的功能参考模型的执行结果进行周期标注、填充和排序,得到周期精确的执行结果。进一步地,所述情况区分单元包括一般情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期不需要特殊流水线管理的情况或者明确了流水线管理所要等待的工作时钟周期并在等待时执行结果保持不变的情况;异常情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期出现异常,接受异常指示,进入异常处理的情况;中断情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期被中断信号影响,接受中断指示,进入中断处理的情况;特殊情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期出现运行某些事务或指令时某些寄存器按照流水线管理在不同与其他寄存器的流水线级发生改变的情况,或者由外部信号直接控制寄存器变化的情况。进一步地,所述周期计算排序单元包括第一周期计算排序单元,根据所述类型判定单元输出 的带标识类型的事务包或者指令,假定周期精确的设计实现每个工作时钟周期下验证环境均为一般情况,对所述读入单元输出的所述执行结果以及实际被执行的事务包或者指令的执行结果,进行周期标注、填充和排序;第二周期计算排序单元,以第一周期计算排序单元输出的带有周期标注并排序、填充后的执行结果为基础,根据情况区分单元输出的当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对执行结果进一步进行周期标注、填充和排序。具体地,所述第二周期计算排序单元计算并填充排序来自第一周期计算排序单元的已完成的基本周期标注、填充和排序后的结果之前还判定带有基本周期标注、填充和排序后的结果是否需要重新计算,如果当前周期场景类型为特殊情况、中断情况或异常情况中的一种,则重新计算执行结果,然后再进行周期标注、填充和排序。具体地,所述类型判定单元根据事务包的包类型值、指令的助记符或者指令的二进制操作码判断每个事务包或者指令的类型。本申请还公开了一种采用上述的周期精确转换器对集成电路周期精确设计实现进行验证的方法,包括产生测试用例步骤,测试用例产生模块产生测试用例,并将产生的测试用例加载到所述周期精确的设计实现和非周期精确的功能参考模型中,所述测试用例包括事务包、指令以及场景控制信息;产生非周期精确的执行结果的步骤,非周期精确的功能参考模型根据测试用例输出执行结果以及实际被执行的事务包或指令;执行结果周期精确化步骤,周期精确转换器对非周期精确的功能参考模型输出的执行结果进行周期标注、填充和排序,得到周期精确的执行结果;比较和错误定位步骤,将周期精确的设计实现根据测试用例输出的执行结果和周期精确转换器输出的周期精确的执行结果进行比较,输出比较结果报告,所述比较结果报告包括错误产生的工作时钟周期和对应的事务包或者指令,以及报告出现的未设定情况。具体地,所述执行结果周期精确化步骤包括读入非周期精确的功能参考模型输出的执行结果以及实际被执行的事务包或者指令;判定每个事务包或指令的类型,根据判断结果输出带标识类型的事务包或者指令;根据带标识类型的事务包或者指令结合周期精确的设计实现中的控制信号或者指示信号来判断区分当前工作时钟周期下验证环境的场景类型,所述场景类型包括特殊情况、中断情况、异常情况和一般情况;先假定周期精确的设计实现每个工作时钟周期下验证环境均为一般情况,对非周期精确的功能参考模型得到的各个执行结果对应的工作时钟周期进行计算预测,并将预测的工作时钟周期标注于相应的执行结果,对标注了工作时钟周期的执行结果按周期的大小进行排序,当出现周期不连续时,对不连续处空缺的周期进行相应执行结果的预测,将预测的执行结果填充到空缺处,得到了周期连续的执行结果;再根据当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对周 期连续的执行结果进一步进行周期预测、标注、填充和排序。具体地,所述先假定周期精确的设计实现每个工作时钟周期下验证环境均为一般情况,对非周期精确的功能参考模型得到的各个执行结果对应的工作时钟周期进行计算预测包括在上一个执行结果的工作时钟周期的基础上加一个或者已知的等待周期,作为当前执行结果的预测周期,并将其标注于相应的执行结果;所述再根据当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对周期连续的执行结果进一步进行周期预测、标注、填充和排序包括当前工作时钟周期下验证的场景类型为一般情况时,不作进一步处理;当前工作时钟周期的场景类型为中断情况时,在上一个结果的周期基础上插入对应中断处理的等待周期数,作为当前执行结果的预测周期,并将其标注于相应的执行结果;当前工作时钟周期的场景类型为异常情况时,第二周期计算排序单元在上一个结果的周期基础上插入对应异常处理的等待周期数,作为当前执行结果的预测周期,并将其标注于相应的执行结果;当前工作时钟周期的场景类型为特殊情况时,第二周期计算排序单元在上一个结果的周期基础上插入对应特殊情况处理的等待周期(数),作为当前执行结果的预测周期,并将其标注于相应的执行结果。进一步地,在比较和错误定位步骤之后还包括根据比较结果报告调整对周期精确转换器的参数设置,所述参数包括情况信息及其对应的工作时钟周期要求,通过调整参数设置拟补因情况设置不完整而导致的比较结果报告中的未设定情况;统计所述周期精确转换器对被执行的事务包或指令所覆盖到的情况信息,并将统计结果指导测试用例的产生。本申请还公开了一种集成电路周期精确设计实现的验证系统,包括测试用例产生模块,用于产生测试用例,并将产生的测试用例加载到所述周期精确的设计实现和非周期精确的功能参考模型中,所述测试用例包括事务包、指令以及场景控制信息;非周期精确的功能参考模型,用于执行测试用例输出执行结果以及实际被执行的事务包或指令;上述的周期精确转换器,用于对非周期精确的功能参考模型输出的执行结果进行周期标注、填充和排序,得到周期连续的执行结果,从而将非周期精确的执行结果转换成了周期精确的执行结果;比较模块,用于将周期精确的设计实现根据测试用例输出的执行结果和周期精确转换器输出的周期精确的执行结果进行比较,输出比较结果报告,所述比较结果报告包括错误产生的工作时钟周期和对应的事务包或者指令,以及报告出现的未设定情况。与现有技术相比,本申请将非周期精确的功能参考 模型产生的执行结果进行周期标注、填充和排序,得到周期精确的结果,将周期精确转换器的执行结果与周期精确的设计实现输出的执行结果进行对比,这样可以实现很好的错误定位以缩短对周期精确的设计实现的验证时间。
图I为本申请实施例提供的一种集成电路周期精确设计实现的验证系统示意图;图2为本申请实施例提供的一种周期精确转换器意图;图3为本申请实施例提供的一种采用周期精确转换器对集成电路周期精确设计实现进行验证的方法流程图;图4为本申请实施例提供的一种执行结果周期精确化步骤流程图;图5为本申请实施例提供的一种精简指令集计算机(RISC)的验证环境示意图;图6为为本申请实施例提供的一种精简指令集计算机的验证环境中的C模型结果时序化1旲块的不意图;图7为本申请实施例提供的一种精简指令集计算机的验证环境中的类型判定单元的工作流程图;图8是本申请实施例提供的一种针对四级流水精简指令集计算机的情况区分单元的工作流程图;图9为本申请实施例提供的一种针对四级流水精简指令集计算机的第一周期计算排序单元的工作流程图;图10是本申请实施例提供的一种针对四级流水精简指令集计算机的第二周期计算排序单元的工作流程图。
具体实施例方式下面通过具体实施方式
结合附图对本申请作进一步详细说明。本申请通过在验证环境中使用周期精确转换器,将非周期精确的功能参考模型产生的结果标注上周期值并重新排序,对缺少的周期对应的执行结果进行填充,标注、填充和排序后的执行结果与周期精确的设计实现输出的执行结果进行对比,更准确的确定设计错误出现的周期,对应的事务包或指令,以及在何种情况下会出错。请参阅图I所示,图I为本申请实施例提供的一种集成电路周期精确设计实现的验证系统示意图,该验证系统用于验证周期精确的设计实现,周期精确的设计实现每个工作时钟周期下被执行的事务包或者指令均有准确的执行结果产生。对于处理器等流水线设计一般是设计的寄存器传输级的代码实现,为周期精确的设计。该验证系统包括测试用例产生模块11,用于产生测试用例并将产生的测试用例加载到周期精确的设计实现和非周期精确的功能参考模型12中。测试用例包括事务包、指令以及场景控制信息。对于处理器来说,测试用例主要包括指令存储器中的指令安排、中断和异常情况发生的时间和位置。在运行测试用例产生模块11时,测试用例产生模块11的随机性提供了产生未设置的情况的可能性,达到设计和验证互检的效果。场景控制信息用于控制周期精确的设计实现和非周期精确的参考模型两者的对外接口信号,产生由外部引发的中断情况、异常情况、特殊情况。模拟设计在被使用时与外部使用环境的 交互情况。非周期精确的功能参考模型12,用于验证周期精确的设计实现的参考模型,不能准确确定每个工作时钟周期被执行的事务包或指令的执行结果,但可以输出被执行的事务包或指令以及对应的执行结果。周期精确转换器13,用于对非周期精确的功能参考模型12输出的执行结果进行周期标注、填充和排序。周期精确转换器13对非周期精确的功能参考模型12得到的各个执行结果产生的工作时钟周期进行计算预测,并将其标注于相应的执行结果。对标注了周期的执行结果按周期的大小进行排序,而所排序的周期不一定是连续的(即自然数连续),如果不连续需要对空缺的周期进行相应执行结果的预测即填充相应的执行结果,这样就得到了周期连续的执行结果,即将非周期精确的功能参考模型12的执行结果转换成周期精确的执行结果。比较模块14,用于比较周期精确转换器13和周期精确的设计实现两者的输出执行结果,报告错误产生的工作时钟周期和对应的事务包或者指令,以及报告出现的未设定情况。进一步的,本实施例中验证系统还包括参数设置模块15,用于根据比较模块14的输出执行结果,设置周期精确转换器的参数,参数包括情况信息及其对应的周期要求。参数包括情况信息及其对应的工作时钟周期要求,通过调整参数设置拟补因情况设置不完整而导致的比较结果报告中的未设定情况。覆盖率统计模块16,用于统计周期精确转换器对被执行的事务包或指令所覆盖到的情况信息,并将统计执行结果发送给测试用例产生模块,指导测试用例产生模块产生全面的测试用例。测试用例产生模块产生受覆盖率统计模块引导的随机测试用例。测试用例产生模块在产生测试例时自动向覆盖率低的情况偏移,达到较高的情况覆盖率。如果比较模块14报告错误产生的周期和对应的事务包或者指令,则表示周期精确的设计实现出错。如果比较模块14报告出现的未设定情况则表示情况设置不完整,需要在参数设置模块15中重新设置情况。本申请实施例将非周期精确的功能参考模型产生的执行结果标注上周期值,然后排序,对空缺的周期填充相应的执行结果,再与周期精确的设计实现的输出执行结果相比对,准确地确定错误出现的周期,对应的事务包或指令,以及在何种情况下会出错,从而缩短验证时间。通过参数设置模块完成可配置的周期精确转换器的参数设置,特别是对于处理器等流水线严禁的设计,效果更佳。
请参阅图2所示,图2为本申请实施例提供的一种周期精确转换器示意图,该周期精确转换器包括读入单元21,用于读入非周期精确的功能参考模型12执行的事务包或者指令以及执行结果。对于处理器来说就是被处理器实际执行过的指令和执行各条指令后各寄存器中的执行结果,包括通用寄存器、控制寄存器和状态寄存器等。类型判定单元22,从读入单元21接收被非周期精确功能模型执行的事务包或者指令,判定每个事务包或指令的类型,然后输出带标识类型的事务包或者指令。本实施例中类型判定单元22具体根据事务的包类型值、指令的助记符或者指令的二进制操作码判断每个事务包或指令的类型。 情况区分单元23,根据类型判定单元22输出的带标识类型的事务包或者指令,结合周期精确的设计实现中的控制信号或者指示信号来判断区分当前时钟周期下验证环境的情况类型,情况类型包括特殊情况、中断情况、异常情况和一般情况。本申请实施例中情况区分单元23具体包括一般情况判定子单元231,判定周期精确的设计实现当前工作时钟周期不需要特殊流水线管理的情况或者明确了流水线管理所要等待的时钟周期并在等待时执行结果保持不变的情况。异常情况判定子单元232,判定周期精确的设计实现当前工作时钟周期出现异常,接受异常指示,进入异常处理的情况。中断情况判定子单元233,判定周期精确的设计实现当前工作时钟周期被中断信号影响,接受中断指示,进入中断处理的情况。特殊情况判定子单元234,判定周期精确的设计实现当前工作时钟周期出现运行某些事务或指令时某些寄存器按照流水线管理在不同与其他寄存器的流水线级发生改变的情况,或者由外部信号直接控制寄存器变化的情况。需要说明的是,集成电路设计中的流水线管理是将一个指令或者一个事务分拆成几个步骤,每一个步骤有对应的硬件资源,指令或者事务依次通过各个步骤对应的硬件资源来完成运算。在不做管理的流水线中,后一个指令或者事务会紧紧跟随前一个指令或者事务经过各个步骤,即指令或事务之间没有气泡。但由于实际执行的前后指令之间存在相关性,有时在前一条指令没有送入某一个步骤之前,其后的某一条指令不能进入某一个步骤,这时就出现了要对流水线进行管理的需求。流水线管理的任务包括暂停某一级或几级的流水线,清除某一级或几级的计算结果等。周期计算排序单元24,根据情况区分单元23输出的当前工作时钟周期下验证环境的情况类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或者指示信号,对非周期精确的功能参考模型的执行结果进行周期标注、填充和排序。本申请实施例中周期计算排序单元具体包括第一周期计算排序单元241和第二周期计算排序单元242。第一周期计算排序单元241,根据类型判定单元输出的带标识类型的事务包或者指令,假定周期精确的设计实现每个工作时钟周期下验证环境均为一般情况,对读入单元输出的执行结果以及实际被执行的事务包或者指令的执行结果,进行基本的周期标注、填充和排序,即在上一个执行结果的工作时钟周期的基础上加一个或者已知的等待周期,作为当前执行结果的预测周期,并将其标注于相应的执行结果。第二周期计算排序单元241,以第一周期计算排序单元241输出的带有基本周期标注并填充、排序后的执行结果为基础,根据情况区分单元输出的当前工作时钟周期下验证环境的情况类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对执行结果进一步进行周期标注、填充和排序。当前工作时钟周期下验证的情况类型为一般情况时,第二周期计算排序单元242不作进一步处理。当前工作时钟周期的情况类型为中断情况 时,第二周期计算排序单元242在上一个执行结果的周期基础上插入对应中断处理的等待周期,并将其标注于相应的执行结果,然后填充和排序。当前工作时钟周期的情况类型为异常情况时,第二周期计算排序单元242在上一个执行结果的周期基础上插入对应异常处理的等待周期,并将其标注于相应的执行结果,然后填充和排序。当前工作时钟周期的情况类型为特殊情况时,第二周期计算排序单元242在上一个执行结果的周期基础上插入对应特殊情况处理的等待周期,并将其标注于相应的执行结果,然后填充和排序。需要说明的是,本实施例中第二周期计算排序单元242计算并排序填充来自第一周期计算排序单元的已完成基本周期标注并排序填充后的执行结果之前还判定带有基本周期标注并排序填充后的执行结果是否需要重新计算,如果当前工作时钟周期下验证环境的情况类型为特殊情况、中断情况或异常情况中的一种,则重新计算执行结果以得到精确周期标注、填充和排序的执行结果。本实施例中第二周期计算排序单元可以同步输出与周期精确的设计实现对应的执行结果的值。第二周期计算排序单元每对一条执行结果周期标注、填充和排序后即可实时与周期精确的设计实现对应的执行结果的值作比较。请参阅图3所示,图3为采用上述周期精确转换器对集成电路周期精确设计实现进行验证的方法,包括以下步骤S31 :产生测试用例步骤,测试用例产生模块产生测试用例,并将产生的测试用例加载到所述周期精确的设计实现和非周期精确的功能参考模型中,所述测试用例包括事务包、指令以及场景控制信息;S32:产生非周期精确的执行结果的步骤,非周期精确的功能参考模型根据测试用例输出执行结果以及实际被执行的事务包或指令;S33 :执行结果周期精确化步骤,周期精确转换器对非周期精确的功能参考模型输出的执行结果进行周期标注、填充和排序,得到周期精确的执行结果;如图4所示,上述执行结果周期精确化步骤S33具体包括以下步骤S331 :读入非周期精确的功能参考模型执行的事务包或者指令以及非周期精确的执行结果;S332 :判定每个事务包或指令的类型,根据判断结果输出带标识类型的事务包或者指令;S333:根据带标识类型的事务包或者指令结合周期精确的设计实现中的控制信号或者指示信号来判断区分出当前工作时钟周期下验证环境的情况类型,所述情况类型包括特殊情况、中断情况、异常情况和一般情况;S334:根据当前工作时钟周期下的验证环境的情况类型对非周期精确的功能参考模型得到的各个执行结果对应的工作时钟周期进行计算预测,并将预测的工作时钟周期标注于相应的执行结果,对标注了工作时钟周期的执行结果按周期的大小进行排序,当出现周期不连续时,对不连续处空缺的周期进行相应执行结果的预测,将预测的执行结果填充到空缺处,得到了周期连续的执行结果;S335:再根据当前工作时钟周期下验证环境的情况类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对周期连续的 执行结果进一步进行周期预测、标注、填充和排序。本实施例中,上述步骤S334中根据事务包或指令在当前周期的情况类型对非周期精确的功能参考模型得到的各个执行结果产生的工作时钟周期进行计算预测具体为当前工作时钟周期下验证环境的情况类型为一般情况时,在上一个执行结果的工作时钟周期的基础上插入一个或者已知的等待周期,作为当前执行结果的预测周期,并将其标注于相应的执行结果;本实施例中,上述步骤S335对周期连续的执行结果进一步进行周期预测、标注、填充和排序包括当前工作时钟周期下验证环境的情况类型为一般情况时,不作任何处理。当前工作时钟周期下验证环境的情况类型为中断情况时,在上一个结果的周期基础上加上对应中断处理的等待周期,作为当前执行结果的预测周期,并将其标注于相应的执行结果。当前工作时钟周期下验证环境的情况类型为异常情况时,第二周期计算排序单元在上一个结果的周期基础上插入对应异常处理的等待周期,作为当前执行结果的预测周期,并将其标注于相应的执行结果。当前工作时钟周期下验证环境的情况类型为特殊情况时,第二周期计算排序单元在上一个结果的周期基础上插入对应特殊情况处理的等待周期,作为当前执行结果的预测周期,并将其标注于相应的执行结果。S34:比较和错误定位步骤,将周期精确的设计实现根据测试用例输出的执行结果和周期精确转换器输出的周期精确的执行结果进行比较,输出比较结果报告,所述比较结果报告包括错误产生的工作时钟周期和对应的事务包或者指令,以及报告出现的未设定情况。S35:根据比较结果报告调整对周期精确转换器的参数设置,所述参数包括情况信息及其对应的工作时钟周期要求,通过调整参数设置拟补因情况设置不完整而导致的比较结果报告中的未设定情况;S36 :统计所述周期精确转换器对被执行的事务包或指令所覆盖到的情况信息,并将统计结果指导测试用例的产生。下面结合具体的实施例对上述集成电路功能验证系统和周期精确转换器作进一步详细的说明。请参阅图5所示,图5为本申请实施例提供的一种精简指令集计算机(RISC)的验证环境示意图,该验证环境包括测试用例(testcase)产生器51,根据覆盖率统计模块给出的覆盖率信息,产生没有覆盖到的或覆盖率低的情况的测试用例,产生的测试用例是由指令存储器中的指令、中断、异常这三种构成,其中指令输入C模型和输入精简指令集计算机的形式都是一样的机器码。输入C模型的中断和异常是根据C模型的中断和异常编写机制决定的,而输入精简指令集计算机的中断和异常情况是控制精简指令集计算机的外部信号,例如外设产生的中断信号。C模型52,属于非周期精确的功能参考模型,是一个无时序的和精简指令集计算机有相同运算功能的模型,是验证精简指令集计算机的参考模型。C模型接收需要运行的指令和中断异常后的操作,输出每条指令执行后的执行结果即每条指令执行后寄存器的结 果。C模型还会输出实际执行的指令,如运行到分支指令且跳转的话,被跳过的部分就不输出;如运行到循环指令且循环的话,循环就会被展开输出;如运行到中断情况进行中断处理,那么该中断处理指令就会输出。C模型输出的执行结果经过时序化模块后处理后才可以精确实时得作为时序的精简指令集计算机的参考。精简指令集计算机53,属于周期精确的设计实现,是需要被验证的模块,是典型的时序化模块,流水线设计是它的一个特点。要验证这个模块首先对其加上所需的激励,即将测试用例产生器产生的指令写入到精简指令集计算机的指令存储器中,并根据产生的中断和异常场景控制精简指令集计算机的外设等信号来制造场景。精简指令集计算机的运行是时序的,这样它就会实时的输出当前的工作时钟周期及当前的各寄存器的值和异常中断的控制或指示信号的情况。C模型结果时序化模块54,属于周期精确转换器,其根据精简指令集计算机的当前时刻及异常中断指示控制信号的值和C模型给出的实际执行的指令,排序填充来自C模型的各指令执行后的执行结果,即各寄存器的值,得到时序化排列的C模型计算的寄存器的值,只有这样的执行结果才可以实时并自动的与精简指令集计算机的执行结果进行对比。比较单元55,接收来自C模型结果时序化模块的时序化排序后的计算结果和精简指令集计算机各周期寄存器的值,将二者进行实时比较,并输出两者出现不同的值和此时的工作时钟周期。这个信息将会作为文本输出,通过这个输出文本可以很快定位错误。参数设置模块56,根据比较单元输出的执行结果,提取情况并将其参数化,用以调整个验证环境。提取输出文本的情况缺失调整信息,将其参数化后,输出需要设置情况及其对应的周期要求,根据这个要求对时序化模块做出相应的调整,即对C模型结果时序化模块中第一周期计算排序单元、情况区分单元和第二周期计算排序单元中的参数进行设定,设置情况及其对应的周期要求的信息。同时将情况的种类传输给覆盖率统计模块,构造情况覆盖点。覆盖率统计模块57,统计验证的覆盖率信息,即统计周期精确转换器中情况区分单元所覆盖到的情况信息,并将统计执行结果发还给测试用例产生器,指导测试用例产生器产生全面的测试用例。如图6所示,图6为本申请实施例提供的一种精简指令集计算机的验证环境中的C模型结果时序化模块的示意图。本实施例中C模型结果时序化模块包括
读入单元541,读入C模型运行后产生的执行结果,执行结果包括实际执行的指令和C模型输出的各指令执行后寄存器的值,即对于处理器来说就是被处理器实际执行过的指令和执行各条指令后各寄存器中的结果,包括通用寄存器、控制寄存器和状态寄存器等。类型判定单元542,根据读入单元读入的C模型输出的实际执行的指令和已知的指令集,判断出各条指令的类型,该单元将判断的结果即带标识类型的C模型输出的实际执行的指令传给情况区分单元和基本比较周期计算单元。具体判定的类型有发生跳转的分支指令、乘法指令、存取指令、循环指令、普通指令、非指令(即未在指令集中定义的指令,会使精简指令集计算机发送指令错误异常)。如图I所示,图I为本申请实施例提供的一 种精简指令集计算机的验证环境中的类型判定单元的工作流程图。对于具体的实例,判定的执行结果是与设计前定义的事务包集或指令集相关的。本实例的具体执行结果可以通过指令二进制码的操作码来确定。将读入C模型实际执行的指令的二进制码及分支指令是否跳转的标识位写入一个寄存器数组内。然后根据指令集的定义只要对操作码(指令的二进制码是由操作码和操作数组成的)进行判断就能确定指令是哪一类。本实例是仿照ZSP400定义的指令集,确定的类型有发生跳转的分支指令、乘法指令、存取指令、循环指令、普通指令、非指令(即未在指令集中定义的指令,会使精简指令集计算机发送指令错误异常),共6种。寄存器会有6位用来标识是哪一类指令,若是乘法指令那么乘法指令对应的标识位置一,其他位置零,再并上对应的指令,且保证指令的排序不变,这样就组成了一个新的寄存器数组,即带标志类型的C模型输出的实际执行的指令。情况区分单元543,根据带标识类型的C模型输出的实际执行的指令,结合来自精简指令集计算机的异常中断的指示控制信号来判断区分当前工作时钟周期下验证环境的情况类型(一般情况、中断情况、异常情况、特殊指令情况),将分辨出来的情况类型传给第二周期计算排序单元。具体的,一实施例中情况区分单元具体包括一般情况判定子单元5431,用于判定当前精简指令集计算机正常流水不需要特殊的流水线管理的情况,如MOV指令、逻辑运算指令;或明确了流水线管理所要等待的时钟周期,并在等待时执行结果保持不变的情况,如发生跳转的分支指令、乘法指令。这时接收一般指示,进入一般处理的情况。中断情况判定子单元5432,用于判定当前精简指令集计算机被中断信号影响,根据相关的中断指示信号的值判断是哪种中断,精简指令集计算机进入是哪种中断处理程序,这样接受相应的中断指示,进入中断处理的情况。异常情况判定子单元5433,用于判定当前精简指令集计算机出现异常,根据异常的指示控制信号判断是哪种异常情况,精简指令集计算机进入是哪种异常处理程序,这样接受相应的异常指示,进入异常处理的情况。特殊情况判定子单元5434,用于判定当前精简指令集计算机出现特殊的情况,即运行指令时某些寄存器按照流水线管理在不同与其他寄存器的流水线级改变的情况,如运行循环指令(AGN)时指示循环次数的控制寄存器会在取指级(IF级)递减一;或出现不能确定周期的等待情况,如cache缺失情况,在这期间所有的寄存器都处于等待不变的情况,这时接受特殊指示,进入特殊处理的情况。
请参阅图8所示,图8是本申请实施例提供的一种针对四级流水精简指令集计算机的情况区分单元的工作流程图,情况区分单元需要带标识类型的C模型输出的实际执行的指令,和当前精简指令集计算机的异常中断控制标识信号,来判断区分当前工作时钟周期下验证环境处于一般情况、中断情况、异常情况、特殊指令情况中的哪种类型,且判断的分类和判断的过程存在的一定的优先级是由参数设置模块提供的。具体的流程如下(a)判断是否是特殊情况S801 :判断当前工作时钟周期是否出现cache缺失,如果出现则递增cache缺失的周期数,并输出cache缺失情况,结束当前工作时钟周期的情况判断操作,如果不是则进行S802。S802 :判断当前工作时钟周期是否出现xxxl-xxx2_AGN特殊情况,如果当前工作时钟周期精简指令集计算机运行的指令的后第二条是AGN即XXX1-XXX2-AGN,且不发生1_3 冲突,且xxx2不是跳转或乘法指令,则输出XXX1-XXX2-AGN特殊情况,结束当前工作时钟周期的情况判断操作,如果不是则进行S803。S803 :判断当前工作时钟周期是否出现xxx-AGN特殊情况,如果当前工作时钟周期精简指令集计算机运行的指令的后第一条是AGN即xxx-AGN,且不发生1_2冲突,则输出xxxl-xxx2-AGN特殊情况,结束当前工作时钟周期的情况判断操作,如果不是则进行S804。(b)、判断是否是异常情况S804 :根据当前工作时钟周期来自精简指令集计算机的exception_state信号判断是否在当前工作时钟周期可以触发异常,如果是则进行,如果不S806是则进行S805。S805 :根据当前工作时钟周期来自精简指令集计算机的exception_occur信号判断是否在当前工作时钟周期触发异常,如果是则输出异常情况,结束当前工作时钟周期的情况判断操作,如果不是则进行S806。(C)、判断是否是中断情况S806:根据当前工作时钟周期来自精简指令集计算机的标识定时中断的信号判断是否在当前工作时钟周期发生定时器中断,如果是则输出定时器中断情况,结束当前工作时钟周期的情况判断操作,如果不是则进行S807。S807:根据当前工作时钟周期来自精简指令集计算机的标识外部中断的信号判断是否在当前工作时钟周期发生外部中断,如果是则输出外部中断情况,结束当前工作时钟周期的情况判断操作,如果不是则进行S808。( d )、判断是否是一般情况S808:如果以上情况都不满足,那么判定为一般情况,输出一般情况,结束当前工作时钟周期的情况判断操作。第一周期计算排序单元544,按照情况区分单元判断出的一般情况来计算排序C模型输出的各指令执行后寄存器的,即先假定读入的带标识类型的实际执行的指令都处于一般情况,按照一般情况的处理,将读入单元输出的指令的执行结果进行排序填充。在一般情况下,会在复位后等待第一条指令执行结果产生的时钟周期,按照等待周期填充复位后寄存器的值,并从复位起进行递增计数排序这样就得到了所需的标注周期值;对于明确了流水线管理所要等待的时钟周期数,并在等待时执行结果保持不变的情况,要根据等待几个周期填充上几次这个指令之前一个的执行结果,之后接上其后的对应的执行结果,并从填充的位置开始继续递增计数排序,这样就等到了所需的基本标注周期值。这样每一个执行结果对应于一般情况下的精简指令集计算机每一个周期的执行结果,并会对每个执行结果进行统一的标识对应值出现的周期值。请参阅图9所示,图9为本申请实施例提供的一种针对四级流水精简指令集计算机的第一周期计算排序单元的工作流程图。精简指令集计算机四级流水线分为取值级(IF)、译码级(ID)、执行级(EX)、写回级(WB)。对应流水线间四级寄存器。一般情况下通用寄存器会在第四级写回级改变,控制寄存器会在执行级改变,而本例中的状态寄存器是控制寄存器的一种。第一周期计算排序单元的基本流程为S901 :初始化,定义一个比较周期寄存器数组用以 存储暂时计算的比较周期,定义初始比较周期计数初值,初值与复位的位置相关。S902:对带标识类型的C模型实际执行的指令进行循环判断,不仅要判断当前指令的类型还要根据该指令附近的指令判断流水线管理的类型,比如发生哪种冲突。如果当前指令是发生跳转的分支指令,则流水管理单元会控制流水停两个时钟周期,因为跳转是在该分支指令的执行级发生,那么就要用两拍来消除后两条指令在取指级和译码级的作用。这样计数就要加3,即多停了两周期。如果当前指令是循环指令(AGN)且发生1-2冲突(即指令类型为MOVx-AGNx,如指令MOVXC只有在EX级才能把数据写进loop0_creg,而loop0_creg的减一操作在IF级实现,存在1-2写读冲突时就需要在指令MOVXC和ANGO中间插入两个气泡,即信号if_freeZe保持两拍)。这样计数就要加3 (多停了两拍)。如果当前指令是乘法指令,乘法指令的执行级需要2个周期的时间执行,流水线管理单元需要在此乘法指令处于执行级时锁存各流水线级lcycle。这样计数就要加2 (多停了一拍)。如果当前指令是循环指令(AGN)且发生1-3冲突(即指令类型为MOVx-XXX-AGNx,如指令MOVXC只有在EX级才能把数据写进loop_0creg,而loop0_creg的减一操作在IF级实现,存在1-3写读冲突时就需要在指令MOVXC和ANGO中间插入一个气泡,即信号if_freeze保持一拍)。这样计数就要加2 (多停了一拍)。如果不是以上四种情况那么就都假定为一般的正常流水的指令,即一般情况的通用寄存器会在第四级写回级改变,控制寄存器会在执行级改变。这样就不需要停拍,计数加
oS903:将指令判断之后得到的计数值存入比较周期数组,须保证第n组C模型运行执行结果对应第n条指令的计数值。注意控制寄存器和通用寄存器是分开存储的。若所有的执行的指令都判断完成那么就进入d),如果没有就返回b)循环判断。S904:将比较周期数组中的跳跃部分(如某段依次存储周期5、8、9、11的执行结果,那么周期5和周期8之间跳跃了两拍,周期9和周期11之间跳跃了一拍),按前一条执行结果填充保证是按加一递增的(如周期5和周期8对应的C模型运行执行结果之间要填充两个周期5对应的C模型运行执行结果,周期9和周期11对应的C模型运行执行结果之间要填充一个周期9对应的C模型运行执行结果),这样就得到了基本排序的C模型寄存器的值。第二周期计算排序单元545,是以来自第一周期计算排序单元544的已完成基本周期标注并排序的执行结果值为基础,根据当前工作时钟周期下验证环境的情况类型和当前时刻周期精确设计实现提供的控制信号(如cache缺失期间会填充缺失前一周期的值),实时更新精确周期值和重排序填充后的执行结果。这个单元是时序的,与精简指令集计算机同步的,根据当前的情况判定当前所对应的C模型的值是否需要改变,若需要会根据具体的情况作相应的处理。请参阅图10所示,图10是本申请实施例提供的一种针对四级流水精简指令集计算机的第二周期计算排序单元的工作流程图。第二周期计算排序单元是以来自第一周期计算排序单元的已完成基本周期标注并排序的执行结果值为基础,根据当前工作时钟周期下验证环境的情况类型和当前时刻周期精确设计实现提供的控制信号,实时更新精确周期值和重新排序填充后的执行结果。具体的流程如下S1001 :如果当前工作时钟周期下验证环境是cache缺失情况,则根据精简指令集计算机给出的标志信号ex_cache_miss来对cache缺失的周期计数,并以这个周期前一拍的值来填充这个周期的值,记入到时序寄存器数组内,结束当前工作时钟周期的计算。这是由于当运行LD/ST指令类时,在EX级cache会给流水线管理单元发送ex_cache_miss信号, 使流水线暂停,寄存器值将不变。如果不是则进行S1002。S1002 :如果当前工作时钟周期下验证环境是xxxl_xxx2_AGN特殊情况,则把该AGN对应的计数控制寄存器(如AGN2对应的计数控制器为l00p2_Creg)提前两拍,即当前指令xxxl对应的计数控制寄存器的值应与C模型计算AGN指令的执行结果对应,也就是改写基本排序C模型寄存器的值将这个值记入时序寄存器数组内,结束当前工作时钟周期的计算。如果不是则进行S1003。S1003 :如果当前工作时钟周期下验证环境是xxx-AGN特殊情况,则把该AGN对应的计数控制寄存器(如AGN2对应的计数控制器为loop2_creg)提前一拍,即当前指令xxx对应的计数控制寄存器的值应与C模型计算AGN指令的执行结果对应,也就是改写基本排序C模型寄存器的值将这个值记入时序寄存器数组内,结束当前工作时钟周期的计算。如果不是则进行S1004。S1004:如果当前工作时钟周期下验证环境是异常情况,精简指令集计算机会在保存当前的场景,即精简指令集计算机要处理异常,这时会停止处理当前正在执行的指令,并且内部复制pc_creg,而后尽快获得异常向量(即异常服务程序的入口)。异常处理单元与流水线管理单元相交互。这时流水线会停两拍进行处理,相关的rpc_creg和trpc_creg会发生改变需要进行改写对应的基本排序C模型寄存器的值存入时序寄存器数组中;而其他不相关的寄存器则保持基本排序C模型寄存器的值,需要填充后存入时序寄存器数组中,结束当前工作时钟周期的计算。如果不是则进行S1005。S1005:如果当前工作时钟周期下验证环境是定时器中断情况,类似于异常处理,精简指令集计算机会保存当前的场景,即精简指令集计算机要处理定时器中断,这时会停止处理当前正在执行的指令,并且内部复制pC_Creg,而后尽快获得相应的定时器中断向量(即中断服务程序的入口)。这时流水线会停两拍进行处理,相关的rpc_creg和trpc_creg会发生改变,根据定时器中断标志位判断是t0或tl中断,相关的t0_creg或tl_creg会发生改变,需要进行改写对应的基本排序C模型寄存器的值存入时序寄存器数组中;而其他不相关的寄存器则保持基本排序C模型寄存器的值,需要填充后存入时序寄存器数组中,结束当前工作时钟周期的计算。如果不是则进行S1006。S1006:如果当前工作时钟周期下验证环境是外部中断情况,类似于异常处理,精简指令集计算机会在保存当前的场景,即精简指令集计算机要处理外部中断,保存场景的操作与上述步骤S1005相同,根据外部中断标志位判断哪种外部中断,可判断出中断处理程序是否与C模型判断相同。相关的rpc_creg和trpc_creg、中断请求寄存器和中断掩膜寄存器会发生改变,需要进行改写对应的基本排序C模型寄存器的值存入时序寄存器数组中;而其他不相关的寄存器则保持基本排序C |旲型寄存器的值,需要填充后存入时序寄存器数组中,结束当前工作时钟周期的计算。如果不是则进行S1007。S1007:如果当前工作时钟周期下验证环境不是以上全 部情况,就按一般情况处理,即直接将对应的基本排序C模型寄存器的值直接写入时序化寄存器数组,结束当前工作时钟周期的计算。本申请实施例通过在验证环境中使用周期精确转换器,将非周期精确的功能参考模型产生的结果标注上周期值并重新排序,对缺少的周期对应的执行结果进行填充,与周期精确的设计实现进行周期精确的验证,更准确的确定设计错误出现的周期,对应的事务包或指令,以及在何种情况下会出错。对于功能稳定,结构和时序不断优化的设计,可以高效的重用非周期精确的功能参考模型作为验证时的参考模型。对于新的结构和时序设计只需要修改参数设置模块中的参数就可以直接重用或少量修改重用周期精确转换器,做到了周期精确转换器的可配置性和重用性。对周期精确转换器中情况区分单元的情况设定,可以作为覆盖率统计中的覆盖点来重用。带覆盖率引导的随机测试用例产生器,在产生缺失的情况时,可以补充情况的设定,做到设计和验证互检。以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换。
权利要求
1.一种周期精确转换器,其特征在于,包括 读入单元,用于读入非周期精确的功能参考模型输出的执行结果以及实际被执行的事务包或者指令; 类型判定单元,从所述读入单元接收被非周期精确功能模型执行的事务包或者指令,判定每个事务包或指令的类型,然后输出带标识类型的事务包或者指令; 情况区分单元,根据类型判定单元输出的带标识类型的事务包或者指令,结合周期精确的设计实现中的控制信号或者指示信号来判断区分当前工作时钟周期下验证环境的场景类型,所述场景类型包括特殊情况、中断情况、异常情况和一般情况; 周期计算排序单元,根据情况区分单元输出的当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或者指示信号,对非周期精确的功能参考模型的执行结果进行周期标注、填充和排序,得到周期精确的执行结果。
2.如权利要求I所述的周期精确转换器,其特征在于,所述情况区分单元包括 一般情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期不需要特殊流水线管理的情况或者明确了流水线管理所要等待的工作时钟周期并在等待时执行结果保持不变的情况; 异常情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期出现异常,接受异常指示,进入异常处理的情况; 中断情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期被中断信号影响,接受中断指示,进入中断处理的情况; 特殊情况判定子单元,用于判定周期精确的设计实现当前工作时钟周期出现运行某些事务或指令时某些寄存器按照流水线管理在不同与其他寄存器的流水线级发生改变的情况,或者由外部信号直接控制寄存器变化的情况。
3.如权利要求I或2所述的周期精确转换器,其特征在于,所述周期计算排序单元包括 第一周期计算排序单元,根据所述类型判定单元输出的带标识类型的事务包或者指令,假定周期精确的设计实现每个工作时钟周期下验证环境均为一般情况,对所述读入单元输出的所述执行结果以及实际被执行的事务包或者指令的执行结果,进行周期标注、填充和排序; 第二周期计算排序单元,以第一周期计算排序单元输出的带有周期标注并排序、填充后的执行结果为基础,根据情况区分单元输出的当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对执行结果进一步进行周期标注、填充和排序。
4.如权利要求3所述的周期精确转换器,其特征在于,所述第二周期计算排序单元计算并填充排序来自第一周期计算排序单元的已完成的基本周期标注、填充和排序后的结果之前还判定带有基本周期标注、填充和排序后的结果是否需要重新计算,如果当前周期场景类型为特殊情况、中断情况或异常情况中的一种,则重新计算执行结果,然后再进行周期标注、填充和排序。
5.如权利要求I所述的周期精确转换器,其特征在于,所述类型判定单元根据事务包的包类型值、指令的助记符或者指令的二进制操作码判断每个事务包或者指令的类型。
6.一种采用如权利要求I至5任一项所述的周期精确转换器对集成电路周期精确设计实现进行验证的方法,其特征在于,包括 产生测试用例步骤,测试用例产生模块产生测试用例,并将产生的测试用例加载到所述周期精确的设计实现和非周期精确的功能参考模型中,所述测试用例包括事务包、指令以及场景控制信息; 产生非周期精确的执行结果的步骤,非周期精确的功能参考模型根据测试用例输出执行结果以及实际被执行的事务包或指令; 执行结果周期精确化步骤,周期精确转换器对非周期精确的功能参考模型输出的执行结果进行周期标注、填充和排序,得到周期精确的执行结果; 比较和错误定位步骤,将周期精确的设计实现根据测试用例输出的执行结果和周期精确转换器输出的周期精确的执行结果进行比较,输出比较结果报告,所述比较结果报告包括错误产生的工作时钟周期和对应的事务包或者指令,以及报告出现的未设定情况。
7.如权利要求6所述的方法,其特征在于,所述执行结果周期精确化步骤包括 读入非周期精确的功能参考模型输出的执行结果以及实际被执行的事务包或者指令; 判定每个事务包或指令的类型,根据判断结果输出带标识类型的事务包或者指令;根据带标识类型的事务包或者指令结合周期精确的设计实现中的控制信号或者指示信号来判断区分当前工作时钟周期下验证环境的场景类型,所述场景类型包括特殊情况、中断情况、异常情况和一般情况; 先假定周期精确的设计实现每个工作时钟周期下验证环境均为一般情况,对非周期精确的功能参考模型得到的各个执行结果对应的工作时钟周期进行计算预测,并将预测的工作时钟周期标注于相应的执行结果,对标注了工作时钟周期的执行结果按周期的大小进行排序,当出现周期不连续时,对不连续处空缺的周期进行相应执行结果的预测,将预测的执行结果填充到空缺处,得到了周期连续的执行结果; 再根据当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对周期连续的执行结果进一步进行周期预测、标注、填充和排序。
8.如权利要求7所述的方法,其特征在于,所述先假定周期精确的设计实现每个工作时钟周期下验证环境均为一般情况,对非周期精确的功能参考模型得到的各个执行结果对应的工作时钟周期进行计算预测包括 在上一个执行结果的工作时钟周期的基础上加一个或者已知的等待周期,作为当前执行结果的预测周期,并将其标注于相应的执行结果; 所述再根据当前工作时钟周期下验证环境的场景类型以及当前工作时钟周期周期精确的设计实现提供的控制信号或指示信号,对周期连续的执行结果进一步进行周期预测、标注、填充和排序包括 当前工作时钟周期下验证的场景类型为一般情况时,不作进一步处理; 当前工作时钟周期的场景类型为中断情况时,在上一个结果的周期基础上插入对应中断处理的等待周期数,作为当前执行结果的预测周期,并将其标注于相应的执行结果; 当前工作时钟周期的场景类型为异常情况时,第二周期计算排序单元在上一个结果的周期基础上插入对应异常处理的等待周期数,作为当前执行结果的预测周期,并将其标注于相应的执行结果; 当前工作时钟周期的场景类型为特殊情况时,第二周期计算排序单元在上一个结果的周期基础上插入对应特殊情况处理的等待周期(数),作为当前执行结果的预测周期,并将其标注于相应的执行结果。
9.如权利要求6-8中任一项所述的方法,其特征在于,在比较和错误定位步骤之后还包括 根据比较结果报告调整对周期精确转换器的参数设置,所述参数包括情况信息及其对应的工作时钟周期要求,通过调整参数设置拟补因情况设置不完整而导致的比较结果报告中的未设定情况; 统计所述周期精确转换器对被执行的事务包或指令所覆盖到的情况信息,并将统计结果指导测试用例的产生。
10.一种集成电路周期精确设计实现的验证系统,其特征在于,包括 测试用例产生模块,用于产生测试用例,并将产生的测试用例加载到所述周期精确的设计实现和非周期精确的功能参考模型中,所述测试用例包括事务包、指令以及场景控制信息; 非周期精确的功能参考模型,用于执行测试用例输出执行结果以及实际被执行的事务包或指令; 如权利要求I至5任一项所述的周期精确转换器,用于对非周期精确的功能参考模型输出的执行结果进行周期标注、填充和排序,得到周期连续的执行结果,从而将非周期精确的执行结果转换成了周期精确的执行结果; 比较模块,用于将周期精确的设计实现根据测试用例输出的执行结果和周期精确转换器输出的周期精确的执行结果进行比较,输出比较结果报告,所述比较结果报告包括错误产生的工作时钟周期和对应的事务包或者指令,以及报告出现的未设定情况。
全文摘要
本申请公开了一种周期精确转换器及其集成电路验证方法和系统,本申请中周期精确转换器将非周期精确的功能参考模型产生的执行结果进行周期标注、填充和排序,得到周期精确的结果。将周期精确转换器的执行结果与周期精确的设计实现输出的执行结果进行对比,这样可以实现很好的错误定位以缩短对周期精确的设计实现的验证时间。
文档编号G01R31/28GK102788950SQ201210214949
公开日2012年11月21日 申请日期2012年6月27日 优先权日2012年6月27日
发明者周芝丽, 张兴, 李世军, 王新安, 王腾, 苏吉婷, 谢峥, 陈旭 申请人:北京大学深圳研究生院