一种虚拟时钟同步的高效高覆盖率SoC验证平台的制作方法

文档序号:14444550阅读:209来源:国知局
一种虚拟时钟同步的高效高覆盖率SoC验证平台的制作方法

本发明涉及一种虚拟时钟同步的高效高覆盖率soc验证平台,特别是涉及soc中微处理器的uvm随机指令测试方法,属于集成电路验证技术领域。



背景技术:

uvm(通用验证方法学)随机指令测试在soc(系统级芯片)验证过程中起着重要的作用,随机指令测试能够降低验证测试激励人为因素的干扰,避免人为编写测试激励的倾向性,充分对soc设计的边角情况进行验证。

在uvm随机指令测试中需要使用参考soc模型的结果来和待验证soc的执行结果进行对比来确定设计的正确性,待验证的soc是周期精确的,能够逐个周期地给出待验证设计的确切行为;参考soc模型通常是数学模型,是指令精确的,指令精确的模型运行速度很快,不考虑处理器的精确时序特性,能够给出每条指令的正确结果。

参考soc模型和待验征soc设计之间的指令同步问题是uvm随机指令测试平台中经常面临的问题,通常使用的指令同步方案是参考soc模型和待验征soc设计基于相同的时钟信号进行指令同步。

上述已有方式存在的缺点主要表现在:基于相同时钟信号进行指令同步方案在进行指令精确的参考模型和周期精确的设计模型之间的同步比较复杂,并且对于不同的设计模型需要使用不同的控制逻辑,在待验征soc设计改动或更换之后需要重新设计指令同步方案。



技术实现要素:

本发明的目的在于克服现有技术的上述不足,提供指令精确和周期精确交互仿真中虚拟时钟同步系统,该方法能够更好的解决参考soc模型和待验征soc设计之间的指令同步问题,在待验征soc设计改动或更换后不需要重新对uvm随机指令测试平台进行改动,能够大量节省验证时间,降低工作难度,并提高验证的准确性。

本发明的上述目的是通过如下技术方案予以实现的:

提供一种虚拟时钟同步的soc验证平台,包括双时钟模块、待验证模块、参考模型模块、监视模块、结果对比模块和控制模块;

双时钟模块生成监控时钟和系统时钟;

参考模型模块接收来自控制模块的随机指令信号并执行,每执行一条随机指令就产生相应的指令参考进度信号和相应的指令参考结果信号,将指令参考进度信号传递给监视模块;接收来自控制模块的结果请求信号,将指令参考结果信号传输给结果对比模块;

待验证模块待验证模块,根据系统时钟生成内核时钟,作为时钟信号并传递给控制模块;待验证模块接收来自控制模块的随机指令信号并执行,产生指令执行进度信号、指令执行控制信号和指令执行结果信号,把指令执行进度信号和指令执行控制信号传递给监视模块,指令执行结果信号发送给结果对比模块;

结果对比模块将指令执行结果信号和指令参考结果信号的数值进行逐一对比,如果数值不相等则把结果对比错误信号发送给控制模块;

监视模块:将监控时钟作为时钟信号;接收来自待验证模块的指令执行控制信号,监视模块每周期根据指令执行控制信号判断是否发生仿真异常,当发生仿真异常时,产生仿真异常信号,并传递给控制模块;接收来自待验证模块的指令执行进度信号和来自参考模型模块的指令参考进度信号,每周期进行一次判断,如果指令执行进度信号的数值和指令参考进度信号数值一致,则把进度一致指令发送信号传递给控制模块;

控制模块:将内核时钟信号作为时钟信号,每收到一条进度一致指令后生成一条随机指令信号,并发送给待验证模块和参考模型模块;当接收来自结果对比模块的结果对比错误信号时,终止仿真进程;接收到仿真异常信号后重新开始仿真进程。

优选的,还包括初始化模块,接收来自控制模块的初始化启动信号后,对待验证模块和参考模型模块进行初始化;

监视模块上电后,启动时刻认为待验证模块和参考模块的指令执行进度一致,把进度一致指令发送信号传递给控制模块;

控制模块第一次收到进度一致指令时,向初始化模块发送初始化启动信号,直到初始化程序发送完毕后,停止向初始化模块发送初始化启动信号。

