mirror of
https://github.com/YosysHQ/sby.git
synced 2025-08-14 08:55:27 +00:00
More status tracking unification
- Status database only gets called from summary events instead of from engines. - More trace witnesses (.aiw and .yw) are tracked as events. - Multiple tracefiles can be included in the same trace summary, varying only by extension. These are ordered by priority so that in the logfile only a single tracefile is listed. - For engines where multiple properties can be collected for a single trace, these properties are now available for all traces until the next step. If any properties are collected but never recorded with a trace, an error is raised. - Fix formatting for events without steps (e.g. running abc with `vcd off`). - Drop task_property_data table entirely, since it is now redundant and unused. - Fix properties being skipped in all status dump if they don't have a trace.
This commit is contained in:
parent
f0aca6c75e
commit
98ef1c4182
6 changed files with 164 additions and 122 deletions
|
@ -18,6 +18,7 @@
|
|||
|
||||
import re, getopt
|
||||
import json
|
||||
import os
|
||||
from sby_core import SbyProc
|
||||
from sby_engine_aiger import aigsmt_exit_callback, aigsmt_trace_callback
|
||||
|
||||
|
@ -173,18 +174,25 @@ def run(mode, task, engine_idx, engine):
|
|||
aiger_props.append(task.design.properties_by_path.get(tuple(path)))
|
||||
|
||||
if keep_going:
|
||||
match = re.match(r"Writing CEX for output ([0-9]+) to engine_[0-9]+/(.*)\.aiw", line)
|
||||
match = re.match(r"Writing CEX for output ([0-9]+) to (engine_[0-9]+/(.*)\.aiw)", line)
|
||||
if match:
|
||||
output = int(match[1])
|
||||
tracefile = match[2]
|
||||
name = match[3]
|
||||
trace, _ = os.path.splitext(name)
|
||||
task.summary.add_event(engine_idx=engine_idx, trace=trace, path=tracefile)
|
||||
prop = aiger_props[output]
|
||||
if prop:
|
||||
prop.status = "FAIL"
|
||||
task.status_db.set_task_property_status(prop, data=dict(source="abc pdr", engine=f"engine_{engine_idx}"))
|
||||
task.summary.add_event(
|
||||
engine_idx=engine_idx, trace=trace,
|
||||
hdlname=prop.hdlname, src=prop.location, prop=prop,
|
||||
)
|
||||
disproved.add(output)
|
||||
proc_status = "FAIL"
|
||||
proc = aigsmt_trace_callback(task, engine_idx, proc_status,
|
||||
run_aigsmt=run_aigsmt, smtbmc_vcd=smtbmc_vcd, smtbmc_append=smtbmc_append, sim_append=sim_append,
|
||||
name=match[2],
|
||||
name=name,
|
||||
)
|
||||
proc.register_exit_callback(exit_callback)
|
||||
procs_running += 1
|
||||
|
@ -198,7 +206,10 @@ def run(mode, task, engine_idx, engine):
|
|||
prop = aiger_props[output]
|
||||
if prop:
|
||||
prop.status = "PASS"
|
||||
task.status_db.set_task_property_status(prop, data=dict(source="abc pdr", engine=f"engine_{engine_idx}"))
|
||||
task.summary.add_event(
|
||||
engine_idx=engine_idx, trace=None,
|
||||
hdlname=prop.hdlname, src=prop.location, prop=prop,
|
||||
)
|
||||
proved.add(output)
|
||||
|
||||
match = re.match(r"^Simulation of [0-9]+ frames for [0-9]+ rounds with [0-9]+ restarts did not assert POs.", line)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue