env yaml - kashyapp1/github_exp GitHub Wiki

Jtag environment yaml

jtag_challenge2_dia

UVMF Environment Packages

  • UVMF uses a separate environment level YAML configuration file to generate the environment level classes.
  • The classes for the environment, its configuration, and sequence are included in the generated environment package.
  • It can optionally include predictor and scoreboard classes.
  • The environment package can be reused when a block level UVMF testbench is being used as part of a subsystem/chip level testbench.
  • The environment config file (JTAG_environment.yaml) is covered the more details.

Syntax:

     uvmf:
     environments:
     env_name:
     agents:
     - initiator_responder: INITIATOR
     name: env_name_agent_a
     type: env_name_a
     - initiator_responder: INITIATOR
     name: env_name_agent_b
     type: env_name_b

image Snippet:

   Fig_1

The snippet shows the UVMF code generator to create an environment with name ‘JTAG_env_pkg’

Tells UVMF code generator to include 1 x Jtag_agent_a and 1 x Jtag_agent_b.

  • name defines the instance name
  • type is the name of the agent given by the user in the interface YAML configuration file

Analysis_components:

Syntax:

    analysis_components:
    - name: env_name_pred
    parameters: []
    type: env_name_predictor
    analysis_exports: []
    analysis_ports: []

image Snippet:

   Fig_2  
  • Analysis_ports defines UVMF code generator to include a component of type jtag_predictor with instance name jtag_pred.
  • This jtag_predictor component has not been defined yet and will be described in a separate YAML configuration file.
  • These allow the user to specify analysis exports & ports to add to the environment class, typically implemented when the block level environment is to be utilized within a larger system level UVM testbench.
  • We don’t need to specify anything here for the jtag testbench.

Syntax:

  config_constraints: []
  config_vars: []
  existing_library_component: 'True'
  hvl_pkg_parameters: []
  non_uvmf_components: []
  parameters: []
  qvip_memory_agents: []    

image Snippet:

     Fig_3  
  • These allow the user to specify environment level configuration variables, configuration constraints and parameters for the environment class.
  • Parameters specified here can be passed down into any of the instantiated agents or other analysis components.
  • We don’t need to specify anything here for the jtag testbench.

Scoreboard

The scoreboards entry allow the user to specify any scoreboard components to be added the environment class. Here we specify the following for jtag testbench • Add a scoreboard component with instance name = jtag_sb
• The class type for the scoreboard = uvmf_in_order_scoreboard. This is a UVMF base library component
• We define the transaction class that the scoreboard will operate on to be jtag_transaction

The subenvs entry allows the user to import other pre-generated UVMF environments, thus creating a hierarchical environment.
Typically this is used when importing QVIP UVMF environments or creating a system level UVMF testbench that is reusing block level UVMF environments We don’t need to specify anything here for the jtag testbench.

Syntax:

   scoreboards:
   - name: env_name_sb
   sb_type: uvmf_in_order_scoreboard
   trans_type: env_name_transaction
   subenvs: []

image snippet:

     Fig_4  

TLM_connections

The tlm_connections entry allows the user to specify a point to point connection between 2 ports/exports

  • The driver entry is the start point.
  • The receiver entry is the end point.
  • Validate is checking, it is optional.

Syntax:

    tlm_connections:
    - driver: env_name_agent_b.monitored_ap
    receiver: env_name_pred.env_name_agent_b_ae
    validate: 'True'
    - driver: env_name_pred.env_name_sb_ap
    receiver: env_name_sb.expected_analysis_export
    validate: 'True'
    - driver: env_name_agent_a.monitored_ap
    receiver: env_name_sb.actual_analysis_export
    validate: 'True'

image snippet:

   Fig_5  

image

  • jtag_agent_b : instance name of agent
  • monitored_ap : fixed name for analysis port on all UVMF agents
  • jtag_pred : instance name of jtag predictor
  • jtag_agent_b_ae : fixed name for predictor analysis export

image

  • jtag_pred : instance name of predictor
  • jtag_sb_ap : fixed name for analysis port on scoreboard [‘_ap’ added to inst name]
  • jtag_sb : instance name of scoreboard
  • expected_analysis_export : fixed name for scoreboard ‘expected’ analysis export

image

  • jtag_agent_a : instance name of agent
  • monitored_ap : fixed name for analysis port on all UVMF agents
  • jtag_sb : instance name of jtag scoreboard
  • actual_analysis_export : fixed name for scoreboard ‘actual’ analysis export