优选的,所述监控时钟根据录入监控时钟周期配置参数生成;所述系统时钟根据系统时钟周期配置参数生成。

优选的,内核时钟信号周期为监控时钟信号的周期的大于1的整数倍。

优选的,所述的参考模型模块使用指令精确的模型;所述待验证模块使用周期精确的模型。

优选的,所述的参考模型模块使用systemc语言模型;所述待验证模块使用硬件语言描述模型。

优选的,所述指令参考进度信号为能够代表指令在参考模型中执行进度的信号;指令执行进度信号为能够代表指令在待验证模块中执行进度的信号。

优选的,参考模型模块使用systemc语言模型时,指令参考进度信号选取当前已执行完毕的指令的程序计数值;

所述待验证模块使用soc中微处理器的流水线模型为取址、译码、执行、存储和写回的五级流水线模型,指令执行进度信号选取正处于流水线译码阶段的指令的程序计数值。

优选的,指令参考结果信号和指令执行结果信号是相同类型的能够代表指令在参考模型和待验证模型中执行完毕后的结果的信号。

优选的,选取参考模型中的所有寄存器的状态值作为指令参考结果信号,选取待验证模块中的所有寄存器的状态值作为指令执行结果信号。

优选的,指令执行控制信号是能够指示指令执行发生错误的信号。

优选的,所述指令执行控制信号选取待验证模块使用模型中的错误指示信号。

本发明与现有技术相比具有如下优点:

(1)本发明提供的虚拟时钟同步的soc验证平台,能够灵活的配置参考soc模型和待验征soc设计之间的指令同步方式,解决指令精确模型和周期精确模型之间的同步问题。

(2)本发明提供的虚拟时钟同步的soc验证平台使指令同步操作更加简单,大量节省验证时间,降低工作难度。

(3)对于不同的待验证模块,无需重新设计同步方法,仅需配置监控时钟周期配置参数和系统时钟周期配置参数,即可实现同步,通用性好。

(4)本发明通过设置虚拟的监控时钟和系统时钟,实现了待验证模块、参考模型模块的指令同步,解决了指令精确模型和周期精确模型交互仿真中的时钟难以同步问题。

附图说明

图1为本发明虚拟时钟同步的soc验证平台组成示意图;

图2为本发明监视模块流程图;

图3为本发明uvm控制模块控制流程图。

具体实施方式

下面结合附图和具体实施例对本发明作进一步详细的描述:

如图1所示为虚拟时钟同步的soc验证平台组成示意图,由图可知该平台包括双时钟模块、待验证模块、参考模型模块、监视模块、初始化模块、结果对比模块、uvm控制模块。

双时钟模块中录入监控时钟周期配置参数和系统时钟周期配置参数,根据监控时钟周期配置参数和系统时钟周期配置参数生成监控时钟和系统时钟;并将监控时钟传输至监视模块,将系统时钟传输至待验证模块;监控时钟周期配置参数和系统时钟周期配置参数的设置需要保证内核时钟信号周期为监控时钟信号的周期的大于1的整数倍。

初始化模块中录入初始化程序,接收来自uvm控制模块的初始化启动信号,初始化程序为一段初始化程序指令,每当接收到uvm控制模块的初始化启动信号之后,就将初始化程序指令传输至待验证模块和参考模型模块,直至所有初始化程序指令发送完毕;

参考模型模块中录入参考模型,接收来自初始化模块的初始化程序指令,执行初始化程序指令进行初始化;接收来自uvm控制模块的随机指令信号,执行随机指令信号,每执行一条随机指令产生相应的指令参考进度信号和相应的指令参考结果信号,将指令参考进度信号传递给监视模块;接收来自uvm控制模块的结果请求信号,将指令参考结果信号传输给结果对比模块;

待验证模块为待验证的soc设计模型,由硬件语言描述实现对待验证soc的模拟,待验证模块接收时钟产生模块传递进来的系统时钟信号,把系统时钟信号作为整个待验证模块的时钟,并生成内核时钟传递给uvm控制模块,内核时钟周期为监控时钟信号的周期的大于1的整数倍;待验证模块接收初始化模块传递进来的初始化程序指令进行初始化;待验证模块接收来自uvm控制模块的随机指令信号并执行,待验证模块执行随机指令信号产生指令执行进度信号、指令执行控制信号和指令执行结果信号,待验证模块把指令执行进度信号、指令执行控制信号传递给监视模块;待验证模块把soc内部的指令执行结果信号发送给结果对比模块;指令执行控制信号是能够指示指令执行发生错误的信号,例如选取soc模型中的错误指示信号作为指令执行控制信号。

结果对比模块中接收来自待验证模块的指令执行结果信号,接收来自参考模型模块的指令参考结果信号,将指令执行结果信号和指令参考结果信号的数值进行逐一对比,如果数值相等则对比结果一致,不做处理,如果数值不相等则对比结果不一致,表明待验证模块出错,把结果对比错误信号发送给uvm控制模块;

如图2所示为监视模块流程图示意图,由图可知监视模块中接收来自双时钟模块的监控时钟,作为监视模块的监控时钟;接收来自待验证模块的指令执行控制信号,监视模块在监控时钟信号的每一个周期进行一次判断,根据指令执行控制信号判断是否发生仿真异常,当发生仿真异常时,产生仿真异常信号,并把仿真异常信号传递给uvm控制模块;接收来自待验证模块的指令执行进度信号,接收来自参考模型模块的指令参考进度信号,监视模块在监控时钟信号的每一个周期进行一次判断,如果指令执行进度信号的数值和指令参考进度信号数值一致,则认为待验证模块和参考模块的指令执行进度一致,把进度一致指令发送信号传递给uvm控制模块,如果指令执行进度信号的数值和指令参考进度信号数值不一致,表明尚未同步,不做处理;监视模块上电后,启动时刻认为待验证模块和参考模块的指令执行进度一致,把进度一致指令发送信号传递给uvm控制模块。

如图3所示为uvm控制模块控制流程图示意图,由图可知uvm控制模块中接收来自待验证模块的内核时钟信号,uvm控制模块在仿真进程开始时在内核时钟信号每一个周期内都要检测进度一致指令发送信号,第一次收到进度一致指令时,向初始化模块发送初始化启动信号,直到初始化程序发送完毕后,停止向初始化模块发送初始化启动信号;之后每收到一条进度一致指令uvm控制模块生成一条随机指令信号,并把随机指令信号发送给待验证模块和参考模型模块,以实现执行同步,待验证模块和参考模型模块分别执行随机指令,分别输出执行结果,以验证待验证模块功能是否正确;接收来自结果对比模块的结果对比错误信号,uvm控制模块接收到结果对比错误信号以后,终止仿真进程,把结果对比错误信号记录下来供验证人员调试;uvm控制模块接收到仿真异常信号之后重新开始仿真进程,进行整个平台重启。

系统时钟信号的周期和内核时钟信号周期之间的关系由待验证模块中人工录入需要验证的soc设计代码组成的系统模块决定,监控时钟信号的周期为人为录入的监控时钟周期配置参数决定,监控时钟周期配置参数和系统时钟周期配置参数的设置需要保证内核时钟信号周期为监控时钟信号的周期的大于1的整数倍。

指令参考进度信号为人工录入参考模型中能够代表指令在参考模型中执行进度的信号,对于参考模型是systemc语言模型的场景,指令参考进度信号可以选取参考模型当前已执行完毕的指令的程序计数值;指令执行进度信号为人工录入需要验证的soc设计代码组成的系统模块中能够代表指令在待验证模块中执行进度的信号,对于soc中微处理器的流水线模型为取址、译码、执行、存储、写回的五级流水线模型场景中,待验证模块中指令执行进度信号可选取正处于流水线译码阶段的指令的程序计数值。

指令参考结果信号和指令执行结果信号是相同类型的能够代表指令在参考模型和待验证模型中执行完毕后的结果的信号,通常选取参考模型中的所有寄存器的状态值作为指令参考结果信号,选取待验证模块中的所有寄存器的状态值作为指令执行结果信号。

本发明说明书中未作详细描述的内容属本领域技术人员的公知技术。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1