参加了18年下半年5G芯片验证的开发过程,总结为空闲时间:
现在芯片的规模越来越大,因此验证芯片的工作也变得越来越重要。 传统的用TB方法测试芯片设计功能的方式也越来越吃力,用UVM方法进行芯片验证已成为行业主流的验证方式。
使用UVM的方法可以创建任意多个test case和相应的sequence,在shell脚本的帮助下,可以在线切换测试任意phase场景,增加了验证的自动化和灵活性,也大大提高了功能覆盖性
1 .搭建uvm验证平台。
UVM验证仿真平台的构建包括DUT封装、时钟和重置激励生成、数据DUMP操作、APP应用虚拟接口(Vif )和总线接口(AXI )中的
然后,制作与各APP应用场景对应的sequence和test case,进行由UVM结构指定的test case的模拟执行和测试。
序列主要负责参数的随机化生成、寄存器值的初始化、仿真的执行时间控制; test case主要用于初始化UVM env组件,并通过主phase中相应的sequence手动打开和关闭整个uvm平台的行为(采用裸对象方法)。 这里采用基类构建框架,继承类通过实现具体动作可以提高灵活性。 其中,在sequence body中,调用refer-C DPI的功能来执行c功能。
env组件模块主要负责每个子组件(代理、监视器、scoreborad )的集成,这里使用的是AXI总线,因此这里也是AXI的几个模块)注册器模式
代理组件负责集成sequencer和驱动程序组件,使sequencer模块功能相对简单,并将sequence中的transcation格式的数据发送到驱动程序; 驱动程序组件负责将transcation格式的数据解析为virtual interface,并将其传输到DUT。
moniter组件负责将DUT的输出打包为transaction的形式,并传输到scoreboard组件。
scoreboard组件将DUT数据保存到队列中,将refer-C输出保存到队列中,并完成数据匹配。