尧图建网站 尧图建网站 YAOTU WEB BUILD 免费咨询
ARTICLE DETAIL

资讯详情

深耕网站建设与建站编程的一线实战洞察。

UVM sequence 执行流程

UVM sequence 执行流程 在 UVM 验证环境里,sequence 是“交易生成器”,但写好一个 sequence 之后,它究竟是怎么跑起来的?调用了seq.start(sqr)之后,UVM 内部经历了哪些“仪式”和“暗箱操作”?start()之后发生了什么?start(sqr)像是一个发令枪。UVM 会先调用pre_start()(一般很少重载),然后正式进入task start()的流程。核心是执行pre_body()→body()→post_body()三段式。其中body()是用户定义的事务生成主循环,而pre_body()和post_body()是可供重载的钩子,常用于开关记录、配置更新或全局状态重置。注意,只有将 sequence 设为set_automatic_phase_handling(0)时,pre/post_body才由用户自己调用,否则 UVM 会在 phase 上下文中自动执行——但大多数时候我们直接默认。在body()内部,每产生一条 transaction,都需要经过start_item → randomize → finish_item三步。这三步不是摆设:start_item向 sequencer 申请仲裁,获取总线访问权;randomize完成字段随机化;finish_item将事务交给 sequencer 的 driver,并等待 driver 返回响应(如果是双向握手)。uvm_do宏的“三步走”
返回列表