Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung...

13
Von SystemC zum FPGA in 7 Schritten Kurzes Tutorial für die Synthese von SystemC Entwürfen auf dem ISMS Server der Hoch- schule Bremen. Mirko Kruse 21. November 2004

Transcript of Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung...

Page 1: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

Von SystemC zum FPGA in 7 Schritten Kurzes Tutorial für die Synthese von SystemC Entwürfen auf dem ISMS Server der Hoch-schule Bremen. Mirko Kruse 21. November 2004

Page 2: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

Inhalt 1 Einleitung ..........................................................................................................................1 2 Benötigte Software............................................................................................................1

2.1 SystemC Entwicklungsumgebung ............................................................................1 2.2 Xilinx Entwicklungsumgebung ..................................................................................1 2.3 Putty und WinSCP....................................................................................................2 2.4 X-Win32 X-Server.....................................................................................................2

3 So wird’s gemacht.............................................................................................................2 Schritt 1: SystemC-Entwurf erstellen ....................................................................................2 Schritt 2: Verbindung zum Server aufbauen.........................................................................3

Putty einrichten .................................................................................................................4 WinSCP einrichten ............................................................................................................5

Schritt 3: Projektverzeichnis erstellen...................................................................................6 Schritt 4: Synopsys „Design Compiler“ starten .....................................................................6 Schritt 5: Verilog Datei aus dem SystemC Entwurf generieren ............................................7 Schritt 6: Synthetisierung mit dem Xilinx ISE Tool................................................................8 Schritt 7: Programmieren des FPGA ..................................................................................10

Page 3: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf für den Einsatz auf realer Hardware zu synthetisieren. Als Ziel-FPGA ist ein Xilinx Spartan3 FPGA (XC3S200) auf einem Digilent Entwicklungsbo-ard vorgesehen. Grundkenntnisse von SystemC und der Verwendung der Entwicklungsum-gebung Visual C++ 6.0 sind vorausgesetzt.

2 Benötigte Software Die einzelnen Schritte, vom SystemC-Entwurf bis zur Programmierung des Xilinx FPGA, er-fordern unterschiedliche Software-Tools. Die hier aufgeführten Anwendungen sind dabei als eine Bespielkonstellation anzusehen.

2.1 SystemC Entwicklungsumgebung Für die Entwicklung von SystemC-Entwürfen wird Microsoft Visual C++ in der Version 6.0 mit Service Pack 6 verwendet. Visual C++ ist kostenpflichtig. URL des Visual Studio Service Pack 6 (ca. 64 MB): http://www.microsoft.com/downloads/details.aspx?displaylang=de&FamilyID=a8494edb-2e89-4676-a16a-5c5477cb9713

2.2 Xilinx Entwicklungsumgebung Xilinx bietet das ISE WebPack 6.3i Paket zum freien Download an. Das WebPack unterstützt nur die Betriebsysteme Windows 2000 und XP. Vor dem Download muss man sich kostenlos auf der Xilinx Homepage registrieren. Direkte URL zum Xilinx WebPack Download Bereich: http://www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?sGlobalNavPick=PRODUCTS&sSecondaryNavPick=Design+Tools&key=DS-ISE-WEBPACK Für die Simulation wird ModelSim in der Xilinx Edition (ModelSim MXE II) verwendet. Model-Sim kann nicht nur für die Simulation von HDL-Entwürfen sondern auch für die Darstellung von aus SystemC generierten Simulationsdateien (Tracedateien) eingesetzt werden. Direkte URL zum ModelSim Download Bereich: http://www.xilinx.com/xlnx/xebiz/designResources/ip_product_details.jsp?key=DO-SIM-VHDL-ETH Nach der Installation von ModelSim muss eine Lizenz bei Xilinx beantragt werden. Dieser Vorgang ist kostenlos. In der ModelSim Programmgruppe im Startmenü findet sich ein Assis-tent, der bei der Beantragung der Lizenz behilflich ist. Bei erfolgreicher Beantragung erhält man eine Lizenzdatei, die im Lizenzmanager eingebunden werden muss.

- 1 -

