back.rtlil: don't name-prefix signals connected to instance ports.
authorwhitequark <cz@m-labs.hk>
Mon, 8 Jul 2019 10:48:07 +0000 (10:48 +0000)
committerwhitequark <cz@m-labs.hk>
Mon, 8 Jul 2019 10:48:07 +0000 (10:48 +0000)
This gives particularly pathological results on IO buffers, like:
  connect \D_OUT_0 \user_led_0_user_led_0__o

Since subfragment signals are name-prefixed because this works well
for signals propagated upwards across hierarchy, this is never
desirable for instances.

nmigen/back/rtlil.py

index 8c042c6fc8b5ea3d8fbc682b1bff31bed328ebec..52ddb5c4da4e06942294a047a8a4a33c78f0950c 100644 (file)
@@ -772,8 +772,9 @@ def convert_fragment(builder, fragment, hierarchy):
 
             sub_ports = OrderedDict()
             for port, value in sub_port_map.items():
-                for signal in value._rhs_signals():
-                    compiler_state.resolve_curr(signal, prefix=sub_name)
+                if not isinstance(subfragment, ir.Instance):
+                    for signal in value._rhs_signals():
+                        compiler_state.resolve_curr(signal, prefix=sub_name)
                 sub_ports[port] = rhs_compiler(value)
 
             module.cell(sub_type, name=sub_name, ports=sub_ports, params=sub_params,