This is a good start, but I think we need to extend this to include interfaces, interface ports and generate constructs within interfaces. Consider: interface intf(); generate begin : block logic x; end endgenerate endinterface module m(intf i); initial $display(i.block.x); endmodule Consider 'i.block.x' You say: "It is legal to have a dotted name composed of a hierarchical prefix followed by a dot followed by a selected name. It is not legal to have a dotted name composed of a selected name followed by a hierarchical name." What is the 'i.' part of the name? Is it a hierarchical name? You say "A hierarchical name is a "topological reference" that is resolved in the context of the structure of the instantiated design." By definition I do not think 'i.' is really a hierarchical name. What then is the '.block.' part of the name. That looks like a hierarchical name to me. I guess the question here is what is an interface? Is it part of the structural hierarchy or is it a type? We seem to be trying to treat it as both part of the hierarchy and also like a type. That is why we have the problem with virtual interface declarations in packages and this confusion here.Received on Fri Jun 2 09:39:30 2006
This archive was generated by hypermail 2.1.8 : Fri Jun 02 2006 - 09:39:36 PDT