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

相关推荐
Csvn8 小时前
Monorepo 迁移血泪史:从 Multi-Repo 到 Turborepo,这 3 个坑我帮你踩完了
前端
星栈8 小时前
Dioxus 多页面怎么做:`dioxus-router`、嵌套路由、`Outlet` 和页面组织,一篇给你讲顺
前端·rust·前端框架
用户987409238878 小时前
用 Remotion + edge-tts 打造中文教学视频全自动流水线
前端
风骏时光牛马8 小时前
Less前端工程化实战:变量混合器与项目样式分层落地
前端
假如让我当三天老蒯8 小时前
Options API(选项式 API) 和 Composition API(组合式 API)
前端·vue.js·面试
SameX8 小时前
iOS 独立开发实践:用 MapKit + 像素渲染实现 Citywalk 轨迹地图 App「雁过留痕」
前端
skyey9 小时前
页面加载时,深色模式闪白的问题解决
前端
IT_陈寒9 小时前
Java 并行流把我坑惨了,这6小时加班值了
前端·人工智能·后端
anOnion18 小时前
构建无障碍组件之Menu Button pattern
前端·html·交互设计
用户479492835691519 小时前
claude Fable用不了?把Gpt 5.5pro接到你的claude code里
前端·后端