0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何搭建一个加法器的UVM验证平台

电子工程师 来源:CSDN技术社区 作者:Andy_ICer 2021-04-15 14:10 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

因为最近事情还挺多的,有一段时间没有更新了,然后想想还是再积累一下再写新的文章,结果就一个月过去了。。。。所以避免拖延症继续发作还是写一篇一直想写的文章吧。

最近自己尝试搭建一个简单的验证平台,入门就先从简单开始!

1 RTL设计

a349cdea-9dac-11eb-8b86-12bb97331649.png

RTL就是一个带时序的1bit加法器,然后验证是否功能正确。理论上的正确功能应该是输入数据a和数据b之后的下个周期输出结果sum等于a+b。

2 UVM验证平台建立

将整个UVM验证平台分为4个部分agent、env、test、tb,逐层递进,关于层次大小结构图可以看这篇文章,下图是整个验证平台的hierarchy。

AndyICer,公众号:Andy的ICer之路路由器的System Verilog验证平台

a365804e-9dac-11eb-8b86-12bb97331649.png

2.1 agent

2.1.1 add_seq_item

首先建立一个transaction,即建立一个数据包。

a3c01dc4-9dac-11eb-8b86-12bb97331649.png

2.1.2 add_seq

建立一个sequence,用来发送transaction。发送transaction的方式有两种,一种是用start_item()和finish_item(),另外一种是用`uvm_do()的宏。但是两种方法的原理是一样的。

法一:

a3e61088-9dac-11eb-8b86-12bb97331649.png

法二:

a43d3ee4-9dac-11eb-8b86-12bb97331649.png

2.1.3 add_sequencer

建立一个sequencer用于与其他模块通信

a47c69de-9dac-11eb-8b86-12bb97331649.png

2.1.4 add_driver

driver模块进行给DUT传输数据,reset phase进行DUT复位,main phase进行激励输入。

a4a39c34-9dac-11eb-8b86-12bb97331649.png

2.1.5 add_monitor

monitor模块接收DUT发来的数据,并通过TLM通信发送给scoreboard。

a4cc8b76-9dac-11eb-8b86-12bb97331649.png

2.1.6 add_if

定义一个Interface,里面包含有两个clocking block,定义了driver和monitor接口的输入输出方向。

a51c36e4-9dac-11eb-8b86-12bb97331649.png

2.2 env

2.2.1 add_scoreboard

建立scoreboard,进行硬件结果和软件结果的对比。

a55c977a-9dac-11eb-8b86-12bb97331649.png

2.2.2 add_reference_model

这里的逻辑比较简单,就没有使用到reference model了,但是还是保留有这个模块。

a59e980a-9dac-11eb-8b86-12bb97331649.png

2.2.3 add_env

env就是把agent、scoreboard、reference model都build并connect起来。

a5c67cc6-9dac-11eb-8b86-12bb97331649.png

2.3 test

test是验证环境的顶层,顶层中将env建立好并将configure也建立好,在顶层中进行设置。

a602a980-9dac-11eb-8b86-12bb97331649.png

a65e3516-9dac-11eb-8b86-12bb97331649.png

2.4 Testbench

将硬件DUT和软件验证环境联系起来,形成一个完成的测试平台。

a6e00622-9dac-11eb-8b86-12bb97331649.png

a72d59e0-9dac-11eb-8b86-12bb97331649.png

3 验证结果

可以看出验证功能正确,并且通过对于driver和monitor时序的调整可以控制输出结果的时序,大家也可以尝试搭建一个验证平台,对于UVM会有一个更加直观的感受。

a74f997e-9dac-11eb-8b86-12bb97331649.png

编辑:lyn

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 加法器
    +关注

    关注

    6

    文章

    183

    浏览量

    31232
  • UVM
    UVM
    +关注

    关注

    0

    文章

    183

    浏览量

    19942

原文标题:一个加法器的UVM验证平台设计

文章出处:【微信号:HXSLH1010101010,微信公众号:FPGA技术江湖】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    自写计算IP思路以及源码

    、自制乘法器 为提高运算效率我们组结合了查找表乘法器和并行乘法器的思路设计了自己的乘法器IP,主体思路是将32位的输入数据分解为16
    发表于 10-30 06:15

    E203在基于wallace树+booth编码的乘法器优化后的跑分结果

    优化思路 E203为了实现低功耗的要求,乘法器为基于booth编码和移位加法器结合的思路,优点是只需要加法器,而且该
    发表于 10-27 07:54

    提升蜂鸟E203性能的方法:乘除法器优化

    蜂鸟E203内核内建多周期硬件乘除法器 MDV 模块只进行运算控制,并没有自己的加法器 加法器与其他的ALU子单元复用共享的运算数据通路,硬件实现非常节省面积,是种相当低功耗
    发表于 10-27 07:16

    E203V2长周期乘法器核心booth算法解读

    解决,以下为数据通道中加法器的操作数选择: 此外,在乘法器运算中部分和作为加法器操作数,两
    发表于 10-24 09:33

    蜂鸟E203乘法器的优化——基8的Booth编码+Wallace树

    考虑到蜂鸟原乘法器采用了基4的Booth编码,之后使用迭代的方法对每个周期使用加法器对部分积进行累加,结构如下: 从中考虑到两点优化: ① Booth编码的更改:(使用基8的Booth编码
    发表于 10-24 07:28

    Verilog实现使用Booth编码和Wallace树的定点补码乘法器原理

    莱士树中,对于16位乘法,其每位至少包含6全加器。对于32位乘法,全加器个数则为14。这样子做可以保证对于首位,其有6/14空闲的进位要求,这至少可满足n-2末尾加法操作,剩下的
    发表于 10-23 08:01

    改进wallance树乘法器优化方法

    周期复用加法器的部分积加和算法,我们采用了改进的wallance树结构进行部分积的快速压缩,实现了单周期的乘法计算。 经过时序分析,我们的单周期乘法器时钟频率可以提高至140Hz,对比普通阵列乘法器延时
    发表于 10-23 06:37

    关于E203内核高性能乘法器优化(

    位与n位被乘数的每位相乘,总共相乘n次得到n结果,这n结果排列成阶梯形状,两两相加得到最终结果,迭代乘法器的原理也是如此。如下图迭代乘法器
    发表于 10-23 06:09

    蜂鸟E203内核乘法器的优化

    实现的乘法器改成了单周期乘法器实现。利用booth4编码产生17部分积,经过6级CSA被压缩成两部分积,最后使用RCA加法器得到最后的乘
    发表于 10-22 06:11

    NVMe高速传输之摆脱XDMA设计24: UVM 验证包设计

    UVM 验证包的主要功能是对 DUT 提供激励, 仿真验证对应的功能, 并对测试结果进行自动对比分析与统计。 验证包包含
    的头像 发表于 09-14 11:29 4493次阅读
    NVMe高速传输之摆脱XDMA设计24: <b class='flag-5'>UVM</b> <b class='flag-5'>验证</b>包设计

    NVMe高速传输之摆脱XDMA设计24: UVM 验证包设计

    UVM 验证包设计结构如图 1 所示。 UVM 验证包的主要功能是对 DUT 提供激励, 仿真验证对应的功能, 并对测试结果进行自动对比分析
    发表于 08-29 14:33

    NVMe高速传输之摆脱XDMA设计23:UVM验证平台

    抽象为 PCIeTLP 事务,因此为了方便的在事务层构建复杂的测试用例,项目基于 UVM 搭建验证平台进行功能验证。图1
    发表于 08-26 09:49

    NVMe高速传输之摆脱XDMA设计23:UVM验证平台

    抽象为 PCIeTLP 事务,因此为了方便的在事务层构建复杂的测试用例,项目基于 UVM 搭建验证平台进行功能验证
    的头像 发表于 08-25 18:53 2687次阅读
    NVMe高速传输之摆脱XDMA设计23:<b class='flag-5'>UVM</b><b class='flag-5'>验证</b><b class='flag-5'>平台</b>

    NVMe高速传输之摆脱XDMA设计25:UVM验证平台

    抽象为 PCIeTLP 事务,因此为了方便的在事务层构建复杂的测试用例,项目基于 UVM 搭建验证平台进行功能验证
    的头像 发表于 08-04 16:52 632次阅读
    NVMe高速传输之摆脱XDMA设计25:<b class='flag-5'>UVM</b><b class='flag-5'>验证</b><b class='flag-5'>平台</b>

    NVMe高速传输之摆脱XDMA设计18:UVM验证平台

    抽象为 PCIeTLP 事务,因此为了方便的在事务层构建复杂的测试用例,项目基于 UVM 搭建验证平台进行功能验证。图1
    发表于 07-31 16:39