路科验证官网:路科验证 - 专注于数字芯片验证的系统思想和前沿工程领域
EETOP路科首页: EETOP - 路科验证 - IC验证培训
CSDN路科首页:CSDN - 路科验证 - IC验证培训
UVM对于IC验证工作的贡献众所周知,然而,当谈到如何记录和检查电路实际行为和参考模型是否匹配时,UVM只能提供很少帮助。 UVM没有提出一个记分板(scoreboard)的架构,但留下了实现从空uvm_scoreboard基类扩展到定制的scoreboard的方法。
现有用户提出了一些UVM记分板架构,但有局限性。首先,只有一个模型可被检查,即DUT;其次,它很难对许多平行结构的DUT建模,会导致结构不清晰不干净,通用性不好;最后,SystemC/ TLM的虚拟原型是很难用在这样的记分板架构中的。
大家需要一个最先进的可扩展性好的记分板架构,因此,我们创建了满足这一要求的记分板实现方案,并已经在多个UVM验证项目中检验过。
可扩展性和架构分离
我们的记分板能够同时连接并比较任意数量的模型:设计模型(RTL,门级),定时/不定时的参考模型(SystemVerilog,SystemC,Python),以及FPGA原型/ ASIC。
A.任务分工:REF VS SCB
一个典型的REF实现了RTL DUT的事务级模型,可能由SystemVerilog, C/C++,SystemC 或类似的语言来描述。对于每个DUT引脚电平接口, REF(refrence model)都将有一个事务级接口,这些接口将向设备传进或传出信息,也有可能只是单一方向传输。根据全面验证的具体目标环境,参考模型可能建模完整的DUT功能,或仅部分功能。
SCB不会将DUT建模,而是比较DUT的输出和REF的输出是否匹配。当然,它会有特定的算法,该算法可以精确有序得比较。
B.实现结构
下图显示了REF和SCB的互联。M1,Mn代表不同的REF。
所提出的记分牌架构能够同时处理单向和双向端口传输。此外,SCB完全从一个或多个参考模型中分离出来,允许使用和DUT有同样端口结构的参考模型,并有可能使用和SystemVerilog不同的语言来建模。此外,分离促进重用,比如:在SoC级重用模块级SCBs。
实施与可配置
SCB实现了一个通用的记分板结构,可以组合任何数目的队列。反过来,每个队列能够包含来自不同producers的 items。
对于配置SCB,配置类提供了一个专用的API,因此很容易配置队列和producer的数量。对于从DUT和REFs出来的用于填充SCB的traffic,两个不同的API可用于插入item到队列:
SCB不断评估队列中的内容,使用配置的方法来删除匹配的条目,以及每当队列中的元素违反规则(不匹配)时,及时报告。
通用记分牌架构是通过扩展标准的UVM基类来实现,这使得我们使用UVM工厂特化记分板实现。在下图中,记分牌UVM类的UML图所示:
cl_syoscb_cfg:SCB利用UVM配置数据库,使得它可以在 test case层次上重新被配置。这允许改变队列的数目和比较算法。例如,用户可以扩展cl_syoscb_cfg:
如果已经提供的比较方法不能满足新要求,可以通过扩展cl_syoscb_compare_base类来实现。
灵活性
访问模型状态的信息可能被用来比较不同模型的事务,该记分板包含这一信息,使模型易于交互。而且仅通过调整粘合代码,就可以以指定的信道连接到一个新的模型。
此外, SCB也可以在非UVM环境中使用。比如,在VMM中,通过API利用该函数。
调试
记分牌提供调试援助的方式有两种:
成功的故事
我们的UVM记分板架构已经在众多的UVM/ VMM项目中被验证,通常情况下,我们看到这样的收获:相比于从头创建记分板,减少了大约15%的代码量。记分板安装,配置和验证可以在不到一天的时间来完成;此外,经验丰富的工程师可以轻松地用 scoreboard 库来使用或扩展测试平台。
结论
在这项工作中,我们提出了一个业界公认的,可扩展的UVM记分板架构,能够跨越语言,方法论,和抽象物理形态,来连接任何数量的设计模型。数据流之间的任何关系可以使用预先打包的和定制的比较方法来检查,我们可以很容易地与外部checker交互,调试应用程序。在我们的工作基础上,SV/UVM用户生态系统将进一步提高,知道scoreboards在应用层和结构层是如何设计,配置,复用的。
更多原创验证文章与论文解读欢迎关注路科验证公众号或访问路科验证官网