Page 4: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

2.3 Putty und WinSCP Der Zugriff auf den Hochschulserver erfolgt mit dem SSH Client Putty. Der Client besteht aus einer einzigen .exe Datei. Download URL Putty: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html Damit Dateien auf komfortable Weise zwischen dem lokalen Rechner und dem Hochschul-server kopiert werden können, wird WinSCP benötigt. Download WinSCP: http://winscp.sourceforge.net/eng/download.php

2.4 X-Win32 X-Server Der X-Win32 X-Server kann in einer Evaluations Version von der Homepage des Herstellers heruntergeladen werden. Nach einer Registrierung kann man den X-Server 30 Tage lang testen, danach wechselt die Anwendung in einen Demomodus. Download X-Win32: http://www.starnet.com/products/downloads.asp X-Win32 wird benötigt, um die grafischen Ausgaben der Anwendungen auf dem Hochschul-server lokal ausgeben zu können.

3 So wird’s gemacht

Schritt 1: SystemC-Entwurf erstellen Als Beispiel soll ein Zähler entwickelt werden, der im Binärformat zählt. Der SystemC-Entwurf besteht aus den beiden Dateien bincount.h und bincount.cpp. bincount.h #include "systemc.h" SC_MODULE(BINCOUNT) { sc_in<bool> clk_i; sc_in<bool> reset_i; sc_out< sc_uint<8> > output_o; sc_signal<bool> clkDiv; void doIt(); void taktteiler();

- 2 -

Page 5: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

SC_CTOR(BINCOUNT) { SC_METHOD(taktteiler); sensitive_pos << clk_i; sensitive_pos << reset_i; SC_METHOD(doIt); sensitive_pos << clkDiv; sensitive_pos << reset_i; } }; bincount.cpp #include "bincount.h" void BINCOUNT::taktteiler() { int myDiv; bool clkDiv_temp; if(reset_i.read()) { myDiv = 0; clkDiv = false; clkDiv_temp = false; } else { clkDiv_temp = clkDiv; if(myDiv <= 50000000) { myDiv++; } else { myDiv = 0; clkDiv_temp = !(clkDiv_temp); } clkDiv.write(clkDiv_temp); } } void BINCOUNT::doIt() { int counter; if(reset_i.read()) { counter = 0; } else { if(counter < 256) counter++; else counter = 0; output_o.write(counter); } }

Schritt 2: Verbindung zum Server aufbauen Im nächsten Schritt müssen beide Dateien zum Hochschulserver übertragen werden, um die Kompilierung mit dem Synopsys CoCentric SystemC Compiler vornehmen zu können. Die Adresse des Hochschulservers lautet: www.isms.hs-bremen.de . Der Server nimmt Anfragen an den SSH Port 22 an.

- 3 -

Page 6: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

Putty einrichten Nach dem Download muss Putty gestartet werden. In der Konfigurationsansicht wird die Serveradresse angegeben. Protocol ist SSH. Die Einstellungen können in einem Profil ge-speichert werden, um sie zu einem späteren Zeitpunkt erneut aufzurufen.

Zusätzlich müssen die Tunnel-Optionen eingestellt werden (Connection -> SSH -> Tunnels). In der Gruppe „X11 forwarding“ muss die Option „Enable X11 forwarding“ aktiviert werden.

- 4 -

Page 7: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

Anschließend kann mit Putty die Verbindung zum Server aufgebaut werden. Der Server ant-wortet mit einer Loginanforderung. Ein Loginname/Passwort muss vom zuständigen Labor-mitarbeiter bezogen werden.

WinSCP einrichten Nach dem Start von WinSCP muss die Adresse des Servers sowie Benutzername und Passwort angegeben werden.

WinSCP bietet nach dem Login eine Oberfläche ähnlich der des Norton Commanders. Auf der linken Seite befindet sich das Dateisystem des lokalen Rechners, auf der rechten Seite das des Servers.

- 5 -

Page 8: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

