Cili është ndryshimi midis () dhe krijimit () të ri në UVM? Si ndryshojnë ata nga projektuesit?


përgjigje 1:

i ri () është funksioni ndërtues vendas në SystemVerilog dhe nuk është specifik për UVM. Duhet të përdorni me klasa specifike SV si kuti postare dhe semafora.

krijoni () është metoda e fabrikës për krijimin e objekteve nga klasa që janë nxjerrë nga uvm_object dhe uvm_component kur përdorni UVM. Funksioni krijoni () ka disa avantazhe, por është disi më komplekse për t’u përdorur dhe vendosur. Kjo funksionon vetëm nëse një klasë është regjistruar në fabrikë, zakonisht duke përdorur makrot UVM uvm_component_utils… dhe uvm_object_utils…. Kur përdorni krijimin () është e mundur të rishkruani llojin e krijuar në kohën e ekzekutimit dhe kështu të krijoni një lloj tjetër objekti. Kjo nuk është e mundur me (()) të reja.

Nëse me të vërtetë nuk dëshironi që dikush të parandalojë përdorimin e tejkalimeve të tipit, mund të përdorni krijimin () si parazgjedhje dhe të përdorni () të reja vetëm nëse keni një arsye të mirë për të ose nëse krijoni objekte jo-UVM.