通用验证方法 (UVM) 是一种帮助验证 SystemVerilog 设计的流行方法,它包括 配置系统 不幸的是,它存在一些速度和使用问题。来自西门子 EDA 的 Rich Edelman 撰写了一篇详细的 20 页论文,主题是如何避免这些问题,我已经仔细阅读了该论文,为您总结了其中的亮点。验证工程师使用 UVM 配置数据库来设置值,然后在稍后的 UVM 测试中获取这些值。设置和获取值“T”的一个示例是:
uvm_config#(T)::set(范围、实例路径名称、字段名称、值); uvm_config#(T)::get(范围、实例路径名称、字段名称、值);
将UVM测试台连接到被测设备使用配置数据库来传递虚拟接口。使用UVM配置存在三个问题:
- 代码量很大,大约 2,600 行代码
- 需要精确的类型匹配,因此 'int' 和 'bit' 不一样
- 慢代码
考虑代码缓慢的情况,因为使用带有通配符的名称对 set() 进行数千次调用可能需要长达 30 分钟才能完成“设置”和“获取”阶段。
Rich 提出了一种新的 UVM 配置解决方案,其速度更快,相比之下只需要几秒钟。
如果您的 UVM 代码避免使用通配符并且很少有“设置”命令,那么您的代码将会运行得更快。
UVM 配置问题的可能解决方案包括:
- 使用全局变量代替
- 使用一组 UVM 配置()
- 通过一些 set() 使用 UVM 配置
- 使用配置树
- 尝试不同的东西
最后一种尝试不同的方法是新的解决方案,它继续使用 set() 和 get() API,然后通过删除配置的参数化、删除优先级并删除查找算法更改来简化。这种新方法的结果是速度很快。
您的新配置项在“config_item”的派生类中定义,下面的示例显示“int value”作为要设置的属性。出于调试目的,您可以添加漂亮打印功能。
类 my_special_config_item 扩展 config_item;函数新(字符串名称=“my_special_config_item”);超级新(名称); endfunction int 值;虚函数 string Convert2String(); return $sformatf("%s - value=%0d <%s>", get_name(), value, super.convert2string());结束函数结束类
“config_item”有一个名称属性,并且会查找该名称以及实例名称。配置对象还有一个 get_name() 函数来返回名称。为了查找任何“instance_name.field_name”,配置数据库使用关联数组来实现快速查找和创建速度。
为了可追溯性,您可以找出谁设置了或谁调用了 get,因为文件名和行号是 set() 和 get() 函数调用中的字段。
set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)
可以在调试期间打印访问器队列,以查看谁调用了 set() 和 get()。
为了支持通配符,需要使用容器添加查找机制。考虑实例名称“top.abcd*_0”。
实例名称的通配符部分是使用容器树而不是关联数组来处理的。
总结
可以使用 UVM 配置数据库在 UVM 测试平台中的模块/实例和基于类的世界之间共享数据,只需注意速度减慢即可。如果您的方法使用大量配置,那么请考虑使用引入的新方法,该方法的包使用大约 300 行代码,而不是 UVM 配置数据库文件中的 2,600 行代码。
阅读完整的 20 页论文, 避免配置疯狂的简单方法 在西门子 EDA。
相关博客
通过以下方式分享此帖子:
- :具有
- :是
- :不是
- $UP
- 30
- 300
- 600
- a
- 关于
- 加
- 添加
- 算法
- 还
- an
- 和
- 任何
- API
- 的途径
- 保健
- 排列
- AS
- At
- 避免
- 察觉
- b
- BE
- 因为
- 作为
- 如下。
- 之间
- by
- 被称为
- 呼叫
- CAN
- 案件
- 更改
- 程
- 码
- 对照
- 完成
- 配置
- 考虑
- 容器
- 集装箱
- 继续
- 创建
- data
- 数据库
- 定义
- 派生
- 设计
- 详细
- 设备
- 不同
- 完成
- ,我们将参加
- 易
- 工程师
- 醚(ETH)
- 例子
- 扩展
- 高效率
- 快
- 少数
- 字段
- 文件
- 找到最适合您的地方
- 针对
- 止
- ,
- 功能
- 得到
- 越来越
- 全球
- 走了
- 帮助
- 亮点
- 创新中心
- How To
- HTTPS
- if
- in
- 包括
- 例
- 代替
- 接口
- 介绍
- 问题
- IT
- JPG
- 只是
- (姓氏)
- 后来
- Line
- 线
- 看着
- 查找
- 很多
- 制作
- 匹配
- 最大宽度
- 机制
- 研究方法
- 分钟
- 分钟
- 许多
- 姓名
- 名称
- 全新
- 新解决方案
- 数
- 对象
- of
- on
- 一
- 仅由
- or
- 输出
- 包
- 纸类
- 部分
- 通过
- 相
- 柏拉图
- 柏拉图数据智能
- 柏拉图数据
- 加
- 热门
- 帖子
- 优先权
- 问题
- 财产
- 建议
- 目的
- 移除了
- 删除
- 必须
- 成果
- 回报
- 丰富
- 运行
- 范围
- 秒
- 看到
- 集
- 设置
- 作品
- Siemens
- 简化
- 放慢
- 减速
- So
- 方案,
- 解决方案
- 一些
- 东西
- 速度
- 速度
- 串
- 总结
- 超级
- SUPPORT
- 系统
- T
- 采取
- 服用
- test
- 这
- 其
- 然后
- 那里。
- 博曼
- Free Introduction
- 数千
- 三
- 通过
- 次
- 至
- 最佳
- 主题
- 可追溯分析仪
- 树
- 试图
- 类型
- 下
- 不幸
- 普遍
- 用法
- 使用
- 使用
- 运用
- 折扣值
- 价值观
- 变量
- 企业验证
- 确认
- 通过
- 在线会议
- 方法..
- 这
- WHO
- 将
- 世界
- 写
- 您
- 您一站式解决方案
- 和风网