第一个uvm的例子

本文介绍了使用UVM框架进行加法器设计和验证的方法。针对vhdl中加法运算的特殊要求,如类型转换等问题进行了详细说明。通过具体实例展示了如何搭建testbench,包括接口定义、数据生成、DUT实现及scoreboard设计等关键环节。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一个大概的 uvm 例子及相关坑

  • 首先讲讲vhdl的加法运算的坑
    使用vhdl写了一个两个数相加的module,signal定义为std_logic_vector类型,然后直接使用一个process根据valid的脉冲做加法运算。
    自己也注意到了加法、乘法等溢出问题,但是编译总是报左右位宽不匹配。然后才发现vhdl不允许vector类型数据直接相加,需要先做类 型转换。

  • 定义integer类型signal

  • 使用CONV_INTEGER(signal name)转换

  • 两个integer做自加运算后在转为vector 类型交付接口。 这里可以直接写为result <= CONV_STD_LOGIC_VECTOR(A+B,9).。讲integer类型的a+b结果转为9bit的std_logic_vector

  • 然后开始搭第一个简单的testbench

  • 首先定义接口interface,其就是monitor、scoreboard,dut间的交互接口,其中接口定义dut需要的输入输出signal及数据传递task(有时序)

  • 接着写数据生成模块,使用$random 生成数据交付bfm,

  • 写dut模块,简单数据加法运算

  • 使用接口激励dut,并且将dut输出赋值接口中的某个信号

  • 编写scoreboard,根据时序采集dut数据输出,使用接口中信号自己做相同运算。然后比对数据,使用打印信息显示log日志

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值