In SV LRM 2012 sie sagen, dassDynamische Array von Schnittstellen in SV
interface_instantiation ::= interface_identifier [ parameter_value_assignment ] hierarchical_instance { , hierarchical_instance } ;
Wenn Bedeutung von hierarchical_instance Suche Sie
hierarchical_instance ::= name_of_instance ([ list_of_port_connections ]) name_of_instance ::= instance_identifier { unpacked_dimension }
Schließlich finden kann, kann es festgestellt, dass
unpacked_dimension ::= [ constant_range ] | [ constant_expression ]
Ich möchte es lesen, so dass Sie dynamische Array nicht haben können von Schnittstellen in Ihrem SV-Code, richtig? Aber wenn Sie den folgenden Code Linie sowohl mit VCS und Questa simuliert, funktioniert es ohne Warnung/Fehler:
virtual protocol_if ifs[];
Warum es funktioniert? Kannst du es mir erklären?
Es ist, da Sie ** ** virtuelle Schnittstelle verwenden, die ist a ** Zeiger/Handle zur aktuellen Schnittstelle **. Es funktioniert möglicherweise nicht, wenn Sie die tatsächliche Instanziierung der Schnittstelle verwenden. Wenn die tatsächliche Schnittstelle verwendet wird, kann dieser Fehler auftreten: 'Dimension mit variabler Größe, die im Modulinstanzarray verwendet wird. Bitte verwenden Sie feste Dimensionen im Modulinstanzarray.' – sharvil111
Ich kann die gleiche Art von Interpretation machen. Jedenfalls würde ich gerne eine genaue Erklärung in LRM finden. Wahrscheinlich kann ich es nicht finden, aber stattdessen muss ich zwischen den Zeilen lesen. – user7218867