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

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

3天内不再提示

在UVM中更轻松地进行内存管理

星星科技指导员 来源:嵌入式计算设计 作者:Siddharth Nair 2022-10-24 14:45 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

典型的SOC由多个接口组成,这些接口可以访问设计中的存储器。当我们验证这样的设计时,我们需要确保各种接口的内存访问不会重叠,从而导致数据完整性丢失。

当使用涉及多个接口的基于System Verilog的验证环境进行验证时,我们需要对激励提供简洁的约束,以确保这些访问不会重叠并导致数据完整性丢失。

验证工程师通常不得不花费大量时间调试所施加的约束,而这种约束形式导致刺激的约束,这是一条非常危险的道路。

随着基于 UVM 的单例内存管理器的引入,随着 UVM 提供的内存管理类的可用性,此任务的实现变得更加友好。但是,这些新的验证组件仍然不是专门为开发涉及多个主站的环境而设计的。我们在这里开发的“简易内存管理器”最大限度地利用了现有的UVM方法,并且还提供了多个主服务器之间更轻松的内存访问。

什么是 UVM 内存管理器?

关于uvm_mem_mam类的资源非常稀缺,因此,如果读者对其功能没有太多了解,这是可以理解的。在继续讨论内存管理器提供的功能之前,我们想简要介绍一下默认 UVM 内存管理器的功能。

UVM 中有四个与内存管理关联的类。它们在下面提到 -

uvm_mem_mam_cfg – 它允许我们选择要由管理器管理的字节数以及开始和结束偏移量。

uvm_mem_mgr - 它是由希望分配内存的静态/动态实体启动的。

uvm_mem_alloc_policy – 它还可用于控制经理的开始和结束偏移,并根据我们的要求约束这些变量。

uvm_mem_region – 这些区域表示要由内存管理器分配的区域。这些区域包含起始偏移量和由管理器分配的字节数。

现在,我们已经简要了解了默认内存管理器的操作以及与 UVM 中的内存管理关联的类,让我们看看我们在内存管理器中的此现有功能上添加了什么。

支持的功能

“简易内存管理器”支持以下功能集,可以在各种项目之间重复使用:

整个内存分为三个维度的内存、主内存和分配的区域,支持这三个维度上的区域分配和释放。

将记忆划分为虚拟区域。

运行时分配和区域发布。

多个主节点的非重叠分配。

通过提供要分配的区域的物理地址和字节数来分配区域。

可以保留内存块,以便任何主服务器都无法访问它。

提供有关已分配区域的详细信息的调试机制。

根据.xls文件的输入创建内存。

顶部寄存器块和管理器可通过脚本进行配置。

即插即用,因此可以直接在任何现有的UVM环境中使用。

建筑

本节描述了内存管理器的结构以及将引入“简易内存管理器”的环境。管理器由顶部的 uvm_reg_块组成,该块包含各个存储器(例如 – 闪存、JTAG、SRAM 等)。各个存储器是根据.xls文件中提供的数据创建的。各个内存类配置可根据项目要求完全自定义。以类似的方式,我们可以通过脚本的命令行选项配置顶部内存。管理器是单例,因此不会有数据重复。

pYYBAGNWNJCAIQO6AAB5PhuVPSs003.png

图 1 使用简易内存管理器的环境

poYBAGNWNJeAQO5zAABDvAtgHBs631.png

pYYBAGNWNJ-AEb0kAABIwbW8vdk546.png

图 2 使用简易内存管理器分配和取消分配内存区域

poYBAGNWNKCAFp6SAAE4Thk9Nh0931.png

表1 管理器中的方法列表

在这里,我们展示了如何在多主方案中使用“简易内存管理器”的场景。存储器由两个主站访问,一个是SPI主站,另一个是以太网主站,它们正在执行自己的测试序列。在此示例中,您可以观察主节点在访问内存时提供的唯一编号如何使用户能够更好地控制测试用例中的区域处理。此外,用户无需了解RAL模型中存储器的结构。他可以简单地提供实际地址,经理足够聪明,可以根据地址保留区域。

pYYBAGNWNKeAS7zdAAESrFPoaUE924.png

图 3 主节点在保留/释放区域时与管理器的交互

最初,整个内存范围都可用,SPI 主站请求两个区域,以便它可以在这些区域上启动其序列。

同样,以太网主站也请求了三个区域。以太网主站和SPI主站的区域将通过主站在分配时作为参数传递的主控号来区分。

SPI 主站已完成其序列,并通过在调用释放函数时指定其唯一主控号来释放其分配的两个区域。

以太网主机现在希望访问先前分配给 SPI 主机的区域。因此,它将通过指定物理地址来请求这些区域。

以太网序列已经完成,它将释放它所请求的区域。

集成步骤

poYBAGNWNLCANS7OAABVZsjRFL4056.png

图4 集成步骤

向 XLS 提供输入–在.xls文件中以适当的格式写入数据以创建单独的内存。

