优化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也可以做同样的修改。

相关推荐
编程小Y1 分钟前
Vue 3 + Vite
前端·javascript·vue.js
GDAL10 分钟前
前端保存用户登录信息 深入全面讲解
前端·状态模式
大菜菜17 分钟前
Molecule Framework -EditorService API 详细文档
前端
Anita_Sun18 分钟前
😋 核心原理篇:线程池的 5 大核心组件
前端·node.js
灼华_22 分钟前
Web前端移动端开发常见问题及解决方案(完整版)
前端
_请输入用户名23 分钟前
Vue3 Patch 全过程
前端·vue.js
孟祥_成都23 分钟前
nest.js / hono.js 一起学!字节团队如何配置多环境攻略!
前端·node.js
用户40993225021224 分钟前
Vue3数组语法如何高效处理动态类名的复杂组合与条件判断?
前端·ai编程·trae
山里看瓜25 分钟前
解决 iOS 上 Swiper 滑动图片闪烁问题:原因分析与最有效的修复方式
前端·css·ios
Java水解27 分钟前
前端与 Spring Boot 后端无感 Token 刷新 - 从原理到全栈实践
前端·后端