def check_phase(self, phase): super().check_phase(phase) server = UVMCoreService.get().get_report_server() errors = server.get_severity_count(UVM_ERROR) if errors > 0: uvm_fatal("FOUND ERRORS", "There were " + str(errors) + " UVM_ERRORs in the test")
async def initial_begin(dut): cs_ = UVMCoreService.get() env = tb_env("env") print(str(dir(simulator))) print(str(dir(dut))) vif = apb_if(dut) uvm_hdl.set_dut(dut) #root = simulator.get_root_handle() #print(str(dir(root))) cocotb.fork(Clock(vif.clk, 10, "NS").start()) svr = cs_.get_report_server() svr.set_max_quit_count(10) seq_name = [] if sv.value_plusargs("UVM_SEQUENCE=%s", seq_name): seq = UVMUtils.create_type_by_name(seq_name[0], "tb") if seq is None: uvm_fatal( "NO_SEQUENCE", "This env requires you to specify the sequence to run using UVM_SEQUENCE=<name>" ) env.seq = seq UVMConfigDb.set(env, "apb", "vif", vif) UVMConfigDb.set(None, "DUT_REF", "dut", dut) await run_test()
async def test_comparators(dut): cs = UVMCoreService.get() svr = cs.get_report_server() await run_test() num_errors = svr.get_severity_count(UVM_ERROR) if num_errors != 1: raise Exception("There were {} uvm_errors, exp 1".format(num_errors))
async def initial_begin(dut): t = top("top", None) # Randomize all of the delays t.randomize() # cast to 'void' removed await run_test() if sv.realtime("NS") != test_duration: uvm_fatal("TIME_ERR", "Exp: {}, Got: {}".format(test_duration, sv.realtime("NS"))) svr = UVMCoreService.get().get_report_server() num_errors = svr.get_severity_count(UVM_ERROR) if num_errors > 0: uvm_fatal("SERVER_HAD_ERRORS", "Num UVM_ERRORS: {}".format(num_errors))
def run_phase(self, phase): cs_ = UVMCoreService.get() env = None # tb_env phase.raise_objection(self) arr = [] if sv.cast(arr, uvm_top.find("env$"), tb_env): env = arr[0] arr = [] vif = None if UVMConfigDb.get(env, "apb", "vif", arr): vif = arr[0] else: uvm_fatal("NO_VIF", "Could not find apb_vif from config_db") # dut_reset_seq rst_seq rst_seq = dut_reset_seq.type_id.create("rst_seq", self) rst_seq.vif = vif yield rst_seq.start(None) env.model.reset() # uvm_cmdline_processor opts = UVMCmdlineProcessor.get_inst() seq = None # uvm_reg_sequence factory = cs_.get_factory() seq_name = [] opts.get_arg_value("+UVM_REG_SEQ=", seq_name) seq_name = seq_name[0] seq = factory.create_object_by_name(seq_name, self.get_full_name(), "seq") #print("Created obj is " + str(created_obj)) #if not sv.cast(seq, created_obj, uvm_reg_sequence) or seq is None: # uvm_fatal("TEST/CMD/BADSEQ", "Sequence " + seq_name + " is not a known sequence " + str(seq)) seq.model = env.model UVMResourceDb.set("REG::" + env.model.DMA_RAM.get_full_name() + ".*", "NO_REG_TESTS", 1, self) for i in range(len(env.model.SESSION)): UVMResourceDb.set( "REG::" + env.model.SESSION[i].get_full_name() + ".*", "NO_REG_TESTS", 1, self) for i in range(len(env.model.TABLES)): UVMResourceDb.set( "REG::" + env.model.TABLES[i].get_full_name() + ".*", "NO_REG_TESTS", 1, self) yield seq.start(None) phase.drop_objection(self)
async def test_reg_fifo(dut): cs_ = UVMCoreService.get() test = FIFORegTest("test") svr = cs_.get_report_server() svr.set_max_quit_count(10) vif = apb_if(dut) UVMConfigDb.set(test, "apb", "vif", vif) UVMConfigDb.set(None, "DUT_REF", "dut", dut) cocotb.fork(Clock(vif.clk, 10, "NS").start()) await run_test(dut=dut) num_errors = svr.get_severity_count(UVM_ERROR) if num_errors > 0: raise Exception("Test failed. Got {} UVM_ERRORs".format(num_errors)) num_warnings = svr.get_severity_count(UVM_WARNING) if num_warnings > 0: raise Exception( "Test failed. Got {} UVM_WARNINGs".format(num_warnings))
async def initial_begin(dut): cs_ = UVMCoreService.get() UVMReg.include_coverage("*", UVM_CVR_ALL) c = Clock(dut.clk, 10, 'ns') test = tb_test("test") svr = cs_.get_report_server() svr.set_max_quit_count(10) UVMConfigDb.set(None, "", "dut", dut) cocotb.fork(c.start()) await run_test() def my_log(msg): uvm_info("COV_RPT", msg, UVM_LOW) coverage_db.report_coverage(my_log, bins=False) coverage_db.export_to_xml("results_coverage.xml")