同向运算放大器项目总结

一.项目框图

二.项目概述

DUT是一个同向运算放大器,有三种不同的工作状态,分别为idle、设置放大倍数以及放大。为了验证DUT的完备性,在DUT设计代码中故意设置了bug。通过三个测试用例生成随机激励去验证DUT的三种工作状态。在放大的功能测试中,reference_model调用了DPI接口完成。

三.文件内容

1.DUT

输入信号

en                           写入状态使能(1为写入有效,0为idle)

set_scaler             设置放大倍数使能(1为设置放大倍数,0为放大)

data_in                  输入数据

clk                          时钟

rst_n                      复位

输出信号

valid                    放大状态输出有效标志

data_out             输出数据

scaler                  当前放大倍数

三种工作状态

1.idle

        en为0,则进入idle状态。

        输出valid、data_out均为0。scaler保持不变。

2.设置放大倍数

        en为1,set_scaler为1,进入设置放大倍数状态。

        输出valid、data_out均为0。scaler=data_in。

3.放大

        en为1,set_scaler为0,进入放大状态。

        输出valid为1,data_out=data_in * scaler。scaler保持不变。

4.bug 

1.设置放大倍数状态,data_in=5时,scaler=55;

2.放大状态,data_in=123时,data_out=12300;

2.object

1.transaction

        声明了随机变量,设定约束(例如idle设定在0~2,通过dist设定占比)

        域的自动化

2.base_sequence

        设置基本方法

        例如取一个非bug的随机数(min,max,bug)

3.config

        将is_active等配置参数放在一起

        在component的build_phase中实例化,然后赋值;

4.sequence_lib 

        集合了三种工作模式对应的seq;

3.component

1.sqr

        new和build,打印创建信息;

        (基本没有多余代码)

2.dri

        声明了虚接口vif;

        根据收到的seq不同,进行对vif不同操作;

        在forever或while(1)中进行get_next_item;

3.mon

        声明了虚接口vif;

        声明了TLM端口ap;

        收集trans并计数(若seq是wr_base_num,i_mon计数;valid为1,o_mon计数)

4.agent

        只有一个成员变量is_active;

        根据cfg传递的is_active的值例化dri\mon\sqr;

        将dri和sqr的端口相连

5.reference_model

        实例化两个端口(在env连接过了);

        import DPI接口;

        做运算并把结果复制后发给scoreboard;

6.scoreboard

        从两个端口获取数据并比较计数

7.env

        实例化i_agt、o_agt、reference_model、scoreboard以及3个fifo端口;

        连接fifo的六个端口;

        比较i_agt和o_agt的数量

8.base_test

        实例化env;

        在report_phase中定义了err_num统计UVM_ERROR的值;

9.test_case

        继承于base_test(所以不需要额外例化env);

        使用uvm_config_db将sqr的default seq设置为配套case的seq;

4.interface 

        设置时钟块;

        覆盖率收集(也可以放到mon)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值