Qual é a diferença entre new () e create () no UVM? Como eles são diferentes dos construtores?


resposta 1:

new () é a função construtora nativa no SystemVerilog e não é específica para UVM. Você precisa usar com classes específicas de SV, como caixa de correio e semáforo.

create () é o método de fábrica usado para construir objetos de classes derivadas de uvm_object e uvm_component ao usar UVM. A função create () tem algumas vantagens, mas é um pouco mais complexa de usar e configurar. Funciona apenas se uma classe tiver sido registrada na fábrica, normalmente usando as macros UVM uvm_component_utils… e uvm_object_utils…. Ao usar create (), é possível substituir o tipo criado no tempo de execução e, assim, criar outro tipo de objeto. Isso não é possível com new ().

A menos que você realmente queira que alguém impeça o uso de substituições de tipo, você pode usar create () por padrão e usar new () se tiver motivos muito bons para fazê-lo ou se estiver criando objetos que não sejam UVM.