Subject: [sv-bc] SV-BC64 -- multidimensional arrays of instances (17.8, A.3.1, A.4.1.1, A.5.4)
From: Brad Pierce (Brad.Pierce@synopsys.com)
Date: Thu Feb 27 2003 - 18:19:53 PST
Issue SV-BC64 as recorded in --
http://www.eda.org/sv-bc/hm/att-0409/01-03-01-29.txt
asks
"Are there multiple dimensions on arrayed instances? If so, how do
the ports get bit-blasted? If not, the BNF needs to be fixed."
Yes, there can be multiple dimensions on arrayed instances, and their
port connection rules are described in section 17.8. It would be
helpful if there were a "SystemVerilog adds the capability to ..."
paragraph about this.
However, section 17.8 does not address the issue of how to connect the
terminals in multidimensional arrays of gate instances. Nor does it
address the issue of how to connect the ports in multiple dimensional
arrays of interface instances.
Also, if there are multidimensional arrays of interface instances,
then the proposal of --
http://www.eda.org/sv-bc/hm/0410.html
must be modified in modport_hierarchical_ports_declaration, because
that production assumes that an array of interface instances has only
one dimension.
Also, why does the BNF allow multidimensional arrays of module, interface,
and gate instances, but not of UDP instances? Should the BNF be changed
in A.5.4 from
name_of_udp_instance ::= udp_instance_identifier [ range ]
to
name_of_udp_instance ::= udp_instance_identifier { range }
?
If so, then the terminal connection rules should also be clarified
for multidimensional arrays of UDP instances.
An alternative fix for the above LRM problems would be to consider
whether generate is sufficient to achieve the desired effect, and,
if so, to remove the multidimensional module instance array port
connection rules from 17.8 and to modify the BNF as follows:
--
In A.3.1, change
name_of_gate_instance ::= gate_instance_identifier { range }
to
name_of_gate_instance ::= gate_instance_identifier [ range ]
--
In A.4.1.1, change
name_of_instance ::= module_instance_identifier { range }
to
name_of_instance ::= moudle_instance_identifier [ range ]
--
In A.5.4, change
name_of_udp_instance ::= udp_instance_identifier '[' range ']'
to
name_of_udp_instance ::= udp_instance_identifier [ range ]
--
-- Brad
This archive was generated by hypermail 2b28 : Thu Feb 27 2003 - 18:20:29 PST