aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--passes/hierarchy/hierarchy.cc1
-rw-r--r--tests/various/bug3462.ys12
-rw-r--r--tests/various/sub.v3
3 files changed, 16 insertions, 0 deletions
diff --git a/passes/hierarchy/hierarchy.cc b/passes/hierarchy/hierarchy.cc
index d27fddf1c..eea6abb04 100644
--- a/passes/hierarchy/hierarchy.cc
+++ b/passes/hierarchy/hierarchy.cc
@@ -1058,6 +1058,7 @@ struct HierarchyPass : public Pass {
if (tmp_top_mod != NULL) {
if (tmp_top_mod != top_mod){
top_mod = tmp_top_mod;
+ top_mod->attributes[ID::initial_top] = RTLIL::Const(1);
did_something = true;
}
}
diff --git a/tests/various/bug3462.ys b/tests/various/bug3462.ys
new file mode 100644
index 000000000..c85dc9470
--- /dev/null
+++ b/tests/various/bug3462.ys
@@ -0,0 +1,12 @@
+read_verilog <<EOT
+module top();
+ wire array[0:0];
+ wire out;
+ sub #(.d(1)) inst(
+ .in(array[0]),
+ .out(out)
+ );
+endmodule
+EOT
+
+hierarchy -top top -libdir .
diff --git a/tests/various/sub.v b/tests/various/sub.v
new file mode 100644
index 000000000..63422ca5c
--- /dev/null
+++ b/tests/various/sub.v
@@ -0,0 +1,3 @@
+module sub #(parameter d=1) (input in, output out);
+ assign out = in;
+endmodule