Geoffrey, The syntax as shown in the example is not in line with 1364-2005, so either we would have to change the syntax to: module_instance ::= { attribute_instance } name_of_module_instance ( [ list_of_port_connections ] ) Another approach would be to have the port discipline of the first port automatically apply to any successive ports, if those ports following it do not have a port_discipline attribute specified. So: resistor #(.r(1k)) r1 ((* port_discipline="electrical" *) node1, node2); resistor #(.r(1k)) r2 ((* port_discipline="rotational" *) node1, node2); This would be in line with IEEE 1364-2005 syntax as well as allow declaring the disciplines of all ports in one go. Specifically, one could define it as: "The default discipline of a port is the discipline as provided through the port_discipline attribute, or the port discipline of the preceeding port connection, or in case no preceeding port connection is present, the default discipline." This way one could also in case of mixed discipline primitives use a minimal set of attribute instances: mextram504 q1 ((* port_discipline="electrical" *) node1, node2, node3, node4, (* port_discipline="thermal" *) nodet); Would this be acceptable? Cheers, Marq To Marq Kole <marq.kole@nxp.com> cc "Geoffrey.Coram" verilog-ams <geoffrey.coram@anal <verilog-ams@server.eda-stds.org> og.com> Subject Re: port_discipline Sent by: Classification owner-verilog-ams@se rver.eda.org 04-09-2007 13:32 Marq - Since, as you noted, the "integer" is wrong anyway, I'm not too concerned with making the example erroneous. (I don't think the ";" belongs, either.) However, it would be nice to be able to declare *all* of the ports rotational in one go, rather than having to do each one individually. -Geoffrey Marq Kole wrote: > All, > > In the LRM 2.2 Annex E.3.3.1 the discipline of analog primitives can be > resolved by means of the port_discipline arttibute. An example of this > port discipline attribute is given. It is: > > resistor #(.r(1k)) (* integer port_discipline="electrical" ; *) r1 > (node1, node2); // not needed as default > resistor #(.r(1k)) (* integer port_discipline="rotational" ; *) r2 > (node1, node2); > > The integer type in these attribute instances is wrong anyway, so this > has to be changed. > > Additionally, according to the syntax in Annex A of IEEE 1364-2005 as > well as the syntax proposal for LRM 2.3, this is not the correct place > for an attribute instance. Instead, the attribute instance should be in > front of each of the port connections. This would change the example to: > > resistor #(.r(1k)) r1 > ((* port_discipline="electrical" ; *) node1, (* > port_discipline="electrical" ; *) node2); // not needed as default > resistor #(.r(1k)) r2 > ((* port_discipline="rotational" ; *) node1, (* > port_discipline="rotational" ; *) node2); > > This makes sense as the port_discipline should be related to the port, > not to the module instance. This allows also for multi discipline ports. > As an example, the self-heating version of the Mextram BJT model has 4 > electrical ports and one thermal port. With the LRM 2.2 it would not be > possible to correctly set the port disciplines for this built-in model, > while the 1364-2005 compliant syntax would allow this. > > Should we update the syntax to allow attribute instances in the location > suggested by LRM 2.2, or should we change the example in E.3.3.1 to > reflect the syntax of 1364-2005? I'm in favor of the latter, but I don't > know if there are backwards compatibility issues by explicitly making > the example E.3.3.1 erroneous. > > Cheers, > Marq > > -- > This message has been scanned for viruses and > dangerous content by *MailScanner* <http://www.mailscanner.info/>, and is > believed to be clean. > -- 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.
This archive was generated by hypermail 2.1.8 : Tue Sep 04 2007 - 05:35:02 PDT