aboutsummaryrefslogtreecommitdiffstats
path: root/frontends
diff options
context:
space:
mode:
authorEddie Hung <eddie@fpgeh.com>2020-04-22 17:26:56 -0700
committerEddie Hung <eddie@fpgeh.com>2020-04-22 17:26:56 -0700
commit5028e17f7db11f901ce9e423dfe2c6f7e68259cc (patch)
tree2b66ef68d9db7bd40075805f5f33f3b642b4a7b9 /frontends
parent274098cce6133dfb9a5b0ad013e55119cb1741cf (diff)
downloadyosys-5028e17f7db11f901ce9e423dfe2c6f7e68259cc.tar.gz
yosys-5028e17f7db11f901ce9e423dfe2c6f7e68259cc.tar.bz2
yosys-5028e17f7db11f901ce9e423dfe2c6f7e68259cc.zip
verific: import enum attributes from verific
Diffstat (limited to 'frontends')
-rw-r--r--frontends/verific/verific.cc20
1 files changed, 20 insertions, 0 deletions
diff --git a/frontends/verific/verific.cc b/frontends/verific/verific.cc
index 519151310..ae7fcefa7 100644
--- a/frontends/verific/verific.cc
+++ b/frontends/verific/verific.cc
@@ -1153,6 +1153,26 @@ void VerificImporter::import_netlist(RTLIL::Design *design, Netlist *nl, std::se
for (auto net : anyseq_nets)
module->connect(net_map_at(net), module->Anyseq(new_verific_id(net)));
+ char *id_name;
+ TypeRange *type_range;
+ FOREACH_MAP_ITEM(nl->GetTypeRangeTable(), mi, &id_name, &type_range)
+ {
+ if (!type_range)
+ continue;
+ if (!type_range->IsTypeEnum())
+ continue;
+ auto wire = module->wire(RTLIL::escape_id(id_name));
+ log_assert(wire);
+ wire->set_string_attribute(ID(wiretype), type_range->GetTypeName());
+
+ MapIter mj;
+ char *k, *v;
+ FOREACH_MAP_ITEM(type_range->GetEnumIdMap(), mj, &k, &v) {
+ IdString key = stringf("\\enum_value_%s", v);
+ wire->set_string_attribute(key, k);
+ }
+ }
+
pool<Instance*, hash_ptr_ops> sva_asserts;
pool<Instance*, hash_ptr_ops> sva_assumes;
pool<Instance*, hash_ptr_ops> sva_covers;