diff options
author | Eddie Hung <eddie@fpgeh.com> | 2020-04-22 17:26:56 -0700 |
---|---|---|
committer | Eddie Hung <eddie@fpgeh.com> | 2020-04-22 17:26:56 -0700 |
commit | 5028e17f7db11f901ce9e423dfe2c6f7e68259cc (patch) | |
tree | 2b66ef68d9db7bd40075805f5f33f3b642b4a7b9 /frontends | |
parent | 274098cce6133dfb9a5b0ad013e55119cb1741cf (diff) | |
download | yosys-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.cc | 20 |
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; |