[UVM] La integración de RAL a agente

                            La integración de RAL a agente

 

       Una vez después de la aplicación RAL, RAL tiene que estar conectado con el Agente de autobús. En esta sección se describe la conexión de RAL con el secuenciador y el monitor del autobús.

 

La integración de cadenas secuenciales de autobuses

   Todos los enfoques de integración requieren un modelo de registro para ser configurado con uno o más secuenciadores de autobuses.

   El modelo de registro se convierte en una propiedad de un subtipo uvm_reg_sequence que ejecuta

  • Directamente en un secuenciador de autobuses, si sólo hay una interfaz de bus que proporciona acceso a los registros DUT
  • Como una secuencia virtual, si hay una o más interfaces de bus que proporcionan acceso a los registros DUT;
  • Como una secuencia de registro consecutivo

La integración del modelo de registro con un monitor de bus

   Por defecto, el modelo de registro actualiza su copia espejo del registro valora de forma implícita. Cada vez que un registro se lee o escribe a través del modelo de registro, su valor se actualiza espejo.

   Si otros agentes en la interfaz de bus realizan leer y transacciones de escritura fuera del contexto del modelo de registro, el modelo de registro debe aprender de estas operaciones de autobuses para actualizar su espejo en consecuencia.

  • La integración se lleva a cabo mediante instanciar primero un componente uvm_reg_predictor
  • componente uvm_reg_predictor se conecta entonces al puerto de análisis del monitor de bus
class tb_env extends uvm_env;
  reg_model                     regmodel;
  uvm_reg_predictor#(ahb_trans) ahb2reg_predictor;
  reg2ahb_adapter               reg_adapter;
  ahb_agent                     ahb;
 
  virtual function void build_phase(uvm_phase phase);
    ahb2reg_predictor = new(“ahb2reg_predictor”, this);
  endfunction
 
  virtual function void connect_phase(uvm_phase phase);
    if (regmodel.get_parent() == null) begin
      reg_adapter = reg2ahb_adapter::type_id::create(“reg_adapter”,,get_full_name());
      ...
      ahb2reg_predictor.map     = regmodel.AHB;
      ahb2reg_predictor.adapter = reg_adapter;
      ahb.monitor.ap.connect(ahb2reg_predictor.bus_in);
    end
    ...
  endfunction
  ...
endclass

 

Ha publicado 185 artículos originales · alabanza 118 won · vistas 40000 +

Supongo que te gusta

Origin blog.csdn.net/gsjthxy/article/details/105298816
Recomendado
Clasificación