steveicarus / iverilog

Icarus Verilog
https://steveicarus.github.io/iverilog/
GNU General Public License v2.0
2.82k stars 523 forks source link

SV: IVL_UVM - virtual task call leads to crash #420

Closed svenka3 closed 3 years ago

svenka3 commented 3 years ago

Hi, A crash around task call.

iverilog -DVW_IVLOG_GO2UVM -DIVL_UVM -g2012 -I../../ivl_uvm_src -o vw_ivl_go2uvm.vvp  -f f.t 2>&1 | tee go2uvm_comp.log     
ivl: pform_pclass.cc:50: void pform_start_class_declaration(const vlltype&, class_type_t*, data_type_t*, std::list<PExpr*>*, LexicalScope::lifetime_t): Assertion `type->base_type == 0' failed.
sh: line 1:  1744 Done                    /usr/local/lib/ivl/ivlpp -L -F"/tmp/ivrlg235ec8b65" -f"/tmp/ivrlg35ec8b65" -p"/tmp/ivrli35ec8b65"
      1745 Aborted                 (core dumped) | /usr/local/lib/ivl/ivl -C"/tmp/ivrlh35ec8b65" -C"/usr/local/lib/ivl/vvp.conf" -- -

Code:

package test_pkg;

  class uvm_component; 
    virtual task run_phase ();
    endtask : run_phase 
  endclass : uvm_component

endpackage : test_pkg

module ivl_uvm_test_msg;
  import test_pkg::*;
  uvm_component uc_0;

   initial begin : test
     #100;

     uc_0 = new();
     uc_0.run_phase ();

   end : test

endmodule : ivl_uvm_test_msg
svenka3 commented 3 years ago

Sorry, code is bit more than the above, will close and re-open later with full testcase.