2013年6月25日 星期二

UVM notes 2



  • UVM reference flow
  • UVM tutorial
    • http://cluelogic.com/tag/vmm/UVM_AGENT
  • virtual sequencer
    • handle each sub sequencers when the platform contains multi sequences to drive the same DUT. 
    • avoid race conditions,  transaction sequence, like multi threads system
    •  ex:
      •       jb_seq1 = same_flavored_jelly_beans_sequence::type_id::create( .name( "jb_seq1" ), .contxt( get_full_name() ) );
      •       jb_seq2 = same_flavored_jelly_beans_sequence::type_id::create( .name( "jb_seq2" ), .contxt( get_full_name() ) );
      •       case ( recipe )
      •         LEMON_MERINGUE_PIE: begin
      •            jb_seq1.flavor          = jelly_bean_transaction::LEMON;
      •            jb_seq2.flavor          = jelly_bean_transaction::COCONUT;
      •            jb_seq1.num_jelly_beans = 2;
      •            jb_seq2.num_jelly_beans = 2;
  • configure
    • set  register , interface from top to down
      • test_lib -> test_env -> test_cfg -> test_agent ... 
    • ex:
    •    initial begin
    •       uvm_config_db#( virtual jelly_bean_if )::set
    •          ( .cntxt( null ), .inst_name( "uvm_test_top" ), .field_name( "jb_if1" ), .value( jb_if1 ) );
    •       uvm_config_db#( virtual jelly_bean_if )::set
    •          ( .cntxt( null ), .inst_name( "uvm_test_top" ), .field_name( "jb_if2" ), .value( jb_if2 ) );
    •       run_test();
    •    end
  • register abstract
    • check register r/w limitation(only r/w), fields check, width check, coverage, assertion
    • ex:
    •       flavor = uvm_reg_field::type_id::create( "flavor" );
    •       flavor.configure( .parent                 ( this ),
    •                         .size                   ( 3    ),
    •                         .lsb_pos                ( 0    ),
    •                         .access                 ( "WO" ),
    •                         .volatile               ( 0    ),
    •                         .reset                  ( 0    ),
    •                         .has_reset              ( 1    ),
    •                         .is_rand                ( 1    ),
    •                         .individually_accessible( 0    ) );

  • assertion

  • functional coverage

沒有留言:

張貼留言