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

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

3天内不再提示

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

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

扫码添加小助手

加入工程师交流群

典型的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_block 组成,其中包含单个存储器(例如 – Flash、JTAG、SRAM 等)。单个存储器是根据.xls文件中提供的数据创建的。各个内存类配置可根据项目要求完全定制。以类似的方式,我们可以通过脚本的命令行选项配置顶部内存。管理器是单例,因此不会有数据重复。

poYBAGOFzMWADgzvAAB5PhuVPSs408.png

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

pYYBAGOFzM6AbuMWAABDvAtgHBs280.png

poYBAGOFzM-AbVBuAABIwbW8vdk807.png

图2使用 Easy 内存管理器分配和释放内存区域

pYYBAGOFzNaAJvQZAAE4Thk9Nh0750.png

表1管理器内的方法列表

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

5e14a851f2990-Picture4.png

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

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

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

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

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

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

整合步骤

poYBAGOFzOmAFSxxAABVZsjRFL4426.png

图4 集成步骤

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

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

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

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

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

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

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

审核编辑:郭婷

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

    关注

    41

    文章

    6183

    浏览量

    181540
  • 存储器
    +关注

    关注

    39

    文章

    7756

    浏览量

    172179
  • soc
    soc
    +关注

    关注

    40

    文章

    4623

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

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

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

    LuatOS的内存分配机制

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

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

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

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

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

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

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

    rk基于linux/android内存管理

    内存整体使用布局如下,以 ARM64 为例(常规情况):     上表的 Start Addr Offset 一栏表示基于 DDR base 的地址偏移; Fastboot 地址和大小由
    的头像 发表于 12-15 10:42 291次阅读
    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 4927次阅读
    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 843次阅读
    实时监控与诊断,让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 3236次阅读
    NVMe高速传输之摆脱XDMA设计23:<b class='flag-5'>UVM</b>验证平台

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

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

    HarmonyOS优化应用内存占用问题性能优化一

    一、 概述 用户功能的不断增强,应用越来越复杂,占用的内存不断膨胀,而内存作为系统的稀缺资源比较有限,当应用程序占用过多内存时,系统可能会频繁
    发表于 05-21 11:27