uvm_primer programmation orientée objet POO sv ch4-5

ch4 Programmation orientée objet POO

Du chapitre 4 au chapitre 10, nous présenterons du contenu lié à l'oop, n'impliquant pas uvm. Sv
est un langage oop, en particulier lorsque vous utilisez sv pour la vérification,
uvm est également un framework construit sur sv. Cette partie du contenu C'est un base pour comprendre l'uvm derrière.

Sv est en fait plus comme verilog + java; il y a le concept de pointeurs en c ++, qui n'est pas en java et sv;
la mémoire allouée dans cpp doit être récupérée par lui-même, et le système en java et sv récupérera automatiquement la mémoire inutile la gestion.

Avantages de oop

  • Réutiliser le code
  • La maintenabilité du code est meilleure
  • Gestion de la mémoire

réutilisation du code

Oop encapsule les données et les méthodes. Il vous suffit d'appeler ces classes et les méthodes à l'intérieur selon la description du document lorsque vous utilisez l'API. Vous pouvez utiliser la classe précédente extend pour créer des classes plus puissantes.

maintenabilité du code

Si le code qui implémente la même fonction a n copies dans le projet, si vous trouvez qu'il y a un problème, vous devez modifier toutes les n copies. Après le oop, il vous suffit de modifier le code lui-même, et d'autres endroits sont appel de classes ou de méthodes. Le code lui-même est correctement modifié et les autres emplacements utilisant ce code ne poseront aucun problème

classe et extension ch5

struct

C utilise généralement struct pour encapsuler des données

typedef struct {
    
    
   int         length;
   int         width;
} rectangle_struct;

classe

Il n'y a pas seulement des données mais aussi des méthodes pour ces données dans la classe;

  class rectangle;
    int length;
    int width;
    
    function new(int l, int w);
      length = l;
      width  = w;
    endfunction
    
    function int area();
      return length * width;
    endfunction
  endclass

Comment définir une classe et ses méthodes, il existe de nombreux principes ou règles, vous pouvez rechercher des livres sur les modèles de conception pour référence;

Instancier un objet

De plus, sv est responsable de la gestion de la mémoire,
struct lui alloue de la mémoire lorsqu'elle est définie, et la classe doit appeler explicitement la fonction new () afin d'allouer de la mémoire;

  module top_class ;
    rectangle rectangle_h;  //声明句柄
    square    square_h;
    
    initial begin
    //rectangle_h 是实例化出来的 **对象**;
      rectangle_h = new(.l(50),.w(20));  //构造  或者实例化;实例化出来的
      $display("rectangle area: %0d", rectangle_h.area());
      
      square_h = new(.side(50));
      $display("square area: %0d", square_h.area());
      
    end
  endmodule

Un handle est similaire à un handle de mémoire, sauf qu'il n'autorise pas le handle de handle arithmétique est similaire à un
pointeur , sauf qu'il ne peut pas être utilisé pour les opérations de pointeur;

étend la classe

super dit au compilateur d'appeler les données membres et les méthodes de sa classe parent;
super.new () appelle la méthode constructeur dans le rectangle

  class square extends rectangle;
  
    function new(int side);
      //调用父类的new()函数去构造
      super.new(.l(side), .w(side));  //super指的是父类,也就是rectangle
    endfunction
  
  endclass

sommaire

  • définition de classe
  • la classe s'étend
  • Nouveau
  • super

Je suppose que tu aimes

Origine blog.csdn.net/weixin_39060517/article/details/112745673
conseillé
Classement