module <module_name> (<portlist>);
                .
                .       // module components
                .
endmodule

------------------------------------------------------------------------------
module top;
                type1 childA(ports...); // "ports..." indicates a port list
                type2 childB(ports...); // which will be explained later
        endmodule
        
        module type1(ports...);
                type3 leaf1(ports...);
                type3 leaf2(ports...);
        endmodule
        
        module type2(ports...);
                type3 leaf3(ports...);
                type1 node1(ports...);
        endmodule
        
        module type3(ports...);
                // this module does not instantiate any other modules
        endmodule
