Frage

Dies ist eine Verilog -Related -Frage. Ich arbeite mit Xilinx ISE als Entwicklerumgebung.

Ich versuche, in der Simulation, die automatisch mit Genvar generiert werden

Problembeispiel:

genvar i;

generate

for(i=0; i < N; i=i+1)

begin:Sys_Modules

  TypeXModule #(.width(10)) xmod(.dataY(dataY)));

end

endgenerate 

Wenn ich die Synthese oder Simulation betrug, kann ich sehen, dass sys_modules [0..n-1] .xmod-Instanzen erstellt werden.

Wenn ich versuche, der Simulation eine Zeile hinzuzufügen, die auf das Sys_Modules -Array zugreift:

Sys_modules [i] .xmod.datay

Ich bekomme den folgenden Fehler:

HdlCompiler: 71 Datay wird nicht unter Präfix XMOD deklariert

Gibt es eine Möglichkeit, in der Simulation automatisch generierte Werte zuzugreifen?

Vielen Dank!

War es hilfreich?

Lösung

Es ist legal, einen hierarchischen Verweis auf eine generierte Instanz zu schreiben. Die Funktionalität ist in den Abschnitten 2.7.2 und 12.1.3 des IEEE Verilog -Standards beschrieben. Das Instanz -Index muss jedoch konstant sein, sodass es zum Kompilierungszeit gelöst werden kann.

Andere Tipps

Sie können hierarchische Referenzen für Cross-Instance in synthetisiertem Verilog nicht verwenden.

Ich denke, Sie haben kein Glück. Simulatoren scheinen nicht mögliche Referenzen (OMRs) zu mögen, die in generierte Blöcke zeigen, wie Sie entdeckt haben.

Ich habe kürzlich auf ein ähnliches Problem gestoßen, als ich einen Parameterizable TestBench Monitor erstellt habe. Ich würde eine variable Anzahl von Unterblockern je nach a instanziiert parameter. In diesem Zusammenhang musste ich ein Toplevel haben .start() Aufgabe, die die nannte .start() Aufgaben in jedem der instanziierten Module. Ich konnte keine benutzen for Schleife, um dies wegen dieses OOMR -Problems zu tun.

Also musste ich:

  • definieren a reg das das Toplevel .start() Aufgabe umgeschaltet
  • Schreib 'ein always @ Block ausgelöst darauf reg
  • schreiben Ein weiterer generate Abschnitt innerhalb dieses Blocks immer zu rufen .start() auf jedem der Submodules.

Wenn Sie wirklich in Ihre sehen müssen generateD Module, vielleicht könnten Sie eine Problemumgehung wie oben ausprobieren? Haben Sie beispielsweise einen Bus im Toplevel und verwenden Sie agenerate Aussage zum Blick in Ihr Original generateD Instanziationen zum Kopieren/Zuweisen interessanter Signale in diesen Toplevel -Bus.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top