今天来聊一聊所谓的Objection机制。
Objection是UVM框架中用来同步不同组件的相同phase,以及决定当前测试用例什么时候结束(end-of-test)的机制,这也是用户在拿到UVM之后最直白的使用场景。本篇文章除了介绍Objection的工作原理和常规使用方式,还会介绍Objection的一些非常规用法。
01 、Objection工作原理
为什么把同步phase或者说管理仿真结束的机制叫做Objection?这是个没有多少实际意义的问题,不过理清楚之后,也许你再也不会忘了Objection机制的用途。
按照UVM reference的介绍:“Objections provide a facility for coordinating status information between two or more participating components, objects, and even module-based IP. ” 这个描述还是比较抽象,说Objection用于协调多个对象之间的状态信息,不过可以简单理解成就是“同步”。
本系列前面的文章【深入Phase机制,看懂Phase机制实现原理】介绍到,基于UVM的仿真程序执行严格按照Phase来执行,而每一级phase都按照UVM定义的状态机做跳转,其中有一个状态比较特殊,叫UVM_PHASE_READ_TO_END。这个IC修真院里给大家详细说明过。
这个状态的特点是:只有当同级phase的所有objection都被撤销(drop)之后(通过计数器实现)&#x