coverify / euvm

Embedded UVM (D Language port of IEEE UVM 1.0)
Apache License 2.0
30 stars 14 forks source link

uvm_severity Error #27

Open SurbhiSachdeva opened 8 years ago

SurbhiSachdeva commented 8 years ago

While running this program error exists for uvm_severity. Compilation errors are listed beneath the code.

import esdl; import uvm; import std.stdio;

class test_root: uvm_root { mixin uvm_component_utils; }

class TestBench: RootEntity { uvm_root_entity!(test_root) tb; }

bool pass = 1;

class my_catcher: uvm_report_catcher { byte sev[uvm_severity]; uvm_severity s;

override action_e do_catch() { s = uvm_severity(get_severity());

// if(get_client() == uvm_coreservice.get_root()){ //return THROW; // } sev[s] ++;

writeln("%0t: got severity %d for id %s",getRootEntity.getSimTime(), this.get_severity(), get_id());

if(getRootEntity.getSimTime() <10) { if(s != UVM_INFO) { writeln("**\ UVM TEST FAILED expected UVM_INFO but got %d", this.get_severity()); pass =0; } }

else if(getRootEntity.getSimTime() <20){ if(s != UVM_WARNING) { writeln("**\ UVM TEST FAILED expected UVM_WARNING but got %s", this.get_severity()); pass =0; } }

else if(getRootEntity.getSimTime() <30) { if(s != UVM_ERROR) { writeln("*\ UVM TEST FAILED expected UVM_ERROR but got %s", this.get_severity()); pass=0; } }

else if(getRootEntity.getSimTime() <40) { if(s != UVM_FATAL) { writeln("*\ UVM TEST FAILED expected UVM_FATAL but got %s", this.get_severity()); pass=0; } }

return CAUGHT; } }

class test: uvm_test { mixin uvm_component_utils; my_catcher ctchr;

this(string name, uvm_component parent){ super(name, parent);

ctchr = new my_catcher; }

override void run_phase(uvm_phase phase) {

phase.raise_objection(this); uvm_report_cb.add(null,ctchr);

set_all_severities(UVM_INFO); try_all_severities();

wait(15);

set_all_severities(UVM_INFO); try_all_severities();

wait(10); set_all_severities(UVM_WARNING); try_all_severities();

wait(10);

set_all_severities(UVM_ERROR); try_all_severities();

wait(10);

set_all_severities(UVM_FATAL); try_all_severities();

phase.drop_objection(this); }

override void report() { if(ctchr.sev.length != 4) { writeln("* UVM TEST FAILED Expected to catch four different severities, but got %0d instead _", ctchr.sev.length); pass = 0; } foreach(x;ctchr.sev) if(ctchr.sev[x] != 8) { uvmseverity s = x; { writeln("** UVM TEST FAILED Expected to catch 8 messages of type %s, but got %0d instead ***", s.to!string, ctchr.sev[x]); pass = 0;

} }

if (pass){
  writeln("** UVM TEST PASSED **\n");}

}

void set_all_severities(uvm_severity sev) { set_report_severity_override(UVM_INFO, sev); set_report_severity_override(UVM_WARNING, sev); set_report_severity_override(UVM_ERROR, sev); set_report_severity_override(UVM_FATAL, sev); }

void try_all_severities() { uvm_info("INFO1", "first info message", UVM_NONE); uvm_warning("WARNING1", "first warning message"); uvm_error("ERROR1", "first error message"); uvm_fatal("FATAL1", "first fatal message");

uvm_info("INFO2", "second info message", UVM_NONE); uvm_warning("WARNING2", "second warning message"); uvm_error("ERROR2", "second error message"); uvm_fatal("FATAL2", "second fatal message"); } }

void main(string[] argv) { TestBench tb = new TestBench; tb.multiCore(0, 0); tb.elaborate("tb", argv); tb.simulate(); }

test.d(161): Error: function uvm.base.uvm_report_object.uvm_report_object.set_report_severity_override (uvm_severity_type cur_severity, uvm_severity_type new_severity) is not callable using argument types (uvm_severity_type, byte) test.d(162): Error: function uvm.base.uvm_report_object.uvm_report_object.set_report_severity_override (uvm_severity_type cur_severity, uvm_severity_type new_severity) is not callable using argument types (uvm_severity_type, byte) test.d(163): Error: function uvm.base.uvm_report_object.uvm_report_object.set_report_severity_override (uvm_severity_type cur_severity, uvm_severity_type new_severity) is not callable using argument types (uvm_severity_type, byte) test.d(164): Error: function uvm.base.uvm_report_object.uvm_report_object.set_report_severity_override (uvm_severity_type cur_severity, uvm_severity_type new_severity) is not callable using argument types (uvm_severity_type, byte)