Quelle est la différence entre new () et create () dans UVM? En quoi sont-ils différents des constructeurs?


Réponse 1:

new () est la fonction constructeur native de SystemVerilog et n'est pas spécifique à UVM. Vous devez utiliser avec des classes spécifiques à SV comme la boîte aux lettres et le sémaphore.

create () est la méthode d'usine utilisée pour construire des objets de classes dérivées de uvm_object et uvm_component lors de l'utilisation d'UVM. La fonction create () présente certains avantages mais est un peu plus complexe à utiliser et à configurer. Cela ne fonctionne que si une classe a été enregistrée auprès de l'usine, en utilisant normalement les macros UVM uvm_component_utils… et uvm_object_utils…. Lors de l'utilisation de create (), il est possible de remplacer le type créé lors de l'exécution et donc de créer un autre type d'objet. Ce n'est pas possible avec new ().

À moins que vous ne vouliez vraiment que quelqu'un empêche l'utilisation des remplacements de type, vous pouvez utiliser create () par défaut, et n'utiliser new () que si vous avez de très bonnes raisons de le faire ou si vous créez des objets non UVM.