谈UVM之sequence-item见解 sequencer特性及应用(下)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
谈UVM之sequence/item见解sequencer特性及应用(下)本文将接着分享sequencer的相关知识,对于sequencer的仲裁特性有几种可选,UVM_SEQ_ARB_FIFO ;UVM_SEQ_ARB_WEIGHTED;UVM_SEQ_ARB_RANDOM ;UVM_SEQ_ARB_STRICT_FIFO等。出其中三种需要特别区分外其它的模式可以满足绝大多数的仲裁需求。
sequencer的仲裁特性及应用在之前我们就谈到了,uvm_sequencer类自建了仲裁机制用来保证多个sequence同时挂载到sequencer时,可以按照规则允许特定的sequence中的item 优先通过。在实际使用中,我们可以通过uvm_sequencer::set_arbitration (UVM_SEQ_ARB_TYPE val)来设置仲裁模式。这里的仲裁模式UVM_SEQ_ARB_TYPE 有下面几种值可以选择:
UVM_SEQ_ARB_FIFO :默认模式。来自于sequences的发送请求,按照FIFO先进先出的方式被依次授权,和优先级没有关系。
UVM_SEQ_ARB_WEIGHTED:不同sequence的发送请求,将按照它们的优先级被随机授权。
UVM_SEQ_ARB_RANDOM :不同的请求会被随机授权,而无视它们的抵达顺序和优先级。
UVM_SEQ_ARB_STRICT_FIFO:不同的请求,会按照它们的优先级以及抵达顺序来依次授权,因此与优先级和抵达时间都有关。
UVM_SEQ_ARB_STRICT_RANDOM:不同的请求,会按照它们最高的优先级被随机授权,与抵达时间无关。
UVM_SEQ_ARB_USER:用户可以自仲裁机制方法user_priority_arbitration()来裁定哪个sequence的请求优先被授权。
在上面的仲裁模式中,与priority有关的模式有UVM_SEQ_ARB_WEIGHTED、UVM_SEQ_ARB_STRICT_FIFO和UVM_SEQ_ARB_STRICT_RANDOM。这三种模式的区别在于,UVM_SEQ_ARB_WEIGHTED的授权会落到各个优先级的请求上面,而