apb_timer模块scoreboard组件完善过程记录


本文基于22秋apbtimer模块验证基础,以及大佬的思路点拨完成。如有错误及不足,望指正或补充。

前言

apbtimer模块是一个以APB协议通信的timer减计数器,验证环境搭建时,除了激励的产生组件和监测组件等,还创建了scoreboard(scb)计分板,其主要用于模拟DUT的设计行为以及功能检查。

该scb中设置了counter模拟timer计数器,当monitor监测到总线上有寄存器操作,会将相应的transaction广播给scb,这时scb可以通过get_reg_by_offset(tr.addr)(寄存器模型map的方法)得到操作中寄存器的句柄r,进而通过r.get_name()方法来定位某个具体的寄存器,再trigger对应uvm_event事件,最终通过rgm.REG.get()方法拿到DUT侧寄存器配置,同时模拟dut行为对scb中counter进行配置。

在这里插入图片描述
在这里插入图片描述

counter减计数时,也模拟DUT只需判断是否计数到0或者计数到1,进而确定是否加载RELOAD寄存器中配置的值至counter中,或者将中断拉高;如果没有计数到0或1,则继续减计数。

在这里插入图片描述
对比机制则是在每个时钟上升沿比较timer计数器(DUT侧)和counter计数器(scb中)二者的值,若该值在可接受的误差范围内,则判断达到预期标准,反之未达到标准,打印对应的错误信息。

bug情景重现

bug1

使能当前scb,同时运行各个test,发现多个test有如下相似的错误信息:
在这里插入图片描述
在这里插入图片描述
尝试在对比scb和dut部分打断点可以得到:
在这里插入图片描述
同时观察到extin_as_enable未使能时,dut中的timer仍会减计数:
在这里插入图片描述
且extin=0时,scb中计数器仍在减计数:
在这里插入图片描述
同时运行extin_as_clock_test,也能得到未使能时scb中计数器仍在计数的情况。

bug2

而运行timer_boundary_and_recount_test时,发现dut中计数器始终与scb中计数器在时序上差一拍:

在这里插入图片描述
注:打断点时,当运行到scb中对比机制代码部分,可以在local窗口的this句柄下找到counter变量,从而将scb中counter加入波形图中。

debug思路

bug1

针对bug1,预期使能端是针对计数器计数功能的开关,即未使能时scb和dut中的计数器都不应计数,这点dut中计数器满足功能,而scb中计数器不满足要求,由此判断scb中counter的使能条件不够充分,需加入extin部分作为使能条件:

在这里插入图片描述

bug2

针对bug2,由于在时序上scb和dut中的计数器始终差一拍,所以导致在重新加载RELOAD寄存器中的值时,scb和dut中的计数器一个为RELOAD值,一个为0值,当RELOAD值过大时会不满足最小误差的标准,由此可以将dut中计数器延迟一拍发送,同时对比机制中采用对应的last_counter与scb中计数器做差值比较。

在这里插入图片描述

思路总结

检查时序逻辑可以在断点调试下结合波形以及打印消息分析,而某些值不符合预期时可以借助local窗口的软件变量来监测对应的变化动态值,从而排查错误来源。总之,都需抽丝剥茧,层层深入查找问题根源。

dw_apb_timer是一种APB总线定时器模块,常用于系统计时和定时器功能的设计。该模块是用于处理器外围设备的接口,可以与ARM Cortex处理器进行通信。dw_apb_timer通常由以下部分组成: 1. APB接口:该接口用于与处理器进行通信,可以通过总线来读取和写入寄存器。 2. 时钟和计数器:dw_apb_timer包含一个内部时钟和计数器,可以提供精确的时间测量功能。通过读取计数器的值,可以获取经过的时间。 3. 计时模式:dw_apb_timer可以设置为计时模式,可以用于实现系统中的延时和计时任务。通过配置寄存器,可以设置定时器的触发条件和计时时间。 4. 中断功能:dw_apb_timer支持中断功能,可以在特定条件下触发中断,用于通知处理器定时器达到了预设的计时时间。中断信号可以作为处理器中断请求的一部分,用于实现定时任务的同步控制。 5. 预分频器:dw_apb_timer还包含一个预分频器,可以对时钟频率进行设置和调节,以适应不同的应用需求。 6. 寄存器:dw_apb_timer拥有一系列寄存器,用于配置和控制定时器的不同功能。通过读写这些寄存器,可以实现对定时器的各种设置和操作。 总之,dw_apb_timer是一种功能强大的定时器模块,常用于嵌入式系统的计时和定时任务设计。通过与处理器进行通信,提供精确的时间测量和控制功能,可以满足不同系统对计时器的需求。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值