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

相关推荐
拾光拾趣录7 分钟前
🔥9种继承写法全解,第7种99%人没用过?⚠️
前端·面试
李梦晓12 分钟前
git 提交代码到别的分支
前端·git
LIUENG13 分钟前
Vue2 中的响应式原理
前端·vue.js
陈随易14 分钟前
VSCode v1.103发布,AI编程任务列表,可用GPT 5和Claude 4.1
前端·后端·程序员
wordbaby33 分钟前
以0deg为起点,探讨CSS线性渐变的方向
前端·css
猩猩程序员36 分钟前
宣布 Rust 1.89.0 发布
前端
Spider_Man1 小时前
Node.js 胡编乱造机:让代码帮你写鸡汤,灵感不求人!🧙‍♂️✨
前端·javascript·node.js
BUG收容所所长1 小时前
如何用React快速搭建一个AI语音合成应用?从零到一的完整实战指南
前端·javascript·react.js
Jerry_Rod1 小时前
Electron一小时新手快速入门
前端·electron
用户1409508112801 小时前
JavaScript 引擎的工作机制(如垃圾回收、事件循环),如何利用这些原理优化代码性能?
前端