def test_type_covergroup_two_coverpoints(self): db_creator = DbCreator() db_creator.dummy_test_data() inst = db_creator.dummy_instance() db_creator.create_covergroup( inst, "cp_t", dict(coverpoints=dict( a_cp=dict(bins=[ ("b1", 1), ("b2", 1), ("b3", 0), ("b4", 0), ]), b_cp=dict(bins=[ ("b1", 0), ("b2", 0), ("b3", 0), ("b4", 0), ]), ))) report = CoverageReportBuilder.build(db_creator.db) self.assertEqual(1, len(report.covergroups)) self.assertEqual(2, len(report.covergroups[0].coverpoints)) self.assertEqual(50.0, report.covergroups[0].coverpoints[0].coverage) self.assertEqual(0.0, report.covergroups[0].coverpoints[1].coverage) self.assertEqual(25.0, report.covergroups[0].coverage)
def get_ucis_report(self): covergroups = CoverageRegistry.inst().covergroup_types() db = MemFactory.create() cov_visitor = CoverageSaveVisitor(db) cov_visitor.save( TestData(UCIS_TESTSTATUS_OK, "UCIS:simulator", datetime.now().strftime("%Y%m%d%H%M%S")), covergroups) return CoverageReportBuilder.build(cov_visitor.db)
def get_coverage_report_model() -> CoverageReport: """Returns a coverage report model of all covergroups""" covergroups = CoverageRegistry.inst().covergroup_types() db = MemFactory.create() save_visitor = CoverageSaveVisitor(db) now = datetime.now save_visitor.save( TestData(UCIS_TESTSTATUS_OK, "UCIS:simulator", ucis.ucis_Time()), covergroups) return CoverageReportBuilder.build(db)
def test_simple_typecov(self): ucisdb = "file.ucis" db = MemFactory.create() testnode = db.createHistoryNode(None, "logicalName", ucisdb, UCIS_HISTORYNODE_TEST) td = TestData(teststatus=UCIS_TESTSTATUS_OK, toolcategory="UCIS:simulator", date="20200202020") testnode.setTestData(td) file = db.createFileHandle("dummy", os.getcwd()) srcinfo = SourceInfo(file, 0, 0) du = db.createScope( "foo.bar", srcinfo, 1, # weight UCIS_OTHER, UCIS_DU_MODULE, UCIS_ENABLED_STMT | UCIS_ENABLED_BRANCH | UCIS_ENABLED_COND | UCIS_ENABLED_EXPR | UCIS_ENABLED_FSM | UCIS_ENABLED_TOGGLE | UCIS_INST_ONCE | UCIS_SCOPE_UNDER_DU) instance = db.createInstance( "dummy", None, # sourceinfo 1, # weight UCIS_OTHER, UCIS_INSTANCE, du, UCIS_INST_ONCE) cg = instance.createCovergroup( "cg", SourceInfo(file, 3, 0), 1, # weight UCIS_OTHER) cp = cg.createCoverpoint( "t", SourceInfo(file, 4, 0), 1, # weight UCIS_VLOG) cp.setComment("Hello There") cp.createBin("auto[a]", SourceInfo(file, 4, 0), 1, 4, "a") cov_report = CoverageReportBuilder.build(db) print("covergroups: " + str(len(cov_report.covergroups)))
def test_type_covergroup_two_coverpoints_weights_options(self): db_creator = DbCreator() db_creator.dummy_test_data() inst = db_creator.dummy_instance() type_cg_1 = db_creator.create_covergroup( inst, "cg_t", dict(options=dict(weight=1), coverpoints=dict(a_cp=dict(bins=[ ("b1", 1), ("b2", 1), ("b3", 0), ("b4", 0), ]), b_cp=dict(bins=[ ("b1", 0), ("b2", 0), ("b3", 0), ("b4", 0), ("b5", 1), ("b6", 1), ("b7", 1), ("b8", 1), ])))) type_cg_2 = db_creator.create_covergroup( inst, "cg_t", dict(options=dict(weight=1), coverpoints=dict(a_cp=dict(bins=[ ("b1", 1), ("b2", 1), ("b3", 1), ("b4", 1), ]), b_cp=dict(bins=[ ("b1", 1), ("b2", 1), ("b3", 1), ("b4", 1), ("b5", 1), ("b6", 1), ("b7", 1), ("b8", 1), ])))) report = CoverageReportBuilder.build(db_creator.db) self.assertEqual(2, len(report.covergroups)) self.assertEqual(2, len(report.covergroups[0].coverpoints)) self.assertEqual(2, len(report.covergroups[1].coverpoints)) self.assertEqual(75.0, report.coverage)
def test_cross(self): @vsc.covergroup class my_covergroup(object): def __init__(self): super().__init__() self.a=None self.b=None self.cp1 = vsc.coverpoint(lambda:self.a, bins=dict( a = vsc.bin_array([], [0,15]) )) self.cp2 = vsc.coverpoint(lambda:self.b, bins=dict( b = vsc.bin_array([], [0,15]) )) self.cross = vsc.cross([self.cp1, self.cp2]) #a = 0; #b = 0; cg = my_covergroup() cg.a = 0 cg.b = 0 print("A: ",str(cg.a), " B: ", str(cg.b)) cg.sample() # Hit the first bin of cp1 and cp2 report = vsc.get_coverage_report() print("Report:\n" + report) out = StringIO() vsc.write_coverage_db("cov.xml") print(">================== Write XML ========================") vsc.write_coverage_db(out) print("<================== Write XML ========================") db = XmlFactory.read(out) print(">================== Build Report =====================") report = CoverageReportBuilder.build(db) print("<================== Build Report =====================") print(">================== Text Reporter ====================") reporter = TextCoverageReportFormatter(report, sys.stdout) print("<================== Text Reporter ====================") reporter.details = True print(">================== XML Report =======================") reporter.report() print("<================== XML Report =======================")
def test_single_type_two_inst_xml(self): @vsc.covergroup class my_cg(object): def __init__(self): self.with_sample(dict(a=vsc.uint8_t(), b=vsc.uint8_t())) self.a_cp = vsc.coverpoint(self.a, bins={"a": bin_array([], [0, 15])}) my_cg_1 = my_cg() my_cg_2 = my_cg() for i in range(8): my_cg_1.sample(2 * i, 0) if i % 2 == 0: my_cg_1.sample(2 * i, 0) my_cg_2.sample(2 * i + 1, 0) if i % 3 == 0: my_cg_2.sample(2 * i + 1, 0) my_cg_2.sample(2 * i + 1, 0) print(">================== Text Report ======================") print("Report:\n" + vsc.get_coverage_report(True)) print("<================== Text Report ======================") out = StringIO() vsc.write_coverage_db("cov.xml") print(">================== Write XML ========================") vsc.write_coverage_db(out) print("<================== Write XML ========================") db = XmlFactory.read(out) print(">================== Build Report =====================") report = CoverageReportBuilder.build(db) print("<================== Build Report =====================") print(">================== Text Reporter ====================") reporter = TextCoverageReportFormatter(report, sys.stdout) print("<================== Text Reporter ====================") reporter.details = True print(">================== XML Report =======================") reporter.report() print("<================== XML Report =======================")
def test_type_covergroup_two_coverpoints_weights(self): db_creator = DbCreator() db_creator.dummy_test_data() inst = db_creator.dummy_instance() db_creator.create_covergroup( inst, "cg_t", dict(coverpoints=dict( a_cp=dict(options=dict(weight=4), bins=[ ("b1", 1), ("b2", 1), ("b3", 0), ("b4", 0), ]), b_cp=dict(options=dict(weight=8), bins=[ ("b1", 0), ("b2", 0), ("b3", 0), ("b4", 0), ("b5", 0), ("b6", 0), ("b7", 1), ("b8", 1), ]), ))) report = CoverageReportBuilder.build(db_creator.db) self.assertEqual(1, len(report.covergroups)) self.assertEqual(2, len(report.covergroups[0].coverpoints)) self.assertEqual(50.0, report.covergroups[0].coverpoints[0].coverage) self.assertEqual(25.0, report.covergroups[0].coverpoints[1].coverage) self.assertEqual(round((100 * 4 / 12), 2), report.covergroups[0].coverage)
def merge(self, db): report = CoverageReportBuilder.build(db) self.apply(report)