objection机制用来控制验证平台的关闭。phase和objection与UVM验证平台息息相关,phase恰如铁轨,让UVM这趟列车在铁轨上向前运行,不会脱轨,不会跳过某一段而直接到达后一段,objection则更像是能量,给列车提供能量,控制着这趟列车的起始和终止。
在一个实际的验证平台中,通常会在以下两种objection的控制策略中选择一种:
第一种是在scoreboard中进行控制。通过config_db::set的方式设置收集到的transaction的数量pkt_num,当收集到足够数量的transaction后跳出循环。采用fork…join_any语句,一方面收集预期transaction,另一方面收集实际transaction。
第二种是在sequence中提起sequencer的objection,当sequence完成后,再撤销此objection。
以上两种方式在验证平台中都有应用,其中第二种用得最多,这种方式是UVM提倡的方式。UVM的设计哲学就是全部由sequence来控制激励的生成,因此一般情况下只在sequence中控制objection。