Kakšna je razlika med novim () in ustvarjanjem () v UVM? V čem se razlikujejo od konstruktorjev?


Odgovor 1:

new () je naravna funkcija konstruktorja v SystemVerilogu in ni specifičen za UVM. Uporabljati morate s SV-specifičnimi razredi, kot sta nabiralnik in semafor.

create () je tovarniška metoda, ki se uporablja za gradnjo predmetov razredov, ki izhajajo iz uvm_object in uvm_component pri uporabi UVM. Funkcija create () ima nekaj prednosti, vendar je uporaba in nastavitev nekoliko bolj zapletena. Deluje le, če je bil v tovarni registriran razred, običajno z uporabo makrov UVM mak uvm_component_utils… in uvm_object_utils…. Pri uporabi create () je možno v času izvajanja preglasiti ustvarjeni tip in tako ustvariti drugo vrsto predmeta. Z novim () to ni mogoče.

Če res ne želite, da bi kdo preprečil uporabo preglasitev vrst, lahko uporabite default () privzeto in uporabite novo () samo, če imate zelo dober razlog za to ali če ustvarjate predmete, ki niso UVM.