Die Warning wird nicht durch den lokalen Scope verursacht, sondern durch
die Initialisierung. Diese Art der Signalinitialisierung ist sehr
fehleranfällig (in einem anderen Thread gab es dazu kürzlich eine
hitzige Debatte) und wird in SystemVerilog eigentlich nur noch aus
Kompatibilitätsgründen (zu Verilog) und in Simulationsumgebungen
unterstützt. Daher die (etwas missverständliche) Warnung.
Einige Simulatoren (z.B. Verilator) deklarieren das als Fehler und
brechen ab. Vivado hatte bisher eine eher entspannte Einstellung zum
SystemVerilog-Standard, scheint aber aufzuholen.
Ich sehe hier drei Möglichkeiten:
1. Da es funktioniert, ignorierst du die Warning, aber das fällt dir
irgendwann auf die Füße.
2. Der Sourcecode, den zu verlinkt hast, ist eigentlich kein
Systemverilog sondern plain-Verilog (In SV verwendet man z.B. keine regs
und wires mehr sondern logic, und always heißt jetzt always_ff). Du
könntest das File von .sv in .v umbenennen, dann erkennt Vivado ein
Verilog-File und mosert vielleicht nicht herum.
3. Wirf die Initialisierungen ganz raus und setze die Signale mit
reset_s auf einen definierten Wert, wie es bei den meisten Signalen
ohnehin gemacht wird.
Die beste Variante wäre, das ganze Modul in sauberen SV-Code
umzuschreiben, aber das wird etwas mehr Arbeit.
Btw, Signale mit gleichem Namen in lokalen Scopes im selben Modul zu
verwenden, ist nicht gerade die feine Art. Ich weiß gar nicht, wie man
die im Simulator unterscheidet, wenn die always-Scopes keinen eigenen
Namen haben.