Schritt 3: Projektverzeichnis erstellen Auf dem Server sollte für jeden SystemC Entwurf ein eigenes Verzeichnis angelegt werden, in das alle relevanten Dateien kopiert werden. Per WinSCP werden die Dateien vom lokalen Rechner in das Verzeichnis auf dem Server übertragen. Im Falle des Beispiels „Zähler“ wird ein Verzeichnis mit dem Namen „tutorial“ angelegt und die Dateien „bincount.h“ und „bincount.cpp“ hineinkopiert.

Schritt 4: Synopsys „Design Compiler“ starten Nachdem sich die Quelldateien auf dem Server befinden können sie mit dem Synopsys SystemC Compiler in eine Verilog Datei konvertiert werden. Zunächst muss mit Putty in das Verzeichnis mit den Quelldateien navigiert werden. Vor dem Aufruf der Synopsys X11-Oberfläche muss der lokale X-Win32 X-Server gestartet werden. In der Regel erscheint nach der Installation beim ersten Start des X-Servers ein As-sistent, mit dem eine Verbindung eingerichtet werden kann. Dieser sollte einfach beendet werden. Der X-Server ist bereit, wenn in der Taskleiste ein blaues X erscheint.

Ist der X-Server gestartet kann die X11-Oberfläche mit Eingabe des Befehls synopsys ge-startet werden.

Es erscheint ein Fenster des X-Servers, welches die grafische Ausgabe des Befehls anzeigt.

- 6 -

Page 9: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

In diesem Fenster wird der Synopsys Design Compiler gestartet in dem in der Befehl dc_shell eingegeben wird.

Schritt 5: Verilog Datei aus dem SystemC Entwurf generieren Der SystemC Compiler kann den SystemC-Entwurf entweder in ein spezielles „db“ Format für die weitere Verwendung in Synopsys Tool kompilieren oder eine Verilog Datei erstellen. Die Verilog Datei muss im Anschluss mit dem Xilinx ISE Tool für den entsprechenden FPGA Chip synthetisiert werden. Das Erstellen der Datei wird mit folgendem Befehl angestoßen:

compile_systemc –rtl <dateiname> -rtl_format verilog

- 7 -

Page 10: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

Ist die Kompilierung erfolgreich verlaufen, kann die Verilog Datei mit WinSCP auf den lokalen Rechner zurückkopiert werden. Sie befindet sich im Unterverzeichnis „rtl_work“ im Projekt-verzeichnis auf dem Server (bincount.v).

Schritt 6: Synthetisierung mit dem Xilinx ISE Tool Im Xilinx Projekt Navigator wird ein „HDL“ Projekt erstellt. Die Verilog Datei wird vom Server in das soeben erstellte Projektverzeichnis kopiert und in das ISE Projekt mit aufgenommen (Add Source -> als Verilog Design Module).

- 8 -

Page 11: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

Vor dem Zuweisen der PIN-Belegung am FPGA sollte ein „Synthesize – XST“ Durchlauf ge-startet werden. Schlägt der Vorgang fehl, sollten die Fehlermeldungen und Warnungen ana-lysiert werden. Ggf. muss der SystemC Quellcode verändert werden, um die Synthese zu ermöglichen. Ist die Synthese erfolgreich können die Pins des FPGA definiert werden. Im ISE Tool wird mit dem Aufruf von „User Constraints“ -> „Assign Package Pins“ das Xilinx Pace-Tool gestar-tet.

- 9 -

Page 12: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

Schritt 7: Programmieren des FPGA Eine Programmierdatei wird mit „Generate Programming File“ erzeugt. Das FPGA wird mit „iMPACT“ programmiert. In iMPACT muss die Programmdatei (hier bincount.bit) dem FPGA zugewiesen werden.

- 10 -

Page 13: Von SystemC zum FPGA in 7 Schritten - FBE - · PDF fileSystemC zu FPGA Tutorial 1 Einleitung Dieses kurze Tutorial soll die Schritte aufzeigen, die nötig sind, einen SystemC-Entwurf

SystemC zu FPGA Tutorial

Anschließend wird das FPGA in der JTAG Chain per Mausklick ausgewählt und die Pro-grammierung über „Operations“ -> „Program“ eingeleitet.

- 11 -