大多数电子系统使用存储器组件来存储可执行软件或存储数据,因此精确存储器模型的可用性是大多数功能验证策略的基础。在经过验证的基于标准的库中提供这些模型至关重要。本文介绍了您应该在这些模型中寻找的品质,并介绍了一个新的库,我觉得它提供了这种最全面的解决方案,并支持任何类型的仿真环境和所有三个业界领先的仿真器。
内存模型要求
出于验证建模的目的,可以将存储器设备抽象为存储阵列的信号级协议接口。信号级接口必须符合存储器协议的时序和行为,这可以在行业标准中指定,例如用于DDR3的JEDEC JES79-3F标准,或者在特定情况下,它可以在设备制造商的数据表。存储阵列的实现方式对用户来说不是直接可见的,但对于仿真模型,通常使用SystemVerilog数据结构或优化的C数据结构来实现。
图1:内存设备模型的通用抽象
在测试平台中使用内存模型时,它被实例化为连接到内存控制器的组件,它既可以是被测设计,也可以是被测设计的一部分。使用存储器模型协议前端的信号访问存储器,并将数据传入和传出模型的存储阵列。前端协议的复杂性因存储器类型而异,但它可能涉及使用控制和状态寄存器与存储器状态空间交互的并发传输。从某些类型的内存(例如DDR)获得不错的性能依赖于控制器识别某些类型的数据流量并重新组织内存访问以优化内存中的访问速率。这种复杂程度要求高保真存储器模型不仅要重现真实存储器设备的复杂行为和时序,还要确定控制器优化是否有效。
前门访问存储器通过协议接口对于功能验证是必需的,但是将数据传入和传出存储器确实需要时间;因此,后门接口用于直接加载或卸载存储器存储阵列。后门接口通常用于在存储器模型中加载可执行软件映像,或者它可以用于加载将由硬件加速器操纵的数据内容。后门接口还可用于在测试期间检查内存内容,或者在测试结束时将内存数据与黄金参考进行比较。后门接口也可以耦合到内存调试器,以允许交互式查看和更改内存内容。
除了提供这种有用的前后门功能外,还需要其他功能来增强内存的可用性。用于验证的内存模型。内存模型应该提供一种检查正在遵循内存协议并在出现错误时标记错误的方法。这通常通过使用在发生错误时触发的断言来支持,从而更容易找到问题的根本原因。内存模型应提供功能覆盖监视器,以跟踪协议的使用方式。这可用于检查内存控制器是否已经过彻底验证,或者了解哪些模式的协议操作尚未经过测试。支持调试内存协议对于有效跟踪错误来源也很重要。
Mentor内存库
Mentor Graphics最近推出了一种全新的综合内存验证IP库,旨在满足对精确内存仿真模型日益增长的需求。新发布的Mentor内存模型库包含25种最常用的内存类型。通过配置,该库支持基于内存设备的数千个模型,用户可以创建自己的配置,允许支持几乎无限数量的模型。
表1:当前支持的内存模型类型通过Mentor内存库
DDR内存类型支持 | Flash记忆类型支持 |
DDR2,DDR3,DDR4 | SDCard |
LPDRR2,LPDDR3,LPDDR4 | eMMC |
UDIMM(DDR2,DDR3,DDR4) | ONFI |
RDIMM(DDR2,DDR3,DDR4) | Serial Flash |
LRDIMM(DDR3,DDR4) | NAND Flash |
DFI | NOR Flash |
宽IO,宽IO2 | UFS |
HMC | |
HBM |
全部库中可用的模型既可以用作独立的内存模型,也可以用作UVM代理,支持任何类型的模拟环境。这些模型适用于所有三个主要的EDA仿真平台 - 来自Mentor Graphics的Questa,来自Cadence的Incisive和来自Synopsys的VCS。
内存模型打包为SystemVerilog模块,其引脚对应于建模的内存类型。这允许它们被实例化为设计网表中的组件或测试工具的顶层。模型响应前门访问的信号级协议,并提供库中通用的后门API。
模型为每种类型的内存模型提供全部功能和时序精度。这包括可选的功能模式设置和对高级操作的支持,例如训练和调平,用于微调高速协议接口(如DDR4)的响应。
模型的时序和行为是高度可配置的,允许它们被调整以具有真实存储设备的个性。每个内存模块都有一个MANUFACTURER和一个PART_NUMBER参数,允许您指定模型应该表现的设备。这些参数在模拟开始时用于在模型中设置适当的配置选项。可以将这些部件号参数的值更改为模拟器命令行选项。这使得可以更改建模的零件而无需重新编译设计和测试平台,这对于检查第二个源组件是否可以在系统设计中工作非常有用。
Mentor支持内存模型VIP配置GUI,允许您在GUI创建的测试平台中实例化特定的内存组件模型,或者创建可由内存组件加载的配置文件。通过GUI,您可以访问特定内存类型的所有可用配置选项,包括时序参数。这允许您创建自己的内存模型变体来探索特定的角点情况。 GUI生成的配置文件的路径是内存模块的另一个参数,如果指定,则覆盖MANUFACTURER和PART_NUMBER配置。
图2:内存模型框图
模型有一个API,因此您可以在模拟过程中重新配置它们。 API允许指定新的设备部件号或使用不同的配置文件。使用这种方法几乎可以对模型进行任何更改。但是,您必须确保行为中的任何更改都发生在测试中的合理位置,并且您必须意识到模型可能需要重新初始化或训练,具体取决于重新配置的范围。
内存模型具有其他模块级参数,可提供可选的验证功能。使用ENABLE_FUNC_COV参数激活内存协议的功能覆盖监视器。使用ENABLE _TXN_LOG参数打开内存事务记录器。内存事务记录器可写入模拟器脚本或指定的日志文件,输出可用于跟踪内存级模拟活动。
由于内存模型构建在Mentor Verification IP之上在体系结构方面,它们具有内置的事务调试工具,允许在波形窗口中查看协议活动以及其他设计级信号。此功能将内存访问抽象为高级事务,从而可以轻松了解内存协议在任何时间点发生的情况。
即时模型重新配置
Mentor内存模型的一般用例是独立模型,代表系统级别的内存设备。在这种情况下,它们在测试用例的持续时间内对设备的行为进行建模,并且不进行重新配置。但是,存在一些内存控制器验证方案,其中在模拟过程中更改模型的时序或行为是有用的。内存模型以三种方式之一支持。可以使用运行时API调用(指定新的部件号或新自定义配置文件的路径)对模型配置进行重大更改以更改部件号或将其重新配置为自定义配置。通过在模型本身中直接设置配置变量,可以进行较小的运行时更改。
每个模型的所有可用配置变量都记录在库提供的综合在线文档中。例如,通过在运行中改变适当的定时变量,可以进行微妙的定时改变以检查存储器控制器是否能够应对延迟的定时响应。
表2:内存模型模块参数
参数 | 目的 |
制造商 | 识别零件制造商 |
PART_NUMBER | 标识设备部件号 |
CONFIG_FILE | 配置GUI创建的自定义配置文件的路径 |
ENABLE_FUNC_COV | 启用功能覆盖率监视器 |
ENABLE_TXN_LOG | 启用事务记录器进行调试 |
TXN_LOG_FILE | 事务记录器输出的文件路径 |
IF_NAME | 与uvm_config_db一起用于识别模型虚拟接口句柄 |
可以使用Verilog或VHDL测试平台中的分层引用或SystemVerilog UVM测试平台中的虚拟接口句柄对配置变量进行更改。该模型将其虚拟接口句柄的引用放入UVM uvm_config_db数据结构中,UVM测试平台中的组件可以通过这种方式引用模型的配置参数。提供模块级参数以自定义用于存储和检索uvm_config_db模型虚拟接口句柄的路径和键字符串的命名。
结论
Mentor内存模型库提供了全面的内存建模解决方案,并提供了广泛的配置选项,可以非常轻松地对特定设备部件或自定义部件进行建模。这些模型具有内置的高级验证功能,可用于任何形式的基于仿真的验证环境,并且有资格在Questa,Incisive和VCS模拟器上运行。
-
存储器
+关注
关注
38文章
7443浏览量
163544 -
PCB打样
+关注
关注
17文章
2968浏览量
21630 -
华强PCB
+关注
关注
8文章
1831浏览量
27705 -
华强pcb线路板打样
+关注
关注
5文章
14629浏览量
42954
发布评论请先 登录
相关推荐
评论