Jump to content

Search the Community

Showing results for tags 'uvm_do_with'.



More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Accellera Systems Initiative
    • Information
    • Announcements
    • In the News
  • SystemC
    • SystemC Language
    • SystemC AMS (Analog/Mixed-Signal)
    • SystemC TLM (Transaction-level Modeling)
    • SystemC Verification (UVM-SystemC, SCV)
    • SystemC CCI (Configuration, Control & Inspection)
    • SystemC Datatypes
  • UVM (Universal Verification Methodology)
    • UVM 2017 - Methodology and BCL Forum
    • UVM SystemVerilog Discussions
    • UVM Simulator Specific Issues
    • UVM Commercial Announcements
    • UVM (Pre-IEEE) Methodology and BCL Forum
    • UVM 1.2 Public Review
  • Portable Stimulus
    • Portable Stimulus Pre-Release Discussion
    • Portable Stimulus 1.0
  • IP Security
    • IP Security Assurance Whitepaper Discussion
  • IP-XACT
    • IP-XACT Discussion
  • IEEE 1735/IP Encryption
    • IEEE 1735/IP Encryption Discussion
  • OCP (Open Core Protocol)
  • UCIS (Unified Coverage Interoperability Standard)
  • Commercial Announcements
    • Announcements

Categories

  • SystemC
  • UVM
  • UCIS
  • IEEE 1735/IP Encryption

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


AIM


MSN


Website URL


ICQ


Yahoo


Jabber


Skype


Location


Interests


Biography


Location


Interests


Occupation


Company

Found 2 results

  1. Following is the sequence code class basic_sequence extends from uvm_sequence(#sequence_item); sequence_item item; task body() fp1 =fscanf("abc.txt", addr, data); `uvm_do_with(item,{ item.addr = addr; item.data = data; }); endtask endclass I have constrained addr and data from file reading data. It is not happening with the above code. data_item is getting a random value. I have written a user-defined task to solve this problem like below task do_rw(int addr, int data); begin item = sequence_item::type_id::create("item",,get_full_name()); item.wr_adr.rand_mode(0); item.wr_dat.rand_mode(0); item.wr_adr = addr; item.wr_dat = data; start_item(item); randomize(if_item); finish_item(item); end endtask inplace of uvm_do_with call uder defined do_rw task like below fp1 = fscanf("abc.txt", addr, data); while(!eof(fp1) { do_rw(addr, data); } This will work. I used above solution to work. I really don't understand why uvm is not supporting it with uvm_do_with. any answers for fit?? Thanks, Satya
  2. Hi, all I have met such a problem, when i use uvm_do_with to start item, then it is stuck at uvm_do_with. The hierarchy struct of the sequence is v_seq |- cfg_seq |- sub_seq |- slv_seq The hierarchy struct of the sequencer is v_sqr |- cfg_sqr |- sub_sqr |- slv_sqr pieces of code in test.sv task run_phase(uvm_phase phase); //uvm_config_db#(uvm_phase)::set(this, "*", "starting_phase", phase); for (int i = 0; i < num; i++) begin fork begin env.v_seq[i].starting_phase = phase; env.v_seq[i].start(env.subenv[i].v_sqr); end join end //set a drain-time for the environment if desired phase.phase_done.set_drain_time(this, 50); endtask : run_phase pieces of code in v_seq virtual task body() cfg_seq.start(p_sequencer.cfg_sqr, this); fork begin : sub_seq // thread1 sub_seq.start(p_sequencer.sub_sqr, this); end //begin : slave_seq // thread2 // slv_seq.start(p_sequencer.slv_sqr, this); //end join endtask ... // declare vsequencer as the p_sequencer of vsequence `uvm_declare_p_sequencer(vsequencer) pieces of code in sub_seq virtual task body(); `uvm_info(get_type_name(),$sformatf("%0s starting...", get_sequence_path()), UVM_LOW) repeat(10) begin `uvm_do_with(req, { req.addr == `CFG_ADDR; req.req_typ == MWr; }) get_response(rsp); end endtask : body pieces of code in v_sqr class vsequencer extends uvm_sequencer; ... function void build_phase(uvm_phase phase); super.build_phase(phase); // instantiates sequencers and config_db cfg_sqr = config_sequencer::type_id::create("cfg_sqr", this); sub_sqr = sub_sequencer::type_id::create("sub_sqr", this); slv_sqr = slave_sequencer::type_id::create("slv_sqr", this); endfunction : build_phase ... endclass: vsequencer I find that it is stuck at line m_wait_for_arbitration_completed(req_s.request_id); of task wait_for_grant() in file uvm_sequencer_base.svh. Could anybody tell me the reason? Thanks in advance!
×
×
  • Create New...