Пример #1
0
 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")
Пример #2
0
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()
Пример #3
0
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))
Пример #4
0
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))
Пример #5
0
    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)
Пример #6
0
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))
Пример #7
0
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")