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

相关推荐
sen_shan3 分钟前
《Vue项目开发实战》第八章:组件封装--vxeGrid
前端·javascript·vue.js
五点六六六3 分钟前
双非同学校招笔记——离开字节入职小📕
前端·面试·程序员
IT_陈寒5 分钟前
Redis实战:5个高频应用场景下的性能优化技巧,让你的QPS提升50%
前端·人工智能·后端
2***57426 分钟前
Vue项目国际化实践
前端·javascript·vue.js
我也爱吃馄饨7 分钟前
写的webpack插件如何适配CommonJs项目和EsModule项目
java·前端·webpack
全马必破三7 分钟前
HTML常考知识点
前端·html
OLong21 分钟前
忘掉"发请求",声明你要的数据:TanStack Query 带来的思维革命
前端
琦遇22 分钟前
Vue3使用vuedraggable实现拖拽排序
前端
银月流苏22 分钟前
Vue 深度选择器 `:deep` 使用说明
前端
程序媛ing23 分钟前
React + ECharts 动态折线图实现
前端·react.js