예제 #1
0
                break

            if append_steps > 0:
                for i in range(step + 1, step + 1 + append_steps):
                    print_msg("Appending additional step %d." % i)
                    smt.write("(declare-fun s%d () |%s_s|)" % (i, topmod))
                    smt.write("(assert (not (|%s_is| s%d)))" % (topmod, i))
                    smt.write("(assert (|%s_u| s%d))" % (topmod, i))
                    smt.write("(assert (|%s_h| s%d))" % (topmod, i))
                    smt.write("(assert (|%s_t| s%d s%d))" % (topmod, i - 1, i))
                    smt.write("(assert %s)" %
                              get_constr_expr(constr_assumes, i))
                print_msg("Re-solving with appended steps..")
                assert smt.check_sat() == "sat"

            reached_covers = smt.bv2bin(
                smt.get("(covers_%d s%d)" % (coveridx, step)))
            assert len(reached_covers) == len(cover_desc)

            new_cover_mask = []

            for i in range(len(reached_covers)):
                if reached_covers[i] == "0":
                    new_cover_mask.append(cover_mask[i])
                    continue

                print_msg("Reached cover statement at %s in step %d." %
                          (cover_desc[i], step))
                new_cover_mask.append("0")

            cover_mask = "".join(new_cover_mask)
예제 #2
0
파일: smtbmc.py 프로젝트: azonenberg/yosys
                smt_pop()
                break

            if append_steps > 0:
                for i in range(step+1, step+1+append_steps):
                    print_msg("Appending additional step %d." % i)
                    smt_state(i)
                    smt_assert_antecedent("(not (|%s_is| s%d))" % (topmod, i))
                    smt_assert_consequent("(|%s_u| s%d)" % (topmod, i))
                    smt_assert_antecedent("(|%s_h| s%d)" % (topmod, i))
                    smt_assert_antecedent("(|%s_t| s%d s%d)" % (topmod, i-1, i))
                    smt_assert_consequent(get_constr_expr(constr_assumes, i))
                print_msg("Re-solving with appended steps..")
                assert smt_check_sat() == "sat"

            reached_covers = smt.bv2bin(smt.get("(covers_%d s%d)" % (coveridx, step)))
            assert len(reached_covers) == len(cover_desc)

            new_cover_mask = []

            for i in range(len(reached_covers)):
                if reached_covers[i] == "0":
                    new_cover_mask.append(cover_mask[i])
                    continue

                print_msg("Reached cover statement at %s in step %d." % (cover_desc[i], step))
                new_cover_mask.append("0")

            cover_mask = "".join(new_cover_mask)

            for i in range(step+1+append_steps):