uvm中的Scoreboards介绍

在验证过程中让dut进入特定场景只是验证的重要部分之一,验证环境还应该检查来自dut的输出响应。可以使用两种类型的自动检查机制: 
断言--源于规范或设计实现,确保正确的时序行为。断言通常侧重于信号级。可重用的断言也是可重用验证组件的一部分,当然设计也可以将断言放在dut rtl中。  
数据检查器-确保dut整体的正确性。
scoreboards
self-checking验证环境的一个重要部分是scoreboards。通常情况下,scoreboards在功能层面上验证设计的正确操作。scoreboards承担的责任因实现方式而异。下面展示一个scoreboards的例子,它验证了一个ubus slave interface。
ubus scoreboard 示例 
写到一个地址的数据应该在读取该地址时返回,验证环境的拓扑结构如下图所示:
在这个例子中,创建了一个 top-level environment,其中有一个ubus environment,包含bus monitor,一个master agent,和一个slave agent。
定义scoreboard:
添加必要的tlm export,以便与monitor进行通信。
执行tlm export的方法,定义export被调用时的行为。 
向uvm_scoreboard添加exports :
在上图的例子中,monitors提供了一个tlm uvm_analysis_port(s) 接口, scoreboard需要提供tlm uvm_analysis_imp。
1 class ubus_example_scoreboard extends uvm_scoreboard; 2 uvm_analysis_imp #(ubus_transfer, ubus_example_scoreboard) 3 item_collected_export; 4 ... 5 function new (string name, uvm_component parent); 6 super.new(name, parent);7 endfunction : new8 function void build_phase(uvm_phase phase); 9 item_collected_export = new(item_collected_export, this); 10 endfunction11 ...  
第2行声明了uvm_analysis_export。第一个参数ubus_transfer,定义了通过这个tlm接口通信的uvm_object。第二个参数定义了父类类型。
第9行创建item_collected_export实例。 
由于scoreboard提供了一个 uvm_analysis_imp,scoreboard必须实现该export所要求的所有方法。这意味着需要定义write virtual function的实现:
virtual function void write(ubus_transfer trans); if (!disable_scoreboard) memory_verify(trans);endfunction : write  
write()的实现定义了在这个接口上接收到数据时的行为。如果disable_scoreboard为0,就会以transaction为参数调用memory_verify()函数。 
将scoreboard添加到environment中 
一旦定义好scoreboard,就可以添加到ubus的 top-level environment中。首先,在ubus_example_env类中声明ubus_example_scoreboard。
ubus_example_scoreboard scoreboard0;  
scoreboard可以在build() phase构建:
function ubus_example_env::build_phase(uvm_phase phase);...scoreboard0 = ubus_example_scoreboard::create(scoreboard0,this);...endfunction  
在ubus environment中连接slaves[0] monitor到scoreboard的export上。
function ubus_example_env::connect_phase(uvm_phase phase);...ubus0.slaves[0].monitor.item_collected_port.connect(scoreboard0.item_collected_export);...endfunction  
总结下, 添加scoreboard的过程:
声明scoreboard组件
添加必要的exports。
实现所需的方法来执行特定的功能。
将scoreboard添加到environment中
声明并实例化scoreboard组件。
连接tlm port


高精度压力传感器模块于定位方面的应用介绍
中兴通讯将秉承人才为本的原则培养最尖端的5G创新人才
国产EDA企业面临三大发展困境
“人形机器人第一股”亮相,优必选正式登陆港交所
用替代法测定未知电阻
uvm中的Scoreboards介绍
芯片是风 最近比较“疯”
WOWSTICK手动螺丝刀体验,手工搭档畅享DIY乐趣
2021十大技术关键词与直线电机模组息息相关
小米6plus什么时候上市?小米6plus最新消息:小米6Plus、红米Pro2、MIUI9,小米动作不断啊!
为什么区块链很重要它可以做什么
小米将推出一款Android Go智能手机
Vishay全新 IHSR 高温商用电感器具有出色的感值稳定性
医学AI的行业研究人员演示了一种“因果推理”算法
特斯拉发布Q1无人驾驶安全报告:人工智能比人类驾驶员更可靠!
测评 | iMX8MM开发板,带你体验不同的影音体验
5G NB-IoT技术加持,青桔单车可实现高精度定位
思为无线四款SX1280 LoRa模块属性对比及选择方法
揭开连接出现小叹号不能上网问题的神秘面纱
快商通多产品落地,全方位覆盖公安需求