Uvm_monior:所有monitor都要派生子uvm_monitor。Monitor从DUT的pin上接收数据,并且把接收到的数据转换成transaction级别的sequence_item,并把转换后的数据发送给scoreboard,供scoreboard比较。
Uvm_sequencer:所以的sequencer都要派生自uvm_sequencer。其功能1就是组织管理sequence,当driver要求数据时,他就把sequence生成sequence_item转发给driver。
Uvm_scoreboard:一般的scoreboard都要派生自uvm_scoreboard。其功能就是比较reference model和monitor分别发送来的数据,根据比较结果判断DUT是否正确。
Reference model:reference model直接派生自uvm_component。其作用就是模仿DUT,完成与DUT相同的功能,可以直接使用systemverilog的特性,或者可以通过DPI等接口调用其它语言来完成与DUT相同功能。
Uvm_agent:所以agent都要派生自uvm_agent。只是把driver和monitor封装在一起,根据参数来决定是只实例化monitor还是要实例化driver和monitor。
Uvm_env:所有env都要派生自uvm_env。把验证平台固定不变的component封装在一起。这样在要跑不同case时,只要在case中实例化一个env就可以。
Uvm_test:所有的case都要派生自uvm_test。Case之间差异很大,所以从uvm_test派生出来的类各不同。任何一个派生的case都要实例化env,只有这样才能正常传数。
Uvm_sequence:所有的sequence要从uvm_sequenc派生一个。Sequence就是sequence_item的组合。Sequence和sequencer直接打交道。当driver向sequencer索要数据时,sequencer会转而向sequence要数据,当sequence发现有sequence_item时,则将数据传输过来。
Config:所有config一般直接从uvm_object派生。Config的主要功能就是规范验证平台的行为方式。
Uvm_phase:派生自uvm_object,其作用是控制uvm_component的行为方式。
发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/233488.html原文链接:https://javaforall.net