sv lab4学习记录

sv lab4学习记录

  1. 框架图
    在这里插入图片描述

  2. 这个mcdf interfance 为什么存在?
    在这里插入图片描述
    因为对于chnl_intf, reg_intf, fmt_intf, arb_intf, 他们都是直接和mcdf_intf连接的。有时候我想监测内部的信号,我会把内部的信号直接先交给mcdf_intf。而mcdf_intf又可以被验证环境中的任何一个组件拿到。比方说checker可以通过mcdf_intf监测到chal, reg, formatter,的信号,间接的可以监测到一些关键的信号。这样我们以前的那些黑盒的验证慢慢的就变成了灰盒。

  3. 约束合理不合理取决于对设计的理解。

  4. 关于fmt_pkg
    在这里插入图片描述
    fmt_pkg包和以往的包不同,以往的包都是一个master,只管生成数据然后发送出去。但是fmt_pkg需要模拟一个response不仅要接受数据还得按一定的速度将数据消化掉,所以需要在内部放一个fifo
    fmt_agent模拟的这个缓存,有可能数据消耗的快,也可能消耗的慢。这样进一步可以模拟出grant什么时候拉高。所以fmt_agent里的driver和之前的都不一样。

    1)这里的generator是在生成什么呢?
    生成随机数,内部fifo的大小消耗数据的速度,这些都需要随机fmt_pkg需要模拟一个slave,不单单需要将数据拿进来,还要消化掉,还要模拟消化数据有多快,要模拟深度有多深
    而这里用了两个枚举类型,用来简明控制生成相关参数的随机数。
    2)这里的driver是在干什么呢?
    该类是接受gene生成的两个随机枚举型配置(fifo大小和消耗速度<带宽>)并生成内部fifo模拟response端行为,上端接收dut的数据,下端模拟消耗数据。

  • Driver中干以下四个task:
    在这里插入图片描述
    配置do_config()
    在这里插入图片描述
    得到gene随机后的fmt_fifo_t和fmt_bandwidth_t值。后开始生成内部fifo,进行相关配置。

注意:
req.fifothis.fifo不一样,不同类中的变量名字一样,前者为枚举类型后者为mailbox
req.fifo为枚举类型,根据不同的枚举值选择不同的fifo_bound (即fifo的深度的数值)和data_consum_peroid(即数据消耗的速度,控制水流出去的速度)。
this.fifo即真正的buf,根据以上随机值生成真正的buf,配置其大小和流速。

上端接收数据任务 do_receive()
在这里插入图片描述

注意:只有内部余量大于包的长度(能存的下),才会将grant给dut,表示我当前可以接收数据。

接收到数据后put进fifo中。

下端消耗数据任务 do_consum()
拿一次数据等一段随机时间,拿一次等一段随机时间。
在这里插入图片描述
3) 这里的monitor是在干什么呢?
该类将接口上的数据解出来,根据各自的长度放到相应的动态数组中,然后打印出来。送给checker作最终的数据比较。
在这里插入图片描述
#=============================================================#
路桑留的问题:

  1. 既然我们在do_config中做了配置new(大小),还有必要在初始function new中配置 初始值嘛?为什么一开始要给fifo做new(),如果不做new行不行?
  2. 做了new,为什么不给他们做new(10),new(100),为什么一开始要new个无穷大?有没有必要?

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

  1. 关于mcdf_checker
    在这里插入图片描述

在这里插入图片描述
基本模型图:
在这里插入图片描述

小细节:设计中真正打包的只有fmt模块,它只有一个buf。而ref_model中有三个buf,它是在做什么?
==> 它是在假定arbit的功能是OK的,arbit也没有丢数。
ref_model做的事情
① 对寄存器的模拟;
② 对数据长度的打包;
ref_model没有模拟的事情
① 让哪些数据通道可以开关;
② arbit的仲裁功能;【哪些数据谁在前谁在后(优先级)没有检查】
所以该ref_model能够帮忙检查的是:
数据完整性的检查,数据有无丢失

  • mcdf_pkg.sv中包含了 checker, mcdf_env, mcdf_test
    checker中在干什么?
    在这里插入图片描述
    ① mcdf_refmod: 完成模拟数据读写和三个通道的数据打包
    在这里插入图片描述
    1) do_reg_update() 模拟寄存器读写
    在这里插入图片描述
    2) do_packet(int id)
    细节do_packet()中 wait(this.in_mbs[id].num() > 0);
    // 我想要打包数据得先确认in_mbs里不为空
    在这里插入图片描述
    ② mcdf_checker: 完成 fmt_mb出来的数据包refmodel打包后exp_mbs的数据包的比较
    在这里插入图片描述
  1. 最终的generate随机化都在最上层的test去控制。
    在这里插入图片描述
sv lab4 分析是指对于第4sv实验室的分析工作。在这个实验室中,我们通常会使用各种分析方法和技术来研究特定的问题。 首先,sv lab4 分析需要进行实验设计和数据收集。根据研究问题的不同,我们可以设计不同型的实验,并采集相应的数据。这些数据可以是定量的,如测量结果,也可以是定性的,如观察记录或访谈数据。 其次,sv lab4 分析需要对所收集的数据进行整理和清理。这一步是为了确保数据的准确性和可用性。我们通常会删除异常值、填补缺失值,并对数据进行标准化或转换,以便后续的分析处理。 接下来,sv lab4 分析会使用各种统计方法和技术对数据进行分析。这包括描述性统计分析、推断统计分析和相关性分析等。这些分析方法可以帮助我们理解数据的特征和相互关系,进一步揭示研究问题的本质。 最后,sv lab4 分析需要将分析结果进行解释和讨论。通过对分析结果的解释,我们可以得出结论并提出相应的建议。这些结论和建议将为问题的解决或研究的推进提供参考和指导。 总之,sv lab4 分析是一个综合性的分析过程,它要求我们结合实验设计、数据收集、数据整理与清理以及统计分析的知识与技术,最终对研究问题进行解答和讨论。通过这一过程,我们可以深入研究问题的本质,并为进一步的研究或实践提供有益的建议。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Ethan_WC

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值