Embalaje e integración de un modelo de Registro
一, envasado de un Modelo Registro
Se recomiendan las siguientes prácticas, pero no es obligatorio.
- Tipos de bloques, y todo el registro, registro de archivo y tipos de memoria que requieren, deben estar ubicados en paquetes separados
- Registro, archivos de registro, y la memoria tipos compartidos por más de un tipo de bloque deben estar ubicados en paquetes separados
- Un archivo de cabecera, con todas las declaraciones de importación necesarios para utilizar el modelo de registro, debe generarse
- Un método largo build () se puede dividir en varias, más cortos sub-métodos. Los sub-métodos serán declaradas local y llamados por el método de aumento ()
一, La integración de un modelo de Registro
- Un modelo de registro debe estar integrado con el agente bus
- La integración con el agente bus sólo debe realizarse en bloques de raíces
- bloques de raíces modelar todo el DUT y ellos son los únicos que tienen acceso y conocimiento de la dirección de maps.ie visible desde el exterior en el entorno del banco de pruebas
class tb_env extends uvm_env;
reg_model regmodel;
subblk_env subblk;
virtual function void build_phase(uvm_phase phase);
if (regmodel == null) begin
regmodel = reg_model::type_id::create(“regmodel”, this);
regmodel.build();
regmodel.lock_model();
end
subblk = subblk_env::type_id::create(“subblk”, this);
subblk.regmodel = regmodel.subblk;
endfunction
endclass