草庐IT

MCDF实验4:魔龙的狂舞(从verilog到SV的入门lab4)

前言:验证结构与实验3是相同的,但需要验证的对象是完整的mcdf。对比之前新添加了reg寄存器模块(选择数据),formatter模块(数据打包)。种一棵树最好的时间是十年前,其次是现在。不是吗?实验3结构包含moinitor、checker、generator、initiator、test,这已经是一个完整的仿真结构,实验4可以说是实验3结构的复制粘贴。实验4将设计变得更复杂,添加了reg寄存器模块,formatter模块。验证过程完全相同,需要像实验3的验证过程一样对这两个模块也做仿真验证。设计中reg的功能是可以选择从哪个fifo接收数据,并且可以判断fifo余量(之前是margin),

MCDF实验1

目录从Verilog到SV的进场任务task和函数function数组的使用验证结构从Verilog到SV的进场1.修改tb1.v为tb1.sv,编译仿真,查看仿真行为是否同tb1.v的仿真行为一致?这说明了什么呢?没有变化,仿真行为一致,说明编译器对SV的语法和Verilog语法是全部兼容的2.将tb1.sv中的信号变量类型由reg或者wire修改为logic类型,再编译仿真,查看行为是否同修改前的一致呢?这是为什么? 没有变化,仿真行为一致,说明在SV中,reg和wire类型都可以简化为logic类型3.在2)的基础上,将rstn的类型由logic修改为bit类型,再编译仿真,行为是否同步

MCDF_svlab4 代码解读

 lab4组件结构与lab3一样,但验证的DUT更大了,mcdt→mcdf。lab4文件数目增加,为了模拟多个人验证同一个DUT,各个模块构建各自的package,假定模块验证完毕,现在子系统要集成各个模块的package,目前lab4不需要arbiter的package,最顶层环境交给mcdf的package。与设计相关的文件:arbiter、formatter、reg、slave.fifo要先编译;然后再编译mcdf。chnl_agent的stimlator是initiator(个人看法:主动的体现在valid,可⾃⼰决定data是否有效)⽽fmt_agent被动,只能等fmt的req,看

电力电子转战数字IC——路科MCDF全览(持续更新)

经过两次面试后,对MCDF做一次全面的深入总结。目前进度:硬件部分的node,fifo,寄存器,formatter,MCDF顶层,APB接口,TB接口软件部分的chnl_pkg,fmt_pkg,apb_pkg,mcdf_rgm_pkg,mcdf_pkg目录硬件RTL部分slave_nodeFIFOarbiterparam_def寄存器接口整形器formatter顶层MCDF接口打包信号APB接口tb中的接口tb后续软件部分chnl_pkgfmt_pkgmcdf_rgm_pkgapb_pkgapb_testapb_slave硬件RTL部分slave_node首先是slave_node,就是一开始

电力电子转战数字IC——路科MCDF全览(持续更新)

经过两次面试后,对MCDF做一次全面的深入总结。目前进度:硬件部分的node,fifo,寄存器,formatter,MCDF顶层,APB接口,TB接口软件部分的chnl_pkg,fmt_pkg,apb_pkg,mcdf_rgm_pkg,mcdf_pkg目录硬件RTL部分slave_nodeFIFOarbiterparam_def寄存器接口整形器formatter顶层MCDF接口打包信号APB接口tb中的接口tb后续软件部分chnl_pkgfmt_pkgmcdf_rgm_pkgapb_pkgapb_testapb_slave硬件RTL部分slave_node首先是slave_node,就是一开始

UIVM项目验证—数据多通道整形器(MCDF)

1、项目介绍-MCDFMCDF(Multi-ChannelDataFormatter)多通道数据整形器将上行多个通道数据存入FIFO,经过Arbiter仲裁,完成指定通道的数据打包,寄存器可以控制各个通道的开关、优先级以及数据包长度。2、设计描述CDF设计结构描述如下所示:其中主要分为如下及部分:通道从段(channelslave):接受输入的上行数据,然后存储到FIFO中;仲裁器(Arbiter):选择从不同的FIFO中读取数据,然后将数据传送到整形器(Formatter);整形器(Formatter):将数据按照一定的接口时序发送出去;寄存器(Register):设置MCDF的读写控制功能

MCDF实验3:群鸦的盛宴(从verilog到SV的入门lab3)

前言:在实验3添加了随机约束来随机化产生的数据,使用了信箱来完成类之间的通信,添加了monitor、checker让验证的组件越来越完整。种一棵树最好的时间是十年前,其次是现在。不是吗?实验3需要用到随机化、信箱、类的多态这几个主要知识,大家可以先去学习哦!在验证中习惯把各个验证文件独立放置,在这次实验把package的内容和tb内容分成两个文件,仿真编译先编译package,再编译tb文件。对实验2generator和initiator中数据生成和数据的传输做了升级。添加了验证的新组件monitor和checker。源代码将package和tb文件分开成两个文件。1.package在pack

MCDF实验3

​目录总结:1)实验1部分2)实验2部分3)实验3部分实际的仿真结束掌握在generatorgenerotor和initiator的握手通信为了便于外部chnl_root_test直接控制并randomize发送数据,故把 generator从agent里面拿出来 验证结构接下来看fifo_full_test中的内容 总结:1)实验1部分主要是修改chnl_trans类,并对里面要发送的数据添加rand,便于随机化,并尝试使用生成随机种子命令-sv_seedrandom来生成不同的数据,最后1.4 是熟悉通过mailbox握手通信的过程,生成了两个对象req和rsp, 而在同一时刻,最多有3个

MCDF实验3

​目录总结:1)实验1部分2)实验2部分3)实验3部分实际的仿真结束掌握在generatorgenerotor和initiator的握手通信为了便于外部chnl_root_test直接控制并randomize发送数据,故把 generator从agent里面拿出来 验证结构接下来看fifo_full_test中的内容 总结:1)实验1部分主要是修改chnl_trans类,并对里面要发送的数据添加rand,便于随机化,并尝试使用生成随机种子命令-sv_seedrandom来生成不同的数据,最后1.4 是熟悉通过mailbox握手通信的过程,生成了两个对象req和rsp, 而在同一时刻,最多有3个