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

相关推荐
林太白几秒前
vue3这些常见指令你封装了吗
前端·javascript
傻啦嘿哟16 分钟前
Python在Excel中创建与优化数据透视表的完整指南
java·前端·spring
拜晨21 分钟前
用流式 JSON 解析让 AI 产品交互提前
前端·javascript
浩男孩24 分钟前
🍀vue3 + Typescript +Tdesign + HiPrint 打印下载解决方案
前端
andwhataboutit?26 分钟前
LANGGRAPH
java·服务器·前端
无限大626 分钟前
为什么"Web3"是下一代互联网?——从中心化到去中心化的转变
前端·后端·程序员
cypking29 分钟前
CSS 常用特效汇总
前端·css
程序媛小鱼32 分钟前
openlayers撤销与恢复
前端·js
Thomas游戏开发33 分钟前
如何基于全免费素材,0美术成本开发游戏
前端·后端·架构
若梦plus35 分钟前
Hybrid之JSBridge原理
前端·webview