Hallo,
gibt es eine generische Toolchain um CPLDs mit VHDL unter Linux zu
entwickeln? Sowas in der Art wie avr gcc. Ich möchte mir für einfache
Schaltungen keine 4 GB Windows IDE antun und wir haben hier auch
meistens nur Linuxrechner.
Kennt da jemand was gutes?
"Project IceStorm aims at reverse engineering and documenting the
bitstream format of Lattice iCE40 FPGAs"
Ich steige grade erst in CPLD und FPGA ein. Bisher habe ich nur mit
attinys und atmegas gearbeitet. Da hat mir sehr gefallen, dass der ganze
Assemblercode sauber von Atmel dokumentiert wurde und quasi jeder seine
eigene Toolchain schreiben konnte, wenn jemand unbedingt wollte.
Das hier liest sich aber eher so, als ob jeder Hersteller alles geheim
hält und man entweder mit den IDEs arbeiten sollte, oder es sonst besser
bleiben lassen sollte... ???
>gibt es eine generische Toolchain um CPLDs mit VHDL unter Linux zu>entwickeln?
Welche CPLDs?
>Ich möchte mir für einfache>Schaltungen keine 4 GB Windows IDE antun und wir haben hier auch>meistens nur Linuxrechner.
Ihr habt also auch Windows PCs. Warum sollte man die nicht nutzen?
4GB sind auf modernen SSDs doch nur ein Katzenschiss.
Jan schrieb:> Hallo,>> gibt es eine generische Toolchain
Generisch geht bei CPLD/FPGA und CO. mal gar nichts. Alles
Herstellerspezifisch.
> um CPLDs mit VHDL unter Linux zu> entwickeln? Sowas in der Art wie avr gcc. Ich möchte mir für einfache> Schaltungen keine 4 GB Windows IDE antun und wir haben hier auch> meistens nur Linuxrechner.
Bleibt halt die Frage ob man ohne Not auf die Features der Windows IDE
verzichten will. Will man sicher keine grafische Netzliste (Schaltplan),
Floorplan, Device Explorer etc. etc.
Ganz abgesehen von einem ordentlichen Simulator?
avr-gcc nutzen die meisten Leute ja auch mit einer IDE.
Hast du dir die Windows Tools überhaupt angesehen bevor du drauf
spuckst?
> http://www.clifford.at/icestorm/
Ja das ist halt so ne klassische Linux Sache nech? Ich meine nichts
gegen die Kommandozeile und die typische Webseite im Charme der frühen
90er Jahre, aber will man damit WIRKLICH produktiv CPLD entwickeln?
Klar das sind keine FPGAs aber trotzdem.
> Ich steige grade erst in CPLD und FPGA ein.
Fange mit den Windows Tools an. Und wenn du danach wirklich sagst: "Boa
DAS würde ich jetzt echt gerne auf der Kommandozeile mit Reverse
Engineerten Frickletools machen", dann steige um.
Ich denke aber eher du dankst Bill Gates auf Knien für die Windows
Tools.
>Bisher habe ich nur mit> attinys und atmegas gearbeitet. Da hat mir sehr gefallen, dass der ganze> Assemblercode sauber von Atmel dokumentiert wurde und quasi jeder seine> eigene Toolchain schreiben konnte, wenn jemand unbedingt wollte.
Okeeee
Cyblord -. schrieb:> Ich denke aber eher du dankst Bill Gates auf Knien für die Windows> Tools.
Bill Gates danke ich da erstmal gar nicht.
Das schönste ist, wenn man unverkennbar sieht, dass eine CPLD-IDE mit
darunter liegender Toolchain mal auf einem Unixoiden entwickelt wurde,
aber öffentlich nur für Windows angeboten wird. Wegen Kompatibilität und
so. Lachhaft.
Herr Torvalds schrieb:> Das schönste ist, wenn man unverkennbar sieht, dass eine CPLD-IDE mit> darunter liegender Toolchain mal auf einem Unixoiden entwickelt wurde,> aber öffentlich nur für Windows angeboten wird. Wegen Kompatibilität und> so. Lachhaft.
Und welche soll das sein?
Ich nutze schon seit einpaar Jahren für die XC95 von Xilinx ein
"ausgeschlachtetes" WebPack (7.1) welches ungefähr 700MB belegt. Das
Verzeichnis habe ich im Laufe der Jahre mittlerweile auf den 4.Laptop
kopiert, zusätzlich muss man nur die /etc/ld.so.conf ergänzen und muss
ggf. noch ein paar 32-Bit Kompatibilitäts-Bibliotheken über den
Paketmanager installieren.
Und dazu ein eigenes Script:
http://www.jcwolfram.de/projekte/cpldlinux/main.php
Das kann man auch via Makefile aufrufen, als Programmer nutze ich aber
inzwischen meinen eigenen (UPROG2).
Jörg
Cyblord -. schrieb:> Bleibt halt die Frage ob man ohne Not auf die Features der Windows IDE> verzichten will. Will man sicher keine grafische Netzliste (Schaltplan),> Floorplan, Device Explorer etc. etc.> Ganz abgesehen von einem ordentlichen Simulator?Cyblord -. schrieb:> Ich denke aber eher du dankst Bill Gates auf Knien für die Windows> Tools.
So ein Blödsinn.
Alle namhaften Hersteller bieten Ihre Entwicklungswerkzeuge nicht nur
für Windows, sondern auch und gerade für Linux an. Schaut man unter die
Haube der Windows-Werkzeuge, findet man bei jedem deutlich "unixoide"
Elemente. Jedes mir bekannte solche Tool basiert z.B. entweder auf
Cygwin oder benutzt es zumindest irgendwo.
Warum man ausgerechnet Bill Gates (der gegen solcherlei Tun immer mal
wieder in schmutzige Kriege zog) dafür danken sollte, will mir so gar
nicht einleuchten.
Ich habe vor einem halben Jahr Quartus 18.1 unter Ubuntu installiert.
Ein Projekt mit EPM1270 das mit der Windows-Version gelaufen war lief
jedenfalls anstandslos durch, mehr habe ich noch nicht probiert.
Allerdings hat schon das tar-File 6,6 GByte.
In den offiziellen Ubuntu-Paketquellen ist nur das oben genannte
icestorm enthalten, hier die Fundstellen von synaptic mit Suchbegriff
"FPGA". Für "CPLD" findet es nur den JTAG-Programmer.
Viele Programme für Chip- oder FPGA-Entwurf gehen bis in die 80er und
90er zurück und wurden damals für UNIX entwickelt. Erst später als PC so
langsam die Leistung von UNIX-Workstationen erreichten wurden diese
Programme nach Linux (einfach) und Windows (aufwendig) portiert.
Altera verwendet in den aktuellen Quartusversionen Qt5 um leicht Windows
und Linuxversionen anbieten zu können. In der neuesten Pro braucht die
Nios-Toolchain sogar das Windows Subsystem for Linux aus den neueren W10
Versionen. Andererseits gibts es den Advanced Link Analyzer nur für
Windows.
Xilinx scheint in der ISE auch Qt zu verwenden. Vivado wahrscheinlich
auch.
Ebenso Lattice mit ICEcube und Radiant.
Microsemi Libero ist ebenfalls für Windows und Linux erhältlich.
Gibt es überhaupt irgendwas aus diesem Bereich nur für Windows oder
Linux?
Blechbieger schrieb:> Xilinx scheint in der ISE auch Qt zu verwenden. Vivado wahrscheinlich> auch.
Korrekt.
Blechbieger schrieb:> Gibt es überhaupt irgendwas aus diesem Bereich nur für Windows oder> Linux?
Der HDL Simulator von Aldec macht nur Windows mit. Sehr aergerlich wenn
man Lattice Diamond unter Linux nutzt, die der integrierte Simulator
praktisch von Aldec ist.
Blechbieger schrieb:> Viele Programme für Chip- oder FPGA-Entwurf gehen bis in die 80er und> 90er zurück und wurden damals für UNIX entwickelt. Erst später als PC so> langsam die Leistung von UNIX-Workstationen erreichten wurden diese> Programme nach Linux (einfach) und Windows (aufwendig) portiert.
Hab ich anders in Erinnerung, der Linux-Port kam deutlich später als der
DOS/Windows-Port, jedenfalls bei Xilinx. Xilinx hat auch die verwendeten
GUI-library gewechselt, QT war da nicht der erste Versuch. Auf Windows
wie auf Linux ist die Xilinx GUI recht absturzfreudig (gewesen?), bei
Pin-Planner hatte man den Eindruck, das der ein 30 minuten Crash timeout
fest eingebaut hat. Insgesamt fährt man deutlich besser, wenn man die
GUI meidet resp. durch scripte ersetzt.
>Der HDL Simulator von Aldec macht nur Windows mit. Sehr aergerlich wenn>man Lattice Diamond unter Linux nutzt, die der integrierte Simulator>praktisch von Aldec ist.
gtkwave als Ersatz ist nicht schlecht:
Beitrag "GHDL und gtkwave Grundlagen"
Tobias B. schrieb:> Der HDL Simulator von Aldec macht nur Windows mit. Sehr aergerlich wenn> man Lattice Diamond unter Linux nutzt, die der integrierte Simulator> praktisch von Aldec ist.
Diese Aussage ist für den Endnutzer im Prinzip richtig. Lattice liefert
als Simulator Active-HDL von Aldec mit, der nur für Windows verfügbar
ist. Von Aldec gibt es aber auch den teureren Riviera Simulator der
sowohl unter Linux und Windows läuft.
Herr Torvalds schrieb:> Das schönste ist, wenn man unverkennbar sieht, dass eine CPLD-IDE mit> darunter liegender Toolchain mal auf einem Unixoiden entwickelt wurde,> aber öffentlich nur für Windows angeboten wird.
- ISE benutzt Cygwin
- Vivado benutzt MSYS (is a collection of GNU utilities such as bash,
make, gawk and grep to allow building of applications and programs which
depend on traditionally UNIX tools to be present)
- Synopsis Identify RTL debugger (vergleichbar mit Xilinx Chipscope, bei
Microsemi Libero SoC dabei) installiert gtkwave :-)
Cyblord -. schrieb:>> http://www.clifford.at/icestorm/>> Ja das ist halt so ne klassische Linux Sache nech? Ich meine nichts> gegen die Kommandozeile und die typische Webseite im Charme der frühen> 90er Jahre, aber will man damit WIRKLICH produktiv CPLD entwickeln?> Klar das sind keine FPGAs aber trotzdem.
Klar sind das FPGAs.
Unter Linux ist Icestorm die einfachste und schnellste Art mit ICE40 und
ECP5 FPGAs zu arbeiten.
Allerdings wird nur Verilog (mit ein paar System-Verilog Erweiterungen)
unterstützt.
Zur Simulation gibt's Icarus und Verilator, die nicht zu Icestorm
gehören.
Es gibt keine offene Toolchain für CPLDs.
Für FPGAs gibt es SymbiFlow (https://symbiflow.github.io/) als
übergeordnetes Projekt. Das baut auf Yosys, IceStorm etc. auf.
Der Rest ist eine Sache des Reverse Engineerings - für Xilinx Artix-7
gibt es auch ein Projekt. Aber das ist durch die Komplexität ein paar
Größenordnungen schwieriger als bei den ICE40....
Carl schrieb:>>Der HDL Simulator von Aldec macht nur Windows mit. Sehr aergerlich wenn>>man Lattice Diamond unter Linux nutzt, die der integrierte Simulator>>praktisch von Aldec ist.>> gtkwave als Ersatz ist nicht schlecht:>> Beitrag "GHDL und gtkwave Grundlagen"
Naja, zum Entwickeln taugt das nicht wirklich. Da verwend eich am
liebsten von Mentor Questasim.
Aber GDHL Im Docker Container fuer automatisierte Unit-Tests sind eine
feine Sache. :-)
Christophz schrieb:> Diese Aussage ist für den Endnutzer im Prinzip richtig. Lattice liefert> als Simulator Active-HDL von Aldec mit, der nur für Windows verfügbar> ist. Von Aldec gibt es aber auch den teureren Riviera Simulator der> sowohl unter Linux und Windows läuft.
Das ist korrekt. Ist zwar schade, aber jetzt kein Neckbreaker um auf
Lattice zu verzichten. Ein Vorteil hats: Man bekommt die Vertriebler am
Telefon relativ einfach abgewimmelt - "Kein Linux Support?
Uninteressant. Aber sonst haette ich mir das gerne angeschaut." ;-)
>Unter Linux ist Icestorm die einfachste und schnellste Art mit ICE40 und>ECP5 FPGAs zu arbeiten.
Kann man für die synthetisieren und flashen?:
http://www.gnarlygrey.com/?i=1>Naja, zum Entwickeln taugt das nicht wirklich. Da verwend eich am>liebsten von Mentor Questasim.
Wieso nicht? GHDL kompiliert unglaublich schnell, damit entwickelt man
kleinere Schaltungen fast wie mit einem C-Compiler/Simulator.
Carl schrieb:> Wieso nicht? GHDL kompiliert unglaublich schnell, damit entwickelt man> kleinere Schaltungen fast wie mit einem C-Compiler/Simulator.
Muhahaha, die Compilezeiten sind die geringste Ursache, warum bei
C-Programmierer das FPGA-Programmieren Ewigkeiten dauert.
Carl schrieb:> Kann man für die synthetisieren und flashen?:>> http://www.gnarlygrey.com/?i=1
Ja, mit dem Upduino 2 geht das relativ einfach, da dort auch der FTDI
Chip mit drauf ist.
Hier ein Link mit einfachen Beispielen und Beschreibung zum Einstieg:
https://github.com/osresearch/up5k
Man ist bei Icestorm und Co nicht unbedingt auf Kommandozeile und
Makefiles angewiesen, es gibt z.B. auch das Icestudio, eine IDE bei der
man fertige Blöcke grafisch verbindet. Man kann auch eigene Blöcke
(=Module) mit Verilog erstellen.
https://github.com/FPGAwars/icestudio
Allerdings geht nicht ganz alles, was die Lattice Tools bieten, und vor
allem sind die Ergebnisse nicht ganz so schnell und benötigen oft mehr
LUTs. Dagegen sind mit den OpenSource Tools auch Dinge möglich, die
Lattice bewusst verhindert.
Danke für die Links.
Andi schrieb:
>Allerdings geht nicht ganz alles, was die Lattice Tools bieten, und vor>allem sind die Ergebnisse nicht ganz so schnell und benötigen oft mehr>LUTs.
Das klingt beunruhigend. Was geht nicht?
>Dagegen sind mit den OpenSource Tools auch Dinge möglich, die>Lattice bewusst verhindert.
Das wiederum klingt spannend. Was könnte man den mehr machen, als mit
den Tools?
Jan schrieb:> gibt es eine generische Toolchain um CPLDs mit VHDL unter Linux zu> entwickeln?
Es gibt keine generischen CPLD's, sondern nur spezielle - und die
eigentlich nur von Xilinx. Andere Chips z.B. Mach von Lattice sind m.W.
eigentlich FPGA's und keine CPLD's. Und die Altera MAX "CPLD's" sind
definitiv keineCPLD's, sondern FPGA's - und sie sind vergleichsweise
langsam.
Und weil es eben keine generischen CPLD's gibt, gibt es auch keine
generischen Toolchains dafür, sondern nur die vom jeweiligen Hersteller.
> Kennt da jemand was gutes?
Entweder wirst du bei dem von dir gewählten Hersteller fündig oder du
muß dir für kleines Geld nen gebrauchten Windows-PC zulegen. Billiger
wird's nicht.
Ich würde für Xilinx-CPLD's einfach ne ISE-10.x installieren, die läuft
stabiler als die noch älteren Versionen und sie ist noch nicht so
unsäglich fett wie die späteren ISE's. Für CPLD's reicht sie allemal
aus. Und da fast alles in der ISE per TCL gemacht wird, vermute ich mal,
daß die ganze ISE auch unter wine läuft.
W.S.
W.S. schrieb:> Es gibt keine generischen CPLD's, sondern nur spezielle - und die> eigentlich nur von Xilinx. Andere Chips z.B. Mach von Lattice sind m.W.> eigentlich FPGA's und keine CPLD's. Und die Altera MAX "CPLD's" sind> definitiv keineCPLD's, sondern FPGA's - und sie sind vergleichsweise> langsam.
Die Frage ist ob der TO wirklich echte CPLDs möchte, oder ob es einfach
nur darum geht mit kleineren / einfacheren Bauteilen in das Thema
programmierbare Logik einzusteigen.
Wenn es um letzteres geht, würde ich nicht nach echten CPLDs schauen,
sondern nach FPGAs.
Denn die echten CPLDs sind generell ältere Designs die langsam für neue
Designs nicht mehr empfohlen werden. Neu entwickelt werden von den
Herstellern eigentlich nur noch FPGAs. Ob die kleineren davon dann von
den Marketingabteilungen als CPLDs gelabelt werden oder nicht ist davon
unabhängig.
Hans schrieb:> Andi schrieb:>>Allerdings geht nicht ganz alles, was die Lattice Tools bieten, und vor>>allem sind die Ergebnisse nicht ganz so schnell und benötigen oft mehr>>LUTs.>> Das klingt beunruhigend. Was geht nicht?
Ich bin mir jeweils nicht sicher, ob es nicht geht, oder einfach die
Beschreibung fehlt. Wenn man beim Author nachfragt, hat er meist eine
Lösung, oder baut es in die nächste Version ein. Es ist wohl einfach
eine Frage der Zeit.
Aber was man vermisst sind die einfachen Konfiguriermöglichkeiten der
Pins und Wizards für oft verwendete IPs.
Auch die Performance hat sich mit dem neuen Place and Route verbessert,
erreicht aber noch nicht die von Lattice.
>>Dagegen sind mit den OpenSource Tools auch Dinge möglich, die>>Lattice bewusst verhindert.>> Das wiederum klingt spannend. Was könnte man den mehr machen, als mit> den Tools?
Zum Beispiel sind die DSP Blöcke im UltraPlus nicht ganz fehlerfrei.
Lattice lässt darum nur einige getestete DSP Konfigurationen zu. Mit
Icestorm kann man alle Konfigurationsbits einstellen, wie man will, und
muss dann halt selber testen ob's auch funktioniert. Und es funktioniert
mehr als Lattice meint.
Oft verkauft ein Hersteller den selben Chip in verschiedenen Versionen,
wobei die kleineren Versionen nur vom Tool künstlich beschränkt werden.
Das OpenSource Tool kennt solche marketing-getriebenen Beschränkungen
nicht.
Andi schrieb:> Zum Beispiel sind die DSP Blöcke im UltraPlus nicht ganz fehlerfrei.> Lattice lässt darum nur einige getestete DSP Konfigurationen zu. Mit> Icestorm kann man alle Konfigurationsbits einstellen, wie man will, und> muss dann halt selber testen ob's auch funktioniert. Und es funktioniert> mehr als Lattice meint.
Nein es scheint lediglich mehr zu funktionieren, als der Hersteller im
Rahmen seiner Produkthaftung garantiert.
Die kritischen Fällen (alle Betriebsparameter wie Taktung,
Spannungslevel an Versorgungungs- und Signal-Pin sowie Temperatur auf
Grenze zum Erlaubten) testet der Anwender garnicht. Und wenn dann mal
ein Gerät im Feld deswegen Mist baut, zuckt man auch nur mit den
Schultern und behebt das Problem per Neustart.
Langzeitschäden wäre auch so ein Thema das man mit Antesten von
zwangsweise verhinderten Arbeitsmodi nicht erfasst. Ist halt wie
Overclocking - you're on your own risk.
Gerd E. schrieb:> Wenn es um letzteres geht, würde ich nicht nach echten CPLDs schauen,> sondern nach FPGAs.>> Denn die echten CPLDs sind generell ältere Designs...
Und? So ein NE555 oder 74HCxyz sind auch ältere Designs. Aber neuere
FPGA's sind ne bessere Einnahmequelle für deren Hersteller.
Die Anwendungsbereiche von FPGA's und CPLD's sind halt unterschiedlich.
Dazu kommt, daß gerade bei FPGA's immer wieder das Thema des
Konfigurations-Flash's hochkommt und die wenigen FPGA's, wo sowas als
Sandwich-Chip eingebaut ist, sind mit ihren Anschlüssen und deren
Verwendung auch eher zickig. Da ist ein CPLD unproblematischer in jeder
Beziehung.
W.S.
W.S. schrieb:> Dazu kommt, daß gerade bei FPGA's immer wieder das Thema des> Konfigurations-Flash's hochkommt und die wenigen FPGA's, wo sowas als> Sandwich-Chip eingebaut ist, sind mit ihren Anschlüssen und deren> Verwendung auch eher zickig. Da ist ein CPLD unproblematischer in jeder> Beziehung.
Dieses Thema betrifft nur reine SRAM basierte FPGAs (Intel, Xilinx). Ja,
diese zwei Chips in einem Gehäuse (FPGA + Flash) Variante ist eher
speziell.
Microchip/Microsemi verbaut Flash Zellen für Konfigurationsbits, da
brauchts kein externes Flash.
Lattice MachXO* bzw. XP2 verwenden zwar SRAM Zellen für
Konfigurationsbits bauen aber auf das selbe Die Flashspeicher um diese
Zellen beim Einschalten parallel (also im Vergleich schnell) zu laden.
Das erlaubt es z. B. dass der FPGA ein Design eingebrannt hat, das immer
funktioniert oder das Booten erlaubt und ein externer Prozessor lädt
dann später ein anderes Design direkt in die SRAM Konfigurationsbits.
Lattice ICE* FPGAs sind one-time-programmable (OTP) -> brauchen in
Endgeräten typischerweise auch kein Flash. Während der Entwicklung oder
in Systemen mit Prozessor können sie aber auch per Flash Chip oder SPI
konfiguriert werden.
Christophz schrieb:> Lattice MachXO* bzw. XP2 verwenden zwar SRAM Zellen für> Konfigurationsbits bauen aber auf das selbe Die Flashspeicher um diese> Zellen beim Einschalten parallel (also im Vergleich schnell) zu laden.
Das machen auch die derzeit üblichen "normalen" CPLDs, sogar schon die
alten 95er von Xilinx aus dem letzten Jahrtausend. Beim Einschalten wird
dort die Konfiguration parallel aus dem Config-EEPROM in die SRAM-Zellen
kopiert. Siehe dazu die XAPP440:
1
CPLDs must reset to a known state and load an internal
2
configuration pattern (EPROM) into volatile logic cells (SRAM),
3
extremely quickly, to appear "instantaneously on".
4
In the case of CoolRunnerTM CPLDs, to save power, internal EPROM
5
cells are powered down after configuration.
6
Configuration is also performed in XC9500TM, XC9500XLTM, and XC9500XVTM...