优化UVM环境(一)-环境结束靠的是timeout,而不是正常的objection结束

书接上回:

从零开始搭建UVM平台系列

前面搭建的UVM平台已经是一个较为完整的平台,但是环境要想有通用性,还有很多需要优化的地方。

优化一:环境结束优化

问题:现在环境结束靠的是timeout机制,而不是正常的objection结束

原因:driver/monitor里用的是while(1)循环,没有办法正常跳出

解决办法:参考apb_driver。在run_phase或者main_phase里用fork...join_none起两个线程,一个是while(1)无限循环线程,另一个是objection更新线程。

以driver为例,while(1)无限循环线程就负责不断驱动数据;objection更新线程的职责就是:当看到while(1)循环里有数据要驱动时,就raise一个objection,当看到while(1)循环里的数据驱动完成时,就drop这个objection。

需要注意的是,这里update_objection里的objecction个数判断是1个,所以在main_phase里线程1/2之外的代码范围不要再raise/drop_objection了,否则个数会大于1,导致这套机制不会生效,仿真还是会走到timeout才结束。

同理,对scoreboard、model也可以做同样的修改。

相关推荐
LYFlied6 小时前
Vue Vapor模式与AI时代前端发展的思考:虚拟DOM与框架的未来
前端·vue.js·人工智能·前端框架
江公望6 小时前
VUE3 动态Prop 10分钟讲清楚
前端·javascript·vue.js
不会写DN6 小时前
JavaScript call、apply、bind 方法解析
开发语言·前端·javascript·node.js
AAA简单玩转程序设计6 小时前
Java Map遍历的“优雅”合集
java·前端
timeweaver6 小时前
React Server Components 再曝高危漏洞:拒绝服务与源码泄露接踵而至
前端·安全
狗哥哥7 小时前
企业级 Vue 3 项目图标系统重构实践:从多源混乱到单一数据源
前端·vue.js·架构
GISer_Jing7 小时前
AI赋能前端营销领域全解析:业务、技术、应用场景等
前端·人工智能
asing7 小时前
CDN 技术深度解析
前端·cdn
syt_10137 小时前
grid布局-子项放置3
前端·javascript·css
vortex57 小时前
Linux .forward 文件详解
linux·运维·前端