本篇主要介绍一下uvm_scoreboard的作用和创建步骤。
uvm_scoreboard一般是包含了refrence model和checker, 用refrece model的输出和电路的输出做对比, 来判断电路是否工作正常。
一个典型的应用如下图所示。 对于一些信号处理算法相关的电路, 这个reference model可能是C++ model。
创建 uvm_scoreboard
- 和其他的component一样, 第一步仍然是写一个自定义的scoreboard, 并且注册
1 | // my_scbd is user-given name for this class that has been derived from "uvm_scoreboard" |
- 为了接收其他component的transaction, 需要增加一些TLM端口,并且在build phase 进行实例化:
1 | uvm_analysis_imp #(apb_pkt, my_scoreboard) apb_export; |
- 当数据通过analysis port接收以后, 定义一些操作:
1 | virtual function void write (apb_pkt data); |
- check数据。 其实check的过程并不一定实在check phase, 也可以在run_phase
1 | virtual function void check_phase (uvm_phase phase); |
- 把scoreboard的analysis端口和env中的其他component连接起来
1 | class my_env extends uvm_env; |