通过脚本生成记忆和reg_block – 使用适当的命令行选项运行脚本。如果未提供命令行选项,则使用默认选项。

以环境中的经理实例为例 – 存储器和管理器将根据.xls文件和命令行选项中提供的数据创建。在要访问管理器的组件中创建管理器的对象实例。

获取管理器的句柄 – 管理器的实例需要获取管理器的句柄,因为它是单例。管理器由返回单一实例句柄的方法组成。

通过句柄访问方法– 可以使用管理器的句柄访问管理器的方法。

“简易内存管理器”本质上是通用的,可以在任何现有的基于UVM的验证环境中使用。管理器包易于配置,可以扩展到任何特定于项目的环境中,而无需对内部代码进行任何更改。

在 eInfochips,我们在系统、子系统和 IP 级环境中使用此内存管理器,并取得了预期的结果。我们已经使用探索和NCSim模拟器验证了这个组件。

审核编辑:郭婷

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

    关注

    31

    文章

    5625

    浏览量

    130708
  • 存储器
    +关注

    关注

    39

    文章

    7771

    浏览量

    172462
  • soc
    soc
    +关注

    关注

    40

    文章

    4661

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    EVAL - ADM3260EBZ评估板:让ADM3260评估更轻松

    EVAL - ADM3260EBZ评估板:让ADM3260评估更轻松! 作为电子工程师,设计,我们经常会需要对各种新的芯片和器件进行评估,以确保它们能满足我们的设计需求。今天要给大
    的头像 发表于 05-28 16:15 22次阅读

    C++ 11 14 17 20内存管理-指针、智能指针和内存池基础与提升

    大模型云端吞吐着海量数据,当自动驾驶汽车毫秒间做出生死决策,我们不得不重新审视支撑这一切数字大厦的基石——C++内存管理。尽管高级语言层出不穷,但在对性能、延迟和资源控制有着极致要
    的头像 发表于 04-20 15:51 618次阅读

    LuatOS的内存分配机制

    不同 LuatOS 硬件平台在内存布局上存在差异,Lua 运行内存、系统内存与 PSRAM 扩展内存的分配方式各有区别。部分型号将系统与脚本内存
    的头像 发表于 04-16 12:37 230次阅读
    LuatOS的<b class='flag-5'>内存</b>分配机制

    MAX1917:DDR内存电源管理的理想选择

    MAX1917:DDR内存电源管理的理想选择 电子设备的设计,电源管理是至关重要的一环。特别是对于DDR
    的头像 发表于 03-17 17:15 505次阅读

    MAX17000A:DDR2和DDR3内存电源管理的理想之选

    MAX17000A:DDR2和DDR3内存电源管理的理想之选 产品概述 笔记本电脑DDR、DDR2和DDR3内存的电源管理领域,Maxim
    的头像 发表于 03-12 15:30 290次阅读

    探秘DS2731:缓存内存电池备份管理IC的卓越性能与应用

    探秘DS2731:缓存内存电池备份管理IC的卓越性能与应用 电子设备的设计,电源管理是一个至关重要的环节,尤其是对于需要可靠备份电源的应
    的头像 发表于 02-24 16:40 464次阅读

    rk基于linux/android内存管理

    内存整体使用布局如下,以 ARM64 为例(常规情况):     上表的 Start Addr Offset 一栏表示基于 DDR base 的地址偏移; Fastboot 地址和大小由
    的头像 发表于 12-15 10:42 356次阅读
    rk基于linux/android<b class='flag-5'>内存</b><b class='flag-5'>管理</b>

    实际网关设计,如何利用电容的高纹波电流能力进行管理优化?

    实际网关设计,如何利用电容的高纹波电流能力进行管理优化?
    发表于 11-26 07:59

    为什么单片机很少使用malloc,而PC程序频繁使用呢?

    进行内存管理,尤其是处理复杂数据结构和应用时。 开发的复杂度单片机:嵌入式开发,开发者往往需要在有限的资源和对实时性的严格要求下
    发表于 11-20 06:55

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

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

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

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

    实时监控与诊断,让EtherCAT网络管理更轻松

    版AWStudio运动控制版提供了实时监控功能,能够实时显示EtherCAT网络的运行状态,包括从站设备的通信状态、数据交换情况等,这有助于开发者及时发现并解决网络的潜在
    的头像 发表于 08-28 11:36 903次阅读
    实时监控与诊断,让EtherCAT网络<b class='flag-5'>管理</b><b class='flag-5'>更轻松</b>!

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

    验证的硬核 IP,因此验证过程可以只使用其接口进行模拟,这将极大减小验证平台复杂度和构建难度,同时对验证的完备性影响较小.验证平台由 UVM 验证包、DUT、AXI BRAM IP
    发表于 08-26 09:49

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

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

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

    验证的硬核 IP,因此验证过程可以只使用其接口进行模拟,这将极大减小验证平台复杂度和构建难度,同时对验证的完备性影响较小.验证平台由 UVM 验证包、DUT、AXI BRAM IP
    发表于 07-31 16:39