如今的SoC设计中,IP中的寄存器等设计组件的数量和复杂性不断增长,关于CSRs(control and status registers)的问题在当今的SoC设计中相当普遍,无法正确地控制或接收这些组件的状态可能导致严重的问题。工程师们常使用基于仿真的方法来验证CSR功能,但是这种方法并不理想,因为它们不能完全穷尽所有可能。能有一个自动化验证指定寄存器的流程是IP开发人员和验证工程师的迫切需求。
本文介绍了一个寄存器验证流程,以解决寄存器映射的验证要求。这种方法详尽地检查了基于IPXACT描述的SoC寄存器映射。此流程使用内部脚本将寄存器文档转换为IP-XACT格式,然后使用商业化形式验证工具生成断言,以完全验证寄存器的访问。
寄存器验证背景
关于寄存器验证,我们面临的突出问题是花费了太多时间设置和执行仿真,效率太低,同时,我们也不能保证所有的寄存器映射都完整的验证到了。我们渴求的是一个能够在SoC级别进行仿真测试的完整验证环境,并且对于不断更新的SPEC也无需进行太多复杂的设置,就能够验证所有的SoC和IP寄存器。
我们以前的寄存器映射的验证,主要是在C语言环境中针对所有SoC寄存器编写定向测试。但是我们发现基于C的定向测试来验证所需要测所有情况是很困难的,而且我们也无法解决与寄存器重叠或超范围寻址等相关的问题。当然要说明的是,我们没有使用UVM_REG,因为涉及环境设置和加速时间,UVM还没有被我们的团队完全采用。
更有效的寄存器映射验证流程
寄存器验证流程基于以下三个关键组件: