gpt4 book ai didi

system-verilog - 在 UVC 中处理协议(protocol)扩展

转载 作者:行者123 更新时间:2023-12-04 06:48:13 25 4
gpt4 key购买 nike

我很好奇您如何处理协议(protocol) UVC 的扩展。假设我们有一个实现 AMBA 协议(protocol)的 APB UVC。假设我们有一个 DUT,除了规范中定义的信号外,它还实现了一些与通用 APB 信号相关的其他信号(它们添加了对 protected 访问或其他内容的支持)。在类方面,它很容易处理:只需创建一个带有额外字段的新序列项子类并进行类型覆盖。在信号级别工作时会变得棘手。我们的 UVC 已经使用了仅包含 APB 信号的 SV 接口(interface),并且无法以任何方式对其进行扩展。我们如何将这些额外的信号输入 UVC 来驱动和监控?

到目前为止,我们所做的是,由于我们使用的是我们自己开发的 UVC,我们只需将所有内容打包到基础 UVC 中并使其具有高度可配置性。我不喜欢这种方法,因为我觉得它没有被正确封装。过多的额外配置参数会使用户感到困惑,并使开发变得更加困难。我只是想知道是否有人对此有更好的解决方案。

这是我也在 Accellera UVM 论坛上提出的一个问题:http://forums.accellera.org/topic/1832-handling-protocol-extensions/

最佳答案

如何扩展协议(protocol) UVC(UVM 验证组件)以添加自定义扩展,保持适当的封装?

典型的协议(protocol)(及其 UVC)具有状态或模式(在不同情况下控制操作)和阶段或事件(根据协议(protocol)执行传输期间的划定区域或兴趣点)等概念。 “普通”UVC 基于激励数据和观察到的 DUT 反馈的某种组合来维持内部状态/模式/阶段。
扩展协议(protocol) UVC 以添加自定义信号通常需要访问相同的状态/模式/阶段或事件。

我假设您不需要修改协议(protocol),只需以非破坏性方式添加即可。

在类级别(您已经知道这一点):

  • 通过确保/添加为基础 UVC 中的自定义扩展创建基础
  • accessors() 用于关键协议(protocol)状态或模式,以便扩展类可以访问它们
  • 关键协议(protocol)阶段的事件/回调,以便扩展类可以订阅它们
  • 更喜欢基本 UVC 配置的配置对象,而不是离散的配置值
  • 扩展序列项目(和序列库*)以传达刺激意图 w.r.t.扩展名
  • 考虑在此处使用随机约束来强制执行自定义扩展的规则
  • 扩展 UVC 基类以创建您的自定义扩展,添加
  • 扩展序列项目的排序器,它提取刺激的扩展部分以供本地使用,并将项目向下传递到基础 UVC
  • 一个分析端口,可以报告由于自定义扩展而监控的任何其他信息
  • 自定义扩展的驱动程序/监视器,由基本 UVC 驱动程序/监视器中的事件/回调触发。
  • 配置对象/连接和通常的 UVM 机制的通路。

  • 在信号电平:
  • 考虑“接口(interface)中的接口(interface)”方法
  • 创建一个表示完整信号束的物理接口(interface),其中包含:
  • 原始“vanilla”协议(protocol)接口(interface)的实例
  • 表示“侧信号”的新接口(interface)实例
  • 将外部或内部接口(interface)分配给测试环境和扩展 UVC 类中正确位置的虚拟接口(interface)句柄(通过通常的 UVM 机制)。
  • 如果可能,请考虑在此接口(interface)中使用断言,以使您的扩展行为合法 w.r.t.基本协议(protocol)行为

  • 如果您能够在基本 UVC 中公开正确的钩子(Hook)和 API,那么通过将扩展分开,您可以在通常难以维护的情况下(定制旨在成为“标准”的协议(protocol))中的代码具有最大的可维护性.

    *扩展整个序列库可能并不总是可能的,在这种情况下,您的低级别序列或项目可能需要访问“侧面”的某些配置,例如模型或某些配置对象的句柄,以控制“扩展”行为,使用通常的 UVM 机制。一个例子可能是与电源管理相关的扩展,其中低级实现影响协议(protocol),但高级控制独立于协议(protocol)。

    关于system-verilog - 在 UVC 中处理协议(protocol)扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23343495/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com