<forwarding bounced email from danielm> -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.
attached mail follows:
Doug , regarding to LRM I can do the same as in yours example by usig $unit (in single compilation scope ofcource) since hier paths are allowed after $unit. I must say that I was a bbit suprosed by this fact that thi is allowed to use hier paths. module top; logic a = 1'b0; bottom top(); initial begin $display("top.a = %b", top.a); // Should print 1 $display("$root.top.a = %b", $unit::top.a); // Should print 0 <<<<<<<<<<<<<<<here end endmodule module bottom; logic a = 1'b1; endmodule So the diffs between $root and $path are: 1.$unit can reference to everything what is allowed for $root but the reference is resolved in current compilation scope: 2.$root can reference to all indentifiers which may be referenced hierarhically (same as $unit but types, classes definition?) - identifiers are resolved globally LRM allows also strange case: $unit::$root.top.a //<<<<<<<<<<<here DANiel -----Original Message----- From: Warmke, Doug [mailto:doug_warmke@mentor.com] Sent: Tuesday, November 06, 2007 8:16 PM To: Steven Sharp; Vreugdenhil, Gordon; danielm@aldec.com.pl; Mark.Hartoog@synopsys.com Cc: shalom.bresticker@intel.com; sv-ec@server.eda.org Subject: RE: [sv-ec] $root vs $unit There is still at least one use for $root: Disambiguating names during upward searches. module top; logic a = 1'b0; bottom top(); initial begin $display("top.a = %b", top.a); // Should print 1 $display("$root.top.a = %b", $root.top.a); // Should print 0 end endmodule module bottom; logic a = 1'b1; endmodule Regards, Doug -----Original Message----- From: owner-sv-ec@server.eda.org [mailto:owner-sv-ec@server.eda.org] On Behalf Of Steven Sharp Sent: Tuesday, November 06, 2007 10:43 AM To: Vreugdenhil, Gordon; danielm@aldec.com.pl; Mark.Hartoog@synopsys.com Cc: shalom.bresticker@intel.com; sv-ec@server.eda.org Subject: RE: [sv-ec] $root vs $unit >As Gord indicates $root.<typeName> is illegal in P1800. The illegality goes beyond the fact that hierarchical names are not allowed in type references. It would also be illegal to have $root.<varName>. The LRM says that $root can be added to the front of a hiearchical name. But a hierarchical name must start with a scope (which would have to be a top-level instance in this case). I don't think I have ever seen this pointed out before, but it follows from the LRM text, and neatly avoids a problem. As Shalom pointed out, $root.<identifier> could be ambiguous if the same identifier name appears in multiple $units. However, this is not a legal hierarchical name unless <identifier> is a top-level instance. Since top-level instance names must be unique, the problem is avoided. So the old meaning of $root to talk about things in the top-level scope is completely gone, replaced by $unit. Steven Sharp sharp@cadence.com -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean. -- This message has been scanned for viruses and dangerous content by MailScanner, and is believed to be clean.Received on Wed Jan 23 11:13:56 2008
This archive was generated by hypermail 2.1.8 : Wed Jan 23 2008 - 11:15:31 PST