Merge pull request #279 from antmicro/parse-toppackage
Adapt UHDM plugin to new Surelog version
diff --git a/systemverilog-plugin/UhdmAst.cc b/systemverilog-plugin/UhdmAst.cc
index 285f0bd..3f6f148 100644
--- a/systemverilog-plugin/UhdmAst.cc
+++ b/systemverilog-plugin/UhdmAst.cc
@@ -406,6 +406,7 @@
if (packed_ranges.empty() && unpacked_ranges.empty()) {
wire_node->attributes.erase(UhdmAst::packed_ranges());
wire_node->attributes.erase(UhdmAst::unpacked_ranges());
+ wire_node->range_valid = true;
return;
}
size_t size = 1;
@@ -1114,7 +1115,8 @@
// yosys is assuming that int/uint is 32 bit, so we are setting here correct size
// NOTE: it *shouldn't* break on explicite 64 bit const values, as they *should* be handled
// above by vpi*StrVal
- if (size == 64) {
+ // FIXME: Minimal int size should be resolved in UHDM, here we make sure it is at least 32
+ if (size == 64 || size < 32) {
size = 32;
is_signed = true;
}
@@ -1385,11 +1387,12 @@
void UhdmAst::process_design()
{
current_node = make_ast_node(AST::AST_DESIGN);
- visit_one_to_many({UHDM::uhdmallInterfaces, UHDM::uhdmallPackages, UHDM::uhdmallModules, UHDM::uhdmtopModules}, obj_h, [&](AST::AstNode *node) {
- if (node) {
- shared.top_nodes[node->str] = node;
- }
- });
+ visit_one_to_many({UHDM::uhdmallInterfaces, UHDM::uhdmallPackages, UHDM::uhdmtopPackages, UHDM::uhdmallModules, UHDM::uhdmtopModules}, obj_h,
+ [&](AST::AstNode *node) {
+ if (node) {
+ shared.top_nodes[node->str] = node;
+ }
+ });
visit_one_to_many({vpiParameter, vpiParamAssign}, obj_h, [&](AST::AstNode *node) {});
visit_one_to_many({vpiTypedef}, obj_h, [&](AST::AstNode *node) {
if (node)