diff options
author | Clifford Wolf <clifford@clifford.at> | 2018-03-06 14:41:27 +0100 |
---|---|---|
committer | Clifford Wolf <clifford@clifford.at> | 2018-03-06 14:41:27 +0100 |
commit | 78f2cca2d92e4a88ea8192af86e89bf4fdfa9a49 (patch) | |
tree | 2619f855a4282fd5b5f1a861944ce19016474c73 /frontends/verific | |
parent | 5555292ce2bbea8d203005113c0ad3fb34415979 (diff) | |
download | yosys-78f2cca2d92e4a88ea8192af86e89bf4fdfa9a49.tar.gz yosys-78f2cca2d92e4a88ea8192af86e89bf4fdfa9a49.tar.bz2 yosys-78f2cca2d92e4a88ea8192af86e89bf4fdfa9a49.zip |
Add SVA within support
Signed-off-by: Clifford Wolf <clifford@clifford.at>
Diffstat (limited to 'frontends/verific')
-rw-r--r-- | frontends/verific/verificsva.cc | 20 |
1 files changed, 18 insertions, 2 deletions
diff --git a/frontends/verific/verificsva.cc b/frontends/verific/verificsva.cc index db81d0066..8eee02661 100644 --- a/frontends/verific/verificsva.cc +++ b/frontends/verific/verificsva.cc @@ -1179,10 +1179,26 @@ struct VerificSvaImporter return node; } - if (inst->Type() == PRIM_SVA_INTERSECT) + if (inst->Type() == PRIM_SVA_INTERSECT || inst->Type() == PRIM_SVA_WITHIN) { SvaFsm intersect_fsm(clocking); - intersect_fsm.createLink(parse_sequence(intersect_fsm, intersect_fsm.startNode, inst->GetInput1()), intersect_fsm.acceptNode); + + if (inst->Type() == PRIM_SVA_INTERSECT) + { + intersect_fsm.createLink(parse_sequence(intersect_fsm, intersect_fsm.startNode, inst->GetInput1()), intersect_fsm.acceptNode); + } + else + { + int n = intersect_fsm.createNode(); + intersect_fsm.createLink(intersect_fsm.startNode, n); + intersect_fsm.createEdge(n, n); + + n = parse_sequence(intersect_fsm, n, inst->GetInput1()); + + intersect_fsm.createLink(n, intersect_fsm.acceptNode); + intersect_fsm.createEdge(n, n); + } + intersect_fsm.in_cond_mode = true; intersect_fsm.createLink(parse_sequence(intersect_fsm, intersect_fsm.startNode, inst->GetInput2()), intersect_fsm.condNode); intersect_fsm.in_cond_mode = false; |