UVM中的類包括:基類(base)------------uvm_void/uvm_object/uvm_transaction/uvm_root/uvm_phase/uvm_port_base
報告(reporting)--------uvm_report_object/uvm_report_handler/uvm_report_server/uvm_report_catcher
Factory---------uvm_*_register/uvm_factory
配置(config)------uvm_resource/uvm_resoure_db/uvm_config_db
sequencer--------uvm_sequencer_base/uvm_sequencer_param/uvm_squencer/uvm_push_sequencer
sequence--------uvm_sequence_item/uvm_sequence_base/uvm_sequence
sychronization------uvm_event/uvm_event_callback/uvm_barrier/uvm_objection/uvm_heartbeat
containers----------uvm_pool/uvm_queue
TLM
component--------uvm_component/uvm_callback/uvm_test/uvm_env/uvm_agent/uvm_monitor/uvm_scoreboard/
uvm_driver/uvm_push_driver/uvm_random_stimulus/uvm_subscriber/comparators
Reg model
Macro
Commamd Line
uvm_event/uvm_pool/uvm_queue完成對SV中event, queue, mailbox的封裝,實現tlm的通信;
uvm_source利用uvm_pool完成factory機制的實現,實現重載和config_db;
uvm_callback實現callback的基類;
uvm_phase/uvm_objection實現uvm中phase的控制;
uvm_sequence/uvm_sequencer實現blueprint的環境設置;
1)uvm_void(virtual)---一個沒有member和function的純虛類。所有class的基類。
2)uvm_object(virtual)---data和component的基類,定義了一系列常用操作
virtual function:get_name/get_full_name/get_inst_id/do_copy/create
function:copy/compare/pack/pack_bytes
3)uvm_transaction(virtual)------variable:events-----event pool中為該transaction instance的event
begin_event/end_event
function:get_event_pool/set_initiator(initiator of this transaction)/get_initiator
is_active
4)uvm_root------所有uvm的潛在top-level,同時控制整個phase的執行。
virtual methods:run_test(+testname)或者cmd中加+UVM_TESTNAME=
function:print_topology/set_timeout
variable:uvm_top------const uvm_root uvm_top = uvm_root::get()
5)uvm_phase------用戶可以extend自己的phase,基類(uvm_task_phase/uvm_topdown_phase/uvm_bottomup_phase)
(build phase是topbottom phase,connect是bottomtop phase)
virtual function:raise_objection/drop_objection/ exec_func/exec_task(CB)
function:jump
(new的時候,會有uvm_objection的類型傳遞)
uvm_factory用來創建UVM中的object和component,通過typedef和macro invocation來實現。
6)uvm_component_registry#(T,Tname)--------virtual function:get_type_name
static function:create/set_type_override/set_inst_override
7)uvm_object_registry#(T,Tname)--------virtual function:get_type_name
static function:create/set_type_override/set_inst_override
8)uvm_factory--------function:set_inst_override_by_type/set_inst_override_by_name/
set_type_override_by_type/set_type_override_by_name/
create_object_by_type/create_component_by_type/
create_object_by_name/create_component_by_name/
Configuration和Resource Class,提供一個database,供讀寫。通過queues的方式,可以保存scalar/class handle/
queues/list/virtual interface的結構,保存三部分內容name_table, type_table, set_of scope(通過expression實現)
uvm_resource_db:較低水平的resource database
uvm_config_db:較高水平的resource database,提供configuration的interface
9) virtual class uvm_resource_base--------task:wait_modified()
function:set_scope()
10)uvm_resource_pool--------static function:get()
funciton:set()/set_override()/set_name_override()/set_type_override()
lookup_name()/get_by_name()
11)uvm_resoure #(T)-----------function: read/write()/set/get_by_name/get_by_type
12)uvm_resoure_db #(T)-----------function:/set/get_by_name/get_by_type
13)uvm_config_db #(T)-----------static function:get()/set()/exist()/wait_modified()
uvm_event對SV中的event類型的一次封裝:
14)uvm_event---------virtual task wait_on/wait_off/wait_trigger
virtual function reset/add_callback
15)uvm_event_callback(virtual)-------virtual function pre_trigger/post_trigger(uvm_event e, uvm_object data = null)
16)uvm_barrier-------virtual task wait_for()
virtual function reset()/set_threshold/get_threshold/cancel
uvm_objection的class,提供end_of_test的機制。
17)uvm_objection------virtual function raise_objection/drop_objection/raised/dropped/set_drain_time
Container class,針對SV中的queue和associative array做的封裝。
18)uvm_pool #(type KEY = int, T = uvm_void)-----------get/add/num/delete/first/last/nect/prev
19)uvm_queue #(T)