Structural interconnect combines modules through internal nets. A correct top-level structure must preserve signal direction, bit widths and intended fanout. One source may feed several loads, but unrelated outputs should not drive the same ordinary RTL signal unless a deliberately resolved multi-driver connection is intended.

Worked example

Two inversions are connected in series through middle. The top-level output therefore follows the input for binary logic values. The example makes connectivity visible without relying on procedural ordering.

Verilog
module inverter(input a,output y); assign y=~a; endmodule
module two_stage(input a,output y);
  wire middle;
  inverter u0(.a(a),.y(middle));
  inverter u1(.a(middle),.y(y));
endmodule

What to watch for

Accidentally connecting two output ports to the same wire can create contention and x values in simulation. Renaming a wire does not solve ownership of its driver.

Try it yourself

Does a wire between two modules itself add a clock cycle?

Answer: No. Latency is introduced by storage elements or other specified behavior, not by crossing a module boundary.

How to study this topic

Save the example in a .v file and identify its top module before compiling. Separate stimulus and observation from synthesizable RTL. Change one input, width or boundary condition at a time, predict the result, and compare that prediction with simulation. A syntax check does not establish synthesis support or timing closure.

Continue learning

Previous: Continuous assignments

Next: Multiplexers and decoders in dataflow

Browse the complete Verilog index

Explore related programmes

These recorded programmes are upcoming. This article is general educational content, not a syllabus or course sample.

Verilog