sequence基础
读《UVM实战》书籍笔记
sequence的启动与执行
-
同一sequencer上启动多个sequence (交替运行)
-
使用start任务直接启动
-
使用default_sequence启动
-
当一个sequence启动后会自动执行sequence的body任务。其实,除了body外,还会自动调用sequence的pre_body与post_body
sequence的仲裁机制
uvm_do_pri及uvm_do_pri_with改变所产生的transaction的优先级 `uvm_do_pri(m_trans, 100)
SEQ_ARB_FIFO。严格遵循先入先出的顺序,而不会考虑优先级。
SEQ_ARB_WEIGHTED是加权的仲裁;SEQ_ARB_RANDOM是完全随机选择;SEQ_ARB_STRICT_FIFO是严格按照优先级的
SEQ_ARB_STRICT_RANDOM是严格按照优先级的,当有多个同一优先级的sequence时,随机从最高优先级中选择
SEQ_ARB_USER则是用户可以自定义一种新的仲裁算法
lock 当其前面的所有请求被处理完毕后,sequencer就开始响应这个lock请求,此后sequencer会一直连续发送此sequence的transaction,直到unlock操作被调用
grab操作也用于暂时拥有sequencer的所有权,只是grab操作比lock操作优先级更高
可以通过重载is_relevant函数来使sequence失效