mirror of
https://github.com/YosysHQ/sby.git
synced 2025-04-23 05:15:30 +00:00
Support for "abc --keep-going pdr" via new "pdr -X" mode
This commit is contained in:
parent
52184e5bf0
commit
6ba762db4c
7 changed files with 258 additions and 79 deletions
|
@ -12,6 +12,6 @@ def line_ref(dir, filename, pattern):
|
|||
for number, line in enumerate(file, 1):
|
||||
if pattern_re.search(line):
|
||||
# Needs to match source locations for both verilog frontends
|
||||
return fr"{filename}:(?:{number}|\d+.\d+-{number}.\d+)"
|
||||
return fr"{filename}:(?:{number}|\d+\.\d+-{number}\.\d+)"
|
||||
|
||||
raise RuntimeError("%s: pattern `%s` not found" % (filename, pattern))
|
||||
|
|
|
@ -11,21 +11,34 @@ step_5 = line_ref(workdir, src, "step 5")
|
|||
step_7 = line_ref(workdir, src, "step 7")
|
||||
|
||||
log = open(workdir + "/logfile.txt").read()
|
||||
log_per_trace = log.split("Writing trace to Yosys witness file")[:-1]
|
||||
|
||||
if "_abc]" not in log:
|
||||
log_per_trace = log.split("Writing trace to Yosys witness file")[:-1]
|
||||
assert len(log_per_trace) == 4
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % assert_0, log_per_trace[0], re.M)
|
||||
|
||||
for i in range(1, 4):
|
||||
assert re.search(r"Assert failed in test: %s \(.*\) \[failed before\]$" % assert_0, log_per_trace[i], re.M)
|
||||
|
||||
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % step_3_7, log_per_trace[1], re.M)
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % step_5, log_per_trace[2], re.M)
|
||||
assert re.search(r"Assert failed in test: %s \(.*\) \[failed before\]$" % step_3_7, log_per_trace[3], re.M)
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % step_7, log_per_trace[3], re.M)
|
||||
|
||||
pattern = f"Property ASSERT in test at {assert_0} failed. Trace file: engine_0/trace0.(vcd|fst)"
|
||||
assert re.search(pattern, open(f"{workdir}/{workdir}.xml").read())
|
||||
|
||||
log_per_trace = log.split("summary: counterexample trace")[1:]
|
||||
assert len(log_per_trace) == 4
|
||||
|
||||
for i in range(4):
|
||||
assert re.search(r"failed assertion test\..* at %s" % assert_0, log_per_trace[i], re.M)
|
||||
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % assert_0, log_per_trace[0], re.M)
|
||||
step_3_7_traces = [i for i, t in enumerate(log_per_trace) if re.search(r"failed assertion test\..* at %s" % step_3_7, t, re.M)]
|
||||
step_5_traces = [i for i, t in enumerate(log_per_trace) if re.search(r"failed assertion test\..* at %s" % step_5, t, re.M)]
|
||||
step_7_traces = [i for i, t in enumerate(log_per_trace) if re.search(r"failed assertion test\..* at %s" % step_7, t, re.M)]
|
||||
|
||||
for i in range(1, 4):
|
||||
assert re.search(r"Assert failed in test: %s \(.*\) \[failed before\]$" % assert_0, log_per_trace[i], re.M)
|
||||
|
||||
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % step_3_7, log_per_trace[1], re.M)
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % step_5, log_per_trace[2], re.M)
|
||||
assert re.search(r"Assert failed in test: %s \(.*\) \[failed before\]$" % step_3_7, log_per_trace[3], re.M)
|
||||
assert re.search(r"Assert failed in test: %s \(.*\)$" % step_7, log_per_trace[3], re.M)
|
||||
|
||||
pattern = f"Property ASSERT in test at {assert_0} failed. Trace file: engine_0/trace0.(vcd|fst)"
|
||||
assert re.search(pattern, open(f"{workdir}/{workdir}.xml").read())
|
||||
assert len(step_3_7_traces) == 2
|
||||
assert len(step_5_traces) == 1
|
||||
assert len(step_7_traces) == 1
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
[tasks]
|
||||
bmc
|
||||
prove
|
||||
abc : prove
|
||||
|
||||
[options]
|
||||
bmc: mode bmc
|
||||
|
@ -8,7 +9,8 @@ prove: mode prove
|
|||
expect fail
|
||||
|
||||
[engines]
|
||||
smtbmc --keep-going boolector
|
||||
~abc: smtbmc --keep-going boolector
|
||||
abc: abc --keep-going pdr
|
||||
|
||||
[script]
|
||||
read -sv keepgoing_multi_step.sv
|
||||
|
|
|
@ -18,5 +18,6 @@ module test (
|
|||
if (counter == 7) begin
|
||||
assert(a); // step 7
|
||||
end
|
||||
assert(1);
|
||||
end
|
||||
endmodule
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue