完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
|
|
相关推荐
1个回答
|
|
第一个网络研讨会着重于向量、固定大小的数组、动态数组、队列、关联数组和字符串 (是的,我忘记了)。这里先偷瞄一下这个图标,它可以帮助你在这些不同类型之间进行选择。
是否曾经偶然发现过类似下面代码并想知道它的作用? q = array.find(x) with (x>5); 看起来它试图查找大于5的东西,但是“ x”的含义是什么?为什么搜索数组会产生队列?报名参加带有完整说明的网络研讨会,于太平洋夏令时间6月5日(星期五)上午8:15。我稍等片刻再开始,这样你就可以在加入之前再喝杯咖啡,或者给你的在家学习的孩子做些早餐。如果这你都做不到,那就没问题了,因为它们都被记录下来了。 20200507 UVM配置数据库准则 我前几篇博文在讨论静态和参数化类,是为了这场重头戏–UVM配置数据库或uvm_config_db–做好准备。如果使用得当,这是一个组件与另一个组件共享某个数值的好方法。如果测试或环境知道代理的路径,则数据库是有效的。如果使用不当,将会使你的仿真陷入困境。 过多的选项 数据库是基于带有字符串索引的关联数组。因此,每个条目都是一个“名称/值”对。如果存储100,000个值,则数据库必须搜索这些值以找到特定值。如果将数组索引值组织成树形结构,则搜索可能需要多达20次字符串比较。这是具有100,000个条目的数据库。 由于这是一个参数化的类,因此每个具有不同类型的实例都会划分数据库的大小。可能你的配置值的一半是32bit整数,另一半是64bit数值。现在,每个数据库访问都在浏览一半的值。 更普遍的问题 数据库通过向每个名称添加范围来进一步组织“名称/值”对。与处理器相比,“速度”值对存储器的含义可能非常不同。 组件如何在整个测试平台上共享数值呢?我看到了一个存储组件,无论在什么位置,它都希望与每个组件共享“内存速度”这个数值。因此,它发出了以下通信: uvm_config_db#(int)::set(null, “*”, “mem_speed”, mem_speed); 问题是,当你调用get(),并且数据库包含具有通配符范围的条目时,数据库必须执行正则表达式匹配,这比直接字符串匹配的效率低得多。更糟糕的是,数据库无法进行树状搜索,而不得不比较每个条目。如果你的数据库仅包含几百个条目,那没问题。但是如果有成千上万个,且都带有通配符,则运行非常缓慢。多么糟糕?这些为“内存速度”而设置的通配符范围将导致UVM build_phase()花费24小时,尽管其余的模拟花费了不到一个小时。如果你的测试平台规模越来越大,请留意这个问题! 本地化操作 如网络研讨会所述,一种解决方案是将配置变量组合在一起成为“配置对象”。例如,某个代理配置具有其本地参数,例如主动/被动枚举参数,各种地址和数据值以及虚拟接口。如果每个配置对象仅包含10个值,则数据库大小将减少10倍。每个代理的build_phase有一个数据库调用即可获取其config对象的句柄。当代理想要单个值时,它仅使用句柄在其本地对象中获取值。在配置对象中缓存数值比在另一个数据库中访问要快得多。 放眼全局 通配符问题的另一种解决方案是“全局范围”。请记住,数据库中的范围不必与你的测试平台层次结构匹配。内存组件可以将其值写入数据库顶部的唯一名称空间中,例如此处显示的“ mem”。 uvm_config_db#(int)::set(null, “mem”, “speed”, memory_speed); 如果有多个内存组件怎么办?在“ mem”的全局范围内,您可以为每个实例存储一个单独的配置对象句柄,假设“ speed”是mem_cfg类中的一个属性。 foreach (mem_cfg) uvm_config_db#(mem_cfg)::set(null, “mem”, $sformatf(“mem[%0d]”, i), mem_cfgs); 更多小技巧 对于直接从UVM组件类派生的组件(例如uvm_component,uvm_test,uvm_env,uvm_agent等),请勿调用super.build_phase()。这样可以避免使用代价高昂的apply_config_settings()。 范围字符串末尾的通配符(例如“agt *”)比前面的通配符(例如“*”)具有更少的匹配项和更好的性能。 结论 带有通配符作用域和许多条目的纯uvm_config_db可能会降低性能。通过将值分组到配置对象中,将数据库划分为较小的域。你可以在范围字符串中使用通配符,但将它们限制在字符串的末尾以提高性能。 |
|
|
|
只有小组成员才能发言,加入小组>>
702 浏览 0 评论
1111 浏览 1 评论
2476 浏览 5 评论
2810 浏览 9 评论
移植了freeRTOS到STMf103之后显示没有定义的原因?
2654 浏览 6 评论
使用eim外接fpga可是端口一点反应都没有有没有大哥指点一下啊
656浏览 9评论
651浏览 7评论
请教大神怎样去解决iMX6Q在linux3.0.35内核上做AP失败的问题呢
785浏览 6评论
632浏览 5评论
672浏览 5评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-24 09:51 , Processed in 1.023722 second(s), Total 49, Slave 40 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号