aboutsummaryrefslogtreecommitdiffstats
path: root/frontends
diff options
context:
space:
mode:
authorClifford Wolf <clifford@clifford.at>2017-07-27 14:05:09 +0200
committerClifford Wolf <clifford@clifford.at>2017-07-27 14:05:09 +0200
commitc1cfca8f54ba75c455580467223b609b72f0f58c (patch)
treec284a9bbeaedd2902b875dfbcb28feec68c00e39 /frontends
parent877ff1f75ecca4a1d9eece8243f1cde658c14c40 (diff)
downloadyosys-c1cfca8f54ba75c455580467223b609b72f0f58c.tar.gz
yosys-c1cfca8f54ba75c455580467223b609b72f0f58c.tar.bz2
yosys-c1cfca8f54ba75c455580467223b609b72f0f58c.zip
Improve Verific SVA importer
Diffstat (limited to 'frontends')
-rw-r--r--frontends/verific/verific.cc34
1 files changed, 34 insertions, 0 deletions
diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc
index 5f7d973a9..e56d4531e 100644
--- a/frontends/verific/verific.cc
+++ b/frontends/verific/verific.cc
@@ -1275,6 +1275,40 @@ struct VerificSvaImporter
return;
}
+ if (inst->Type() == PRIM_SVA_SEQ_CONCAT)
+ {
+ int sva_low = atoi(inst->GetAttValue("sva:low"));
+ int sva_high = atoi(inst->GetAttValue("sva:low"));
+
+ if (sva_low != sva_high)
+ log_error("Ranges on SVA sequence concatenation operator are not supported at the moment.\n");
+
+ parse_sequence(seq, inst->GetInput1());
+
+ for (int i = 0; i < sva_low; i++)
+ sequence_ff(seq);
+
+ parse_sequence(seq, inst->GetInput2());
+ return;
+ }
+
+ if (inst->Type() == PRIM_SVA_CONSECUTIVE_REPEAT)
+ {
+ int sva_low = atoi(inst->GetAttValue("sva:low"));
+ int sva_high = atoi(inst->GetAttValue("sva:low"));
+
+ if (sva_low != sva_high)
+ log_error("Ranges on SVA consecutive repeat operator are not supported at the moment.\n");
+
+ parse_sequence(seq, inst->GetInput());
+
+ for (int i = 1; i < sva_low; i++) {
+ sequence_ff(seq);
+ parse_sequence(seq, inst->GetInput());
+ }
+ return;
+ }
+
if (!importer->mode_keep)
log_error("Unsupported Verific SVA primitive %s of type %s.\n", inst->Name(), inst->View()->Owner()->Name());
log_warning("Unsupported Verific SVA primitive %s of type %s.\n", inst->Name(), inst->View()->Owner()->Name());