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

相关推荐
爱勇宝6 分钟前
写给年轻程序员:别急着证明自己,也别太早放过自己
前端·后端·程序员
叶落阁主10 分钟前
Vue3 中如何设计一套好用的 Icon 和 IconPicker 组件
前端·vue.js·icon
Dreamland工坊11 分钟前
AI 视频到可用资产:浏览器端抽帧与导出全链路方案选型
前端
kungggyoyoyo11 分钟前
从0开发一套geo优化软件:数据模型与API设计
前端·vue.js·后端
李明卫杭州12 分钟前
Web Components 完全指南:从 Custom Elements 到 Shadow DOM
前端
Darling噜啦啦13 分钟前
BEM 命名规范 + CSS Reset 实战:从微信按钮页面看专业前端开发
前端·css·代码规范
Dirty_Mouse14 分钟前
基于langgraph + sentry的自动化前端性能监控日报 (直接上github链接)
前端
悟空瞎说16 分钟前
React 项目一键部署至 GitHub Pages 实操教程
前端
To_OC17 分钟前
写完这个微信风格按钮页面,我终于吃透了BEM命名+CSS重置
前端·css·html
万少32 分钟前
如果你要自动化操作浏览器,Kimi-WebBridge可能适合你
前端·javascript·后端