Forum: FPGA, VHDL & Co. VIVADO HLS mit "generics"


von Andreas N. (poolspieler)


Lesenswert?

Hallo Zusammen,
ich nutze Vivado 2015.1 HLS seit einiger Zeit.
Soweit funktioniert das recht gut.
Nun möchte ich eine IP erzeugen, die eine im Design konfigurierbare 
Anzahl von Ausgängen hat.
Hier das vereinfachte Beispiel (ohne Funktion...):
1
#define ANZAHL_AUSGAENGE  1
2
void logic_io(ap_uint<ANZAHL_AUSGAENGE> *ausgaenge) {
3
...
4
}
In VHDL nutzt man dafür "generic".
Leider kann ich VIVADO HLS nicht dazu bewegen, mir für mein "#define 
ANZAHL_AUSGAENGE 3" einen generic-Eintrag anzulegen.
Es wird immer hart codiert "3" im VHDL-Code für die Breite eingetragen.
1
entity jt_logic_io is
2
generic (
3
    C_S_AXI_BUS_A_ADDR_WIDTH : INTEGER := 6;
4
    C_S_AXI_BUS_A_DATA_WIDTH : INTEGER := 32 );
5
--> HIER hätte ich gerne "ANZAHL_AUSGAENGE" stehen***************
6
port (
7
...
8
    ausgaenge_V : OUT STD_LOGIC_VECTOR (0 downto 0); --> leider ist die Breite des std_logic_vector fest und hängt nicht von einem generic ab...
9
...
10
end;
Hier wird das Problem exakt beschrieben:
http://forums.xilinx.com/t5/High-Level-Synthesis-HLS/HLS-IP-Customization-parameters/td-p/567005
Es wird auch beschrieben, wie man solch ein generic (so verstehe ich es 
zumindest...) in Vivado als customize block Option bekommt.
Aber was man in HLS tun muss steht hier leider nicht.
Ich habe schon einiges gegoogelt - vergeblich :-(

Hat jemand eine Idee?
Vorab vielen Dank.

Gruß,

Poolspieler

von J. S. (engineer) Benutzerseite


Lesenswert?

Habe ich noch nicht verwendet aber in dem gelinkten Dokument im Xilinx 
Forum ist es ja gut beschrieben. Wenn das nicht funktioniert könntest Du 
den TE mal kontaktieren, ob er das realisiert hat (es kam ja keine 
Antwort mehr) oder ob er es verworfen hat. Kann gut sein, dass Vivado da 
noch bugs hat und wenn ich mir in Erinnerung rufe, welche 
Schnittstellenprobleme die Xilinx-Toolchain im Umfeld von CoreGen und 
SystemGen so (immer noch) hat, würde mich das auch nicht wundern.

von Andreas N. (poolspieler)


Lesenswert?

Hallo Jürgen,
danke für Deine Antwort.
Du hast natürlich Recht.
Bei Xilinx die neueste Entwicklungsumgebung einzusetzen ist ein 
"Abenteuer".
Leider geht es nicht viel anders, wenn man den ZYNQ verwenden möchte. 
Der wird erst ab VIVADO unterstützt.
VIVADO-HLS hat einerseits viele Lücken - und anscheinend gibt es noch 
nicht so viele Anwender davon.
Andererseits kann man damit richtig schnell neue IPs erzeugen - wenn es 
mal läuft... :-)

Ja, ich könnte TE mal kontaktieren und/oder einen Beitrag im 
Xilinx-Forum aufmachen.

Ich melde mich, wenn ich mehr weiß.

Viele Grüße,

Poolspieler

von Andreas N. (poolspieler)


Lesenswert?

Hallo Zusammen,
jetzt weiß ich mehr:

ES GEHT NICHT!

Eigentlich ist es auch (fast) logisch.
In HLS kann die Änderung eines #define zu der Änderung der gesamten 
State-Machine führen. Deshalb muss nach jeder Änderung des C-Codes (egal 
wo - auch wenn es Sonderfälle gibt, die dies nicht nötig machen) neu 
compiliert werden - und das geht halt ausschließlich in Vivado-HLS.
Anschließend muss ein Export in Vivado-HLS durchgeführt und der 
IP-Katalog in Vivado aktualisiert werden.

Ganz befriedigend ist das zwar nicht - aber wenn man es weiß, dann ist 
es OK.

Meine Meinung zur Verbesserung von Vivado:
Ich fände es schöner, wenn man direkt in Vivado #defines als Parameter 
hätte (per Doppelklick auf die IP) und ein weiterer Schritt in Vivado 
eingeführt werden würde:
"Recompile HLS IPs" oder so ähnlich...
danach käme "Run Synthesis" und "Run Implementation"
Wer weiß, vielleicht kommt sowas ja mal...

Viele Grüße,

Poolspieler

von Fpgakuechle K. (Gast)


Lesenswert?

Andreas N. schrieb:
> Leider geht es nicht viel anders, wenn man den ZYNQ verwenden möchte.
> Der wird erst ab VIVADO unterstützt.

Nope, ISE Webpack ab 14 unterstützt auch die kleinen Zynqs:
http://www.xilinx.com/products/design-tools/ise-design-suite/ise-webpack.html
http://www.xilinx.com/publications/matrix/Software_matrix.pdf

Da war wohl der Aufschrei zu groß ...

MfG,

von Andreas N. (poolspieler)


Lesenswert?

Hi,
das wusste ich nicht.
Soweit ich weiß, wird die ZYNQ-Familie aber vom EDK nicht unterstützt. 
Das war für mich der ausschlaggebende Punkt zu wechseln.

Und wie gesagt, wenn HLS läuft, dann ist es eine wirklich schöne Sache 
:-)
Auch das aktuelle Vivado 2015.1 ist (bis auf einige Kleinigkeiten) recht 
stabil und gut zu bedienen.



Viele Grüße,

Poolspieler

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.