@pyuvm.test() on a class, uvm_test_top | #[rustdv::test] on a struct; the root is named after your test | 23 |
raise_objection()/drop_objection() | ctx.raise_objection(..) → RAII ObjectionGuard; drop releases | 23 |
uvm_component(name, parent) tree | children are struct fields; #[derive(Component)]; paths derived | 24 |
| the nine phases, pyuvm’s traversal order | the nine phases, same order: build, connect, … final_phase | 24 |
self.logger, [uvm_test_top.comp] | ctx.info(..), same bracket format, path supplied by the walk | 26 |
ConfigDB().set/get, wildcards, globals | ConfigDb::set/get — same paths, same globs, Result answers | 25, 27 |
except UVMConfigItemNotFound | match on ConfigError::NotFound { .. } | 28 |
metaclass registration + create() | #[derive(Component)] registers; Foo::create_comp() | 21, 29 |
set_type_override_by_type | Factory::set_type_override::<A, B>() (also by name, by instance) | 29, 30 |
| TLM-1 put/get/peek port classes | PutPort/GetPort/PeekPort, wired export-to-port through a TlmFifo | 31 |
UVMTLMConnectionError (lazy, at first use) | elaboration sweep names every unwired port before run | 31 |
uvm_analysis_port.write() | PublishPort<T>::write(&T) through an AnalysisBus hub | 32 |
uvm_subscriber (one write per class) | a Subscriber<T> impl per stream — two streams, two impls | 32, 34 |
uvm_tlm_analysis_fifo | absent — the subscriber owns its storage | 32 |
uvm_object do_copy/do_compare/__str__ | #[derive(Clone, PartialEq, Debug)] + hand-written Display | 35 |
copy(other) / clone() | clone_from(&mut self, src) / clone() | 35 |
uvm_sequence.body() | impl Sequence — type Req/type Rsp, async fn body(ctx) | 36 |
start_item/finish_item | ctx.start_item(&mut req) / ctx.finish_item(req) → ticket | 36 |
seq_item_port.get_next_item() | port.get_next_item().await → SeqItem<REQ> | 36 |
item_done() / item_done(rsp) + set_id_info | item_done(None) / item_done(Some(rsp)) — auto-tagged | 36, 38 |
get_response() | get_response(Some(ticket)) / try_get_response — in order or by ticket | 37, 38 |
(no pyuvm counterpart) try_next_item | try_next_item() → Option — the UVM’s non-blocking accept, kept | 37 |
seq.start(seqr) / start(None) for virtual | seq.start(&seqr) / start_virtual() | 36, 39 |
is_active int from ConfigDB | Active enum from the ConfigDb; a passive env skips building the driver | 40 |