mirror of
https://github.com/YosysHQ/sby.git
synced 2025-08-11 15:50:56 +00:00
smtbmc: match on full property paths instead of just names
* to address #296 * this also required some changes to the formatting of the output from smtbmc to allow more unambiguous parsing, so corresponds to a matching change in yosys
This commit is contained in:
parent
d9a5845323
commit
9583985d06
3 changed files with 42 additions and 34 deletions
|
@ -202,6 +202,11 @@ def aigsmt_trace_callback(task, engine_idx, proc_status, *, run_aigsmt, smtbmc_v
|
|||
|
||||
smt2_trans = {'\\':'/', '|':'/'}
|
||||
|
||||
def parse_mod_path(path_string):
|
||||
# Match a path with . as delimiter, allowing escaped tokens in
|
||||
# verilog `\name ` format
|
||||
return [m[1] or m[0] for m in re.findall(r"(\\([^ ]*) |[^\.]+)(?:\.|$)", path_string)]
|
||||
|
||||
match = re.match(r"^## [0-9: ]+ .* in step ([0-9]+)\.\.", line)
|
||||
if match:
|
||||
current_step = int(match[1])
|
||||
|
@ -213,10 +218,11 @@ def aigsmt_trace_callback(task, engine_idx, proc_status, *, run_aigsmt, smtbmc_v
|
|||
match = re.match(r"^## [0-9: ]+ Status: PASSED", line)
|
||||
if match: proc2_status = "PASS"
|
||||
|
||||
match = re.match(r"^## [0-9: ]+ Assert failed in (\S+): (\S+)(?: \((\S+)\))?", line)
|
||||
match = re.match(r"^## [0-9: ]+ Assert failed in ([^:]+): (\S+)(?: \((\S+)\))?", line)
|
||||
if match:
|
||||
path = parse_mod_path(match[1])
|
||||
cell_name = match[3] or match[2]
|
||||
prop = task.design.hierarchy.find_property_by_cellname(cell_name, trans_dict=smt2_trans)
|
||||
prop = task.design.hierarchy.find_property(path, cell_name, trans_dict=smt2_trans)
|
||||
prop.status = "FAIL"
|
||||
task.status_db.set_task_property_status(prop, data=dict(source="aigsmt", engine=f"engine_{engine_idx}"))
|
||||
last_prop.append(prop)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue