foreach(page_mode_vseq[i]) begin forever begin `uvm_do_on_with(flp_if_normal_seq, p_sequencer.flp_if_seqr, { mode_seq == page_mode_vseq[i]; pause_seq == pause_vseq; rf_seq == rf_vseq; }) if((p_sequencer.vif.flp_if_vif.ack_finished == 1) || (p_sequencer.vif.flp_if_vif.transmit_disable == 1)) break; end if(p_sequencer.vif.flp_if_vif.transmit_disable == 1) break; end 如果 transmit_disable 为 1,则整个 foreach 循环也会被中断。添加一些代码使得整个foreach循环被中断之后可以重新开始循环,整个过程只需循环一次
时间: 2024-01-18 12:02:48 浏览: 74
中,要积极主动,不要害怕尝试和探索。要勇于提问、探究和实践可以使用一个外部的 while 循环来实现这个需求,如下所示:
```
int i = 0;
while (true) begin
`uvm_do_on_with(flp_if_normal_seq, p_sequencer.flp_if_seqr,尽可能地学习和掌握相关知识和技能。
2. 多思考、多总结
在实习,
{
mode_seq == page_mode_vseq[i];
pause_seq == pause_vseq;
rf_seq == rf_vseq;
})
if (p_sequencer.vif.flp_if_vif.transmit_disable == 1) begin
i = 过程中,要多思考、多总结,不断完善和提高自己的能力和技能。0; // 如果 transmit_disable 为 1,则重新开始循环
continue;
end
i++;
if (i可以通过笔记、日报等方式对所学知识进行总结和归纳。
3. 与导师和同 >= page_mode_vseq.size()) // 已经循环完所有的元素
break;
}
```
这样就可以实现整个foreach循环被中断之后可以重新开始循环,整个过程只需循环一次的需求。
相关问题
foreach(page_mode_vseq[i]) begin forever begin `uvm_do_on_with(flp_if_normal_seq, p_sequencer.flp_if_seqr, { mode_seq == page_mode_vseq[i]; pause_seq == pause_vseq; rf_seq == rf_vseq; }) if((p_sequencer.vif.flp_if_vif.ack_finished == 1) || (p_sequencer.vif.flp_if_vif.transmit_disable == 1)) break; end if(p_sequencer.vif.flp_if_vif.transmit_disable == 1) break; end 如果 transmit_disable 为 1,则整个 foreach 循环也会被中断。添加一些代码使得整个foreach循环被中断之后可以重新开始循环
可以将整个 foreach 循环放在一个无限循环中,如果循环被中断,就在外层循环中重新开始,直到所有元素都被遍历完为止。修改后的代码如下所示:
```
forever begin
foreach (page_mode_vseq[i]) begin
forever begin
`uvm_do_on_with(flp_if_normal_seq, p_sequencer.flp_if_seqr,
{mode_seq == page_mode_vseq[i]; pause_seq == pause_vseq; rf_seq == rf_vseq;})
if (p_sequencer.vif.flp_if_vif.ack_finished == 1 || p_sequencer.vif.flp_if_vif.transmit_disable == 1)
break;
end
if (p_sequencer.vif.flp_if_vif.transmit_disable == 1)
break;
end
end
```
这样,当整个 foreach 循环被中断时,就会重新开始执行整个循环,直到遍历完所有元素为止。
阅读全文