电路板玩家
过来人告诉你,肯定会问,而且问得不浅。光说顺序不够,你得理解phase机制解决了什么问题——主要是验证环境的自动化和生命周期管理。
重点准备这些:
1. 执行顺序:build_phase(从上到下创建)-> connect_phase(从下到上连接)-> run_phase(并行执行)。要能解释为什么connect要在build之后?因为得先有实例才能连接。
2. run_phase是task,其他主要phase是function:这涉及到仿真调度。function在0时刻执行,不消耗时间;run_phase是时间推进的关键。可能会问你怎么在run_phase里同步不同组件(比如用event或barrier),或者phase跳转(phase.raise_objection/drop_objection)怎么用。
3. config_db的使用时机:通常在build_phase之前或之中设置(比如在test的build_phase里set),在组件的build_phase里get。顺序搞错会取不到值,这是个常见坑。
4. 最好能画出UVM phase的流程图,包括主要phase和可选的phase(如report_phase)。不用太复杂,但体现层次和顺序。
另外,准备个例子,比如一个简单的验证环境,说明各个phase里做了什么。这样即使问深了,你也能结合实际说,不会显得死记硬背。
