Forum: FPGA, VHDL & Co. Mais-CPU veröffentlicht 32bit Softcore


von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Wie in dem Thread Beitrag "Softcore 32bit" schon 
einmal andiskutiert, habe ich eine MIPS kompatible CPU geschrieben.

Es ist der GCC als C-Compiler nutzbar, was die Programmierung 
vereinfacht.

Um die MAIS-CPU besser anzubinden, habe ich einen einfachen digitalen 
Bus spezifiziert. Diesen Bus habe ich den Namen "Simple Pipelined Bus" 
gegeben.
Es gab einfach keinen einfacheren Bus als Schnittstelle CPU und 
Peripherie.


Die CPU ist einem top file MAIS-soc.vhd mit drei Bus Slaves verbunden.
Einem UART, einem Busdummy und dem Speicher.

Der Speicher memory/spb_memory.vhd wird mit einem Convertertool elf2vhdl 
erzeugt.
Zum Nachvollziehen sind dem VHDL Code Softwarebeispiele und Makefiles 
beigelegt.

Der VHDL Code ist unter CC BY-NC 3.0 veröffentlicht.
Das heißt Namensnennung und nicht kommerzielle Verwendung.
Eine kommerzielle Verwendung ist als kostenpflichtige Ausnahme ergänzt.

Viel Spaß damit.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Ja, da habe ich doch was vergessen.

http://www.dossmatik.de/mais-cpu.html

von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

Also ich mache ja auch VHDL aber das muss eine Schweinearbeit sein, 
sowas zu biegen. Mann, Mann, ich habe schon genug zu tun, die 32Bitter 
zu programmieren :-)

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Martin Kluth schrieb:
> Also ich mache ja auch VHDL aber das muss eine Schweinearbeit sein,
> sowas zu biegen. Mann, Mann, ich habe schon genug zu tun, die 32Bitter
> zu programmieren :-)

Ja, hast es gut erkannt.
Es war manchmal auch frustrierend. Wenn es lief, war es einfach nur 
genial. Noch dazu, das habe ich nicht in meiner Arbeitszeit 
programmiert. Deshalb hat es auch fast drei Jahre gedauert.


I hatte nie das Geld, nur mal so zum spielen ein Lizenz für einen 
Softcore in einer höheren Entwicklungsumgebung auszugeben. Mittlerweile 
sind in gewissen Paketen welche mit drin.
Auf Opencores hatte ich auch nicht das Gewünschte gefunden.

Dann habe ich mal angefangen.

Erst mit 8bit und dann mit 32bit.

Würde mich freuen, wenn sich hier aus dem Forum Erfolgsmeldungen 
auftauchen.

Bin auf Rückmeldungen schon gespannt, lasse mir zum Ersten mal richtig 
unter die Haube schauen.

von Martin K. (mkmannheim) Benutzerseite


Lesenswert?

Hat Dein Core irgendwelche Besonderheiten und welche, die ihn über die 
anderen erheben?

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Ich habe versucht keine Vergleiche zu anderen gezogen.
Wollte nicht Überheblich werden.

Also die wichtigsten Vorzügen sind:

- durch das Pipelining ist eine höhere Frequenz erreichbar
- pro Takt Abarbeitung eines Befehls
- resourcenschonend
- einfache Busanbindung ohne Overhead und Resourcenverschwendung
- VHDL code verfügbar
- im VHDL Simulator simulierbar
- es existieren C-Compiler
- die CPU ist unabhängig vom FPGA-Hersteller nutzbar
- einfacherer Wechsel des FPGAs bei einem Redesign
- zukunftssicher / VHDL-Code kann nicht obsolete werden

von pks (Gast)


Lesenswert?

Servus,

schicke Sache - Respekt für die Ausdauer! Ich frage mich allerdings, 
warum Du für die Anbindung von Peripherie einen eigenen Bus definiert 
hast. Warum nicht, wie z.B. beim Plasma, einen Wishbone?

von pks (Gast)


Lesenswert?

Da hab ich mich vertan, die Plasma CPU hat ja gar kein Wishbone. 
Trotzdem...will Wishbone! ;-)

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Die Wishbone Spezifikation hat leider mehrere Unterbus in der 
Spezifikation. Diese sind nicht sauber von einander getrennt.
Die Spezifkation fängt mit Regeln an und hat vergessen zu sagen wie es 
richtig ist.

Wenn du mir sagst welchen Typ du verwenden willst kann ich dir es 
schreiben. Das sollte nicht das Problem sein.
Sende mirbitte ein Timing Diagram von deinen Buszyklen.


Ich habe als Vorbild den AHB-Lite genommen. Da fangen nur alle Signale 
mit dem Buchstaben H an.
Ich benutzte für die Busbreite nicht HSize sondern eine Maske welche(s) 
Byte   übertragen werden. So ist auch eine Übertragung von 24bit (3byte) 
möglich.

Wer mit AHB-Lite vertraut ist der findet sich schnell zurecht.

von pks (Gast)


Lesenswert?

Mir ist bisher nicht aufgefallen, dass da in der WB-Spec was nicht 
passt. Das Timing ist doch sauber definiert, richtet sich aber eben 
danach, welche Bus-Features ein Teilnehmer unterstützt. Aber passt 
schon, im Bedarfsfall sollte eine Wb-Bridge ja schnell geschrieben sein.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

pks schrieb:

Du hast den Plasma erwähnt.
Eine Sehr schöne Sache. Leider ist hier am VHDL Code nicht mehr viel 
passiert. Der Plasma unterstützt die Befehle LWL, LWR, SWL und SWR 
nicht. Deshalb ist beim Plasma ein modifizierter GCC notwendig ,das ist 
bei mir nicht notwendig.

Ja es gibt auch andere MIPS Implementierungen. Leider sind diese auf 
halben Weg stehen geblieben.

Gerade das einfache Businterface macht die MAIS-CPU universell 
einsetzbar.

von Mark B. (markbrandis)


Lesenswert?

Wofür steht denn das MAIS bei der Mais-CPU?

von pks (Gast)


Lesenswert?

Wo findet man denn die Bedingungen für die kommerzielle Nutzung?

von Fabian G. (kjion) Benutzerseite


Lesenswert?

Wie groß bzw. wie schnell ist das Ganze denn in einem FPGA? Gibt es 
dafür konkrete Zahlen, zum Beispiel für einen Spartan 6? 
"resourcenschonend" und "höhere Taktfrequenz" sind leider sehr relativ.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Spartan 6
Target Device                      : xc6slx16-3-csg324

Mit Multiplizierer Einheit:


Device utilization summary:
---------------------------

Selected Device : 6slx16csg324-3


Slice Logic Utilization:
 Number of Slice Registers:            2314  out of  18224    12%
 Number of Slice LUTs:                 2947  out of   9112    32%
    Number used as Logic:              2869  out of   9112    31%
    Number used as Memory:               78  out of   2176     3%
       Number used as RAM:               44
       Number used as SRL:               34

Slice Logic Distribution:
 Number of LUT Flip Flop pairs used:   4259
   Number with an unused Flip Flop:    1945  out of   4259    45%
   Number with an unused LUT:          1312  out of   4259    30%
   Number of fully used LUT-FF pairs:  1002  out of   4259    23%
   Number of unique control sets:        78

IO Utilization:
 Number of IOs:                           5
 Number of bonded IOBs:                   5  out of    232     2%

Specific Feature Utilization:
 Number of Block RAM/FIFO:                9  out of     32    28%
    Number using Block RAM only:          9
 Number of BUFG/BUFGCTRL/BUFHCEs:         1  out of     16     6%
 Number of DSP48A1s:                      4  out of     32    12%

Asynchronous Control Signals Information:
----------------------------------------
No asynchronous control signals found in this design

Timing Summary:
---------------
Speed Grade: -3

   Minimum period: 11.924ns (Maximum Frequency: 83.866MHz)
   Minimum input arrival time before clock: 3.418ns
   Maximum output required time after clock: 3.597ns
   Maximum combinational path delay: No path found

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Spartan 6
Target Device                      : xc6slx16-3-csg324

Ohne Multiplizierer Einheit:


Selected Device : 6slx16csg324-3


Slice Logic Utilization:
 Number of Slice Registers:            2041  out of  18224    11%
 Number of Slice LUTs:                 2636  out of   9112    28%
    Number used as Logic:              2592  out of   9112    28%
    Number used as Memory:               44  out of   2176     2%
       Number used as RAM:               44

Slice Logic Distribution:
 Number of LUT Flip Flop pairs used:   3891
   Number with an unused Flip Flop:    1850  out of   3891    47%
   Number with an unused LUT:          1255  out of   3891    32%
   Number of fully used LUT-FF pairs:   786  out of   3891    20%
   Number of unique control sets:        73

IO Utilization:
 Number of IOs:                           5
 Number of bonded IOBs:                   5  out of    232     2%

Specific Feature Utilization:
 Number of Block RAM/FIFO:                9  out of     32    28%
    Number using Block RAM only:          9
 Number of BUFG/BUFGCTRL/BUFHCEs:         1  out of     16     6%

Asynchronous Control Signals Information:
----------------------------------------
No asynchronous control signals found in this design

Timing Summary:
---------------
Speed Grade: -3

   Minimum period: 8.778ns (Maximum Frequency: 113.927MHz)
   Minimum input arrival time before clock: 3.418ns
   Maximum output required time after clock: 3.597ns
   Maximum combinational path delay: No path found

von anton (Gast)


Lesenswert?

Hat jemand Vergeleichswerte vom LEON oder Microblaze?
Würde mich interessieren wo der Mais vergleichsweise liegt.

von VHDL++ (Gast)


Lesenswert?

Hab nur den Vergleich mit Nios, wobei der sich natürlich je nach Ausbau 
stark unterscheidet... grob würde ich sagen:

- Mais deutlich weniger Luts
- Mais etwa gleich viele FF
- BRam ist immer abhängig vom Programmspeicher, deswegen nicht bewertbar
- Mais deutlich niedrigerer Maximaltakt, aber verständlich, haben fast 
alle portierbaren


Ingesamt ein erstaunliches Ergebnis für eine One-Man-Show, insbesondere 
natürlich die C-Toolchain, weil es eben viele Einschränklungen mitbringt 
wenn man eine bestehende Architektur nachbauen muss.

Bei einer neu entworfenen Architektur (speziell für FPGAs geeignet) wäre 
das maximal Durchschnitt, aber für eine Bestehende absolut Top.

Denn was nützt einem der schnellste, kleinste Softcore, wenn man 
hinterher Assembler schreiben muss?

von Marten W. (goldmomo) Benutzerseite


Lesenswert?

Super Arbeit!
Habe es mal durch Quartus gejagt (Cyclone IV E als Target (wie DE-2 
115)).

------------------------------------------------------------------------

Flow Status  Successful - Fri Dec 13 13:38:47 2013
Quartus II 64-Bit Version  13.0.1 Build 232 06/12/2013 SP 1 SJ Web 
Edition
Revision Name                       MAIS_soc
Top-level Entity Name               MAIS_soc
Family  Cyclone IV E
Device  EP4CE115F23C7
Timing Models  Final
Total logic elements                4,806 / 114,480 ( 4 % )
Total combinational functions       4,141 / 114,480 ( 4 % )
Dedicated logic registers           2,569 / 114,480 ( 2 % )
Total registers                     2569
Total pins                          5 / 281 ( 2 % )
Total virtual pins                  0
Total memory bits                   135,680 / 3,981,312 ( 3 % )
Embedded Multiplier 9-bit elements  8 / 532 ( 2 % )
Total PLLs        0 / 4 ( 0 % )


FMAX (TimeQuest): 92.09 MHz

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Marten W. schrieb:
> Super Arbeit!

Deine Begeisterung klingt gut.
Was machst du mit den restlichen freien Platz?

Der freigegeben Code sollte einen sehr stabilen Stand haben.
Es werden dennoch Bugs aufkommen, da ich nicht aus jeder Richtung testen 
kann.

Sicher hat zum Schluß die Dokumentation etwas gelitten. Da war ich 
einfach nicht mehr frisch. Schön, dass du es trotzdem auf einer mir 
fremden Hardwar sicher durchgebracht hast. Da brauche ich gar nicht viel 
Dokumentation.
Wenn du  in
 entity MAIS_soc is
  board_clk_frq : integer                       := 27E6;

die board_clk_frq korrekt für dein Board angeiebst, dann kommt am Uart 
auch der Testlauf raus.

MAIS steht für nichts. Ich brauchte einen Namen und da hier Mais 
angebaut wird und das mir auch ganz gut schmeckt. Das LOGO kam auch noch 
auf und dann passte es einfach.


Jetzt wäre noch eine Lattice User Meldung interessant. Wie es dort ins 
Rennen geht.

von Marten W. (goldmomo) Benutzerseite


Lesenswert?

Ich habs einfach nur mal in Quartus in ein neues Projekt aufgenommen um 
zu schauen ob es übersetzbar ist. bzw. um so sehen wie viel LE’s / M9Ks 
dein Design braucht.

Habe es jetzt nicht wirklich auf der Hardware getestet, wäre aber kein 
Problem, RS232 ist vorhanden (RX/TX), für board_clk könnte man eine PLL 
die 27MHz generiert benutzen und HW_INT auf einen Taster legen (oder 
gleich 0).

Wenn ich mein RS232 Kabel gefunden habe und dann noch meinen RS232-USB 
Stecker, versuch ich mal ob geht (was muss ich am Host einstellen 
Baudrate etc.).

Habe allerdings nicht viel Zeit, werkle selber an meinen Zeug.

Um mehr Resonanz zu bekommen wirst du wohl in anderen Foren die 
"Werbetrommel" rühren müssen.

Ich persönlich finde deine Arbeit wirklich toll, der VHDL-Code ist auch 
gut lesbar :-)

von BoeserFisch (Gast)


Lesenswert?

Hallo -
ich habe mir den Code mal angesehen. Habe so einige CPU cores evaluiert 
und mir an vielen die Finger verbrannt. Die meisten haben leider nur 
Hobbycharakter. Der Plasma ist immerhin schon recht robust. Wichtig sind 
weniger die Spezialbefehle und Geschwindigkeit als gute 
Codeverarbeitung.

Was mir an der CPU auf den ersten Blick fehlt, bzw. wo ich Fragen zu 
haette:
* Referenztest oder Referenz-Anwendung (Betriebssystem?)
* Wie gut ist die GCC-Anbindung getestet? Wo sind die Test cases?
* Gibt es ein Hardwaredebugging-Interface a la ARM?

Zum Code selber:
* Teilweise schwer zu lesen, z.B. Konstrukte wie ``decode.IR_d1(31 
downto 30)'' sind mit Konstanten bzw. Slice-Typendefinitionen besser zu 
verstehen.
* Doku ist alles. Das kann man bei einem Opensourceprojekt natuerlich 
auch andere machen lassen.

Irgendwie fehlt mir auch hier wieder das Verkaufsargument. Es gibt eine 
Menge guter Cores, die alle obigen Vorteile aufweisen UND den wishbone 
standard implementieren. Ohne wishbone geht nun mal nicht viel.

Wir setzen vor allem mico32, ZPU und microblaze fuer Steuerungsaufgaben 
ein, alles was schnell sein muss wird als coprozessor implementiert.
Die Auswahlkriterien sind dabei vor allem Codegroesse und Platzbedarf 
und Debuggingfaehigkeiten. Dann kommen die Tools (die bei mico32 zB 
recht nett sind).

Nicht falsch verstehen, ich will nichts schlechtmachen, aber wir haben 
bei der Evaluation von portablen Opencores sehr viel Zeit verbraten, bis 
wir etwas robustes gefunden hatten. Das wuerden wir heute komplett an 
die Expertenteams abgeben. Projekte, hinter denen keine community 
steckt, sind leider meist auch nicht kommerziell nutzbar.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

> BoeserFisch schrieb:
Danke für deinen Beitrag, ich sehe du hast dich intensiver damit 
beschäftigt.

Die arithmetischen OP-Codes hatte ich in einer Cosimulation gegen einen 
C code verglichen. Die ALU ist so getestet worden. Es gibt sicher noch 
ungetestete Vorgänge.

Ich habe den Plasma auch studiert, leider musste ich immer zu tief, in 
den Code durchsteigen, um was anbinden zu können. Ich habe den Plasma 
auch nicht schneller hinbekommen.

Es gibt noch eine Stelle den Mais-Core schneller zu bekommen, doch dann 
dürfen bestimmte Befehle nicht aufeinander folgen. Dann muss man den 
C-Compiler darauf ausrichten. Das wollte ich nicht, da ich von 
Compilerbau auch keine Ahnung habe.

> Was mir an der CPU auf den ersten Blick fehlt, bzw. wo ich Fragen zu
> haette:
> * Referenztest oder Referenz-Anwendung (Betriebssystem?)

Betriebssystem habe ich noch keines, das wäre ein Timer der den 
Scheduler aktualisiert.

Ja ich habe auch weiter SPB-Slaves geschrieben, die ich nicht mit 
offengelegt habe.
Das ist ein SPI und ein I2C Master. Dafür habe ich eine C Library und 
kann Sensoren einfach auslesen und verrechnen.

> * Wie gut ist die GCC-Anbindung getestet? Wo sind die Test cases?
> * Gibt es ein Hardwaredebugging-Interface a la ARM?
Ja habe ich, aber nicht offengelegt.
Das ist ein GNU-Debugger Server über die UART Verbindung.
Musste meine Fehler in der CPU finden.

> Zum Code selber:
> * Teilweise schwer zu lesen, z.B. Konstrukte wie ``decode.IR_d1(31
> downto 30)'' sind mit Konstanten bzw. Slice-Typendefinitionen besser zu

Da steckt ein System dahinter.

IR steht für Instruction Register
Suffix _d1 um einen Takt verzögert.

Und nun zusammen im vollständigen Satz.
decode.IR_d1(31 downto 30) sind die zwei höchstwertigen Bits vom 
OP-Code, der in der zweiten Pipeline steht.


> Irgendwie fehlt mir auch hier wieder das Verkaufsargument. Es gibt eine
> Menge guter Cores, die alle obigen Vorteile aufweisen UND den wishbone
> standard implementieren. Ohne wishbone geht nun mal nicht viel.

Ja da Verkaufsargument ich bin Ingenieur und suche es auch noch. 
Zumindes muss ich mich den Anforderungen stellen und darum habe ich es 
hier zur Diskussion gestellt.

Wrapper für Avalon und Wishbone sind kein Problem. Da habe ich schon mal 
geschaut.

> Wir setzen vor allem mico32, ZPU und microblaze fuer Steuerungsaufgaben
> ein, alles was schnell sein muss wird als coprozessor implementiert.

CPO ist mit eingebaut und hier ist alles Systemtechnische drinnen.
Befehlssatz gibt CP1, CP2 und CP3 her.

> Die Auswahlkriterien sind dabei vor allem Codegroesse und Platzbedarf
> und Debuggingfaehigkeiten. Dann kommen die Tools (die bei mico32 zB
> recht nett sind).
>
> Nicht falsch verstehen, ich will nichts schlechtmachen, aber wir haben
> bei der Evaluation von portablen Opencores sehr viel Zeit verbraten, bis
> wir etwas robustes gefunden hatten. Das wuerden wir heute komplett an
> die Expertenteams abgeben. Projekte, hinter denen keine community
> steckt, sind leider meist auch nicht kommerziell nutzbar.


Die Experten hinterlassen auch immer viel Zauberwerk, dass sie nicht 
entbehrbar werden.
Vielleicht kommt noch die community auf.

von BoeserFisch (Gast)


Lesenswert?

René D. schrieb:
> Und nun zusammen im vollständigen Satz.
> decode.IR_d1(31 downto 30) sind die zwei höchstwertigen Bits vom
> OP-Code, der in der zweiten Pipeline steht.

Ich meinte eher was wie:
1
subtype      BFIELD_FOO is integer range 31 downto 30;

...

und dann nutzt du:
1
decode.IR_d1(BFIELD_FOO)

Deine Delay-Notation ist mir schon klar geworden.


Dasselbe wuerde ich auch fuer die VLIW-Definitionen in deinem control 
package (pkg_control.vhd) anwenden. So wird alles deutlich wartbarer. 
Beim Plasma ist das etwas aufgeraeumter.
Gerade weil wir die Experten nur einmal bemuehen wollen, ist die 
Wartbarkeit sehr wichtig. Allerdings ist es schon so, dass zwischen 
einem kostenlosen Hobbyprojekt und einem ASIC proof IP-Core lange nichts 
kommt.

Zum Debugging dachte ich, ich haette mal in einem thread was ueber 
Support fuer echte ICE gelesen. Debugging per UART ist leider nicht 
wirklich robust und ausserdem fuer unsere Zwecke zu intrusiv, weil der 
UART uU auch gebraucht wird.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

BoeserFisch schrieb:



Nur mal so nachgedacht.
Du nutzt folgende Systeme:
Microblaze -> Xilinx
mico32   -> Lattice
ZPU

Drei verschiedene Softcores, die du alle Warten musst.
Alle haben ein anderes Debuginterface.
ZPU hat eigentlich keins, so viel ich weiss.
Dazu habe ich gehört, die Tools von allen laufen nicht so rund, wie es 
bei dir durchklingt.
Nicht etwas aufwendig auf Dauer?


Mais läuft auf allen FPGAs eben herstellerunabhängig.


Ich habe es noch nicht realisiert, es gibt verschieden Umsetzungen den 
JTAG als I/O-Register zur Steuerung zu benutzen. Das ist alles wieder 
FPGA-herstellerspezifisch realisiert.
Für Xilinx wüsste ich sogar wie es geht. Man braucht dann auch wieder 
ein JTAG-Server OpenOCD oder ahnliches der wieder spezifisch geschrieben 
werden muss. UART ist schon ein gemeinsamer Nenner auch wenn durch USB 
am PC vertrieben wurde.

Zwei Pins werden sich doch noch finden.

von BoeserFisch (Gast)


Lesenswert?

Hi Rene

> Drei verschiedene Softcores, die du alle Warten musst.

Nein, warten muss ich nicht mehr als sonst, an den Cores wird nicht 
gedreht

> Alle haben ein anderes Debuginterface.
> ZPU hat eigentlich keins, so viel ich weiss.

Fuer die ZPU haben wir einen JTAG debugger von einem Spezialisten 
eingekauft, ich glaube der Patch wurde hier im Forum mal vorgestellt. 
Bei der ZPU laeuft derselbe debugger mit jeder hardware, das ist schon 
mal eine erleichterung.

> Dazu habe ich gehört, die Tools von allen laufen nicht so rund, wie es
> bei dir durchklingt.
> Nicht etwas aufwendig auf Dauer?
>

Nein. Weniger, als sich mit CPU/Compilerproblemen herumzuschlagen. Die 
mico32-Toolchain hat ein paar Quirks und ist nicht sonderlich robust, 
aber microblaze gibt nichts zu meckern. Am stabilsten ist 
ueberrschenderweise der ZPU-Debugger.

> Mais läuft auf allen FPGAs eben herstellerunabhängig.

Das glaube ich dir ja auch - in der Theorie. Aber auf welchen 
Plattformen wurde es getestet? Es gibt immer wieder architektonische 
Aspekte, die uns statt zur Plattform-unabhaengigen CPU eher zu einem 
microblaze zwingen. Einfach, weils ein fertig optimiertes System ist. 
Dasselbe bei mico32, der eigentlich auch ueberall laufen wuerde.

Gibt einen ganz einfachen Grund: "Wieviel Support bekomme ich und 
wieviel muss ich dafuer bezahlen wenn was nicht laeuft". Das ist das 
Hauptkillerkriterium, warum zb Plasma nciht reinkommt, obwohl sehr 
robust: ich kann den Entwickler nicht erreichen und die community fehlt.
Ich wuerde privat noch dran rumfrickeln aber in der firma geht das eben 
nicht..

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

BoeserFisch schrieb:

Hi BoeserFisch
> Das glaube ich dir ja auch - in der Theorie. Aber auf welchen
> Plattformen wurde es getestet?

Es wurde auf Lattice und Altera von Usern ausprobiert. Wieviel da 
letztendlich gelaufen ist, kann ich nicht sagen. Da ich es nicht 
kontrolliert habe und auch parallel weiter entwickelt habe. Das wäre mal 
eine schöne Bachelorarbeit es auf verschieden Plattformen zu testen.

Es gibt immer wieder architektonische
> Aspekte, die uns statt zur Plattform-unabhaengigen CPU eher zu einem
> microblaze zwingen. Einfach, weils ein fertig optimiertes System ist.

Was wäre so ein Zwang für Mircoblaze ?
Was haben die anderen nicht?



> Gibt einen ganz einfachen Grund: "Wieviel Support bekomme ich und
> wieviel muss ich dafuer bezahlen wenn was nicht laeuft".

Ich habe noch nächstes Kapazitäten frei. Gerade kein aktuelles Projekt 
am laufen, bin auch noch etwas auf der Suche.

Das ist das
> Hauptkillerkriterium, warum zb Plasma nciht reinkommt, obwohl sehr
> robust: ich kann den Entwickler nicht erreichen und die community fehlt.

Kann es bestätigen. Ich habe auch Emails an Steve geschrieben und keine 
Antwort bekommen. Mir fehlt auch die Weiterentwicklung im VHDL Code. Es 
gibt nur Änderungen im C-Code.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

BoeserFisch schrieb:
> Hi Rene

> Fuer die ZPU haben wir einen JTAG debugger von einem Spezialisten
> eingekauft, ich glaube der Patch wurde hier im Forum mal vorgestellt.

Ich glaube ich weiss was du meinst.


Der Debugger war auch mal im Mais dran. Ich hatte mir dadurch auch 
Zugang zu Kundschaft erhofft. War nicht der Fall.

von Fpgakuechle K. (Gast)


Lesenswert?

BoeserFisch schrieb:

> Gibt einen ganz einfachen Grund: "Wieviel Support bekomme ich und
> wieviel muss ich dafuer bezahlen wenn was nicht laeuft". Das ist das
> Hauptkillerkriterium, warum zb Plasma nciht reinkommt, obwohl sehr
> robust: ich kann den Entwickler nicht erreichen und die community fehlt.
> Ich wuerde privat noch dran rumfrickeln aber in der firma geht das eben
> nicht..

Meines Erachtens dreht sich die Diskussion um den selben Punkt wie das 
Essay "Die Kathedrale und der Basar" der das Verhältniss von OpenSource 
und "Kommerzielle" Softwareentwicklung darstellt: 
http://de.wikipedia.org/wiki/Die_Kathedrale_und_der_Basar

Es dreht sich um die Frage ob open source cores Produkte sind oder ob 
open source Projekte eher als Dienstleistungen funktionieren. Wobei open 
source Entwickler und Open Source Integrator nicht die selben Person 
sein müßen - so funktioniert bspw. embedded Linux.

MfG,

von Martin S. (strubi)


Lesenswert?

Tach,

die Diskussion kommt mir bekannt vor :-)
Gab da aber mal schon einen andern Thread zu.
In Kürze: Der Mais sah lange vielversprechend aus. Es fehlten nur die 
letzten Meter für die industrielle Reife, wäre toll, wenn die jetzt 
geschafft wären, obwohl noch bisschen mehr Fleisch an den Knochen 
müsste.
Einige haben es schon geschrieben, der böse Fisch weiß auch, wovon ich 
rede: Das Zeug muß für den Kunden einfach laufen. D.h. er will, in 
Kürze:

- Das was die andern bieten (uBlaze, mico32, nios): Compiler, JTAG 
Debugger (UART-gdbmonitor ist eher no go), SoC Anbindung, wishbone
- Support oder klare Bedingungen, eine sichtbare Community, eine 
Referenzplattform, ...

Die MIPS-Cores sind allesamt sehr attraktiv, da sie recht gut 
"pipelinen" und die Hazards überschaubar sind. Das ist definitiv ein 
gutes Verkaufsargument bei den Jungs, die sich gut auskennen.
Aber gerade die Jungs legen Wert auf Codequalität und gute Testbenches.

René D. schrieb:
> Der Debugger war auch mal im Mais dran. Ich hatte mir dadurch auch
> Zugang zu Kundschaft erhofft. War nicht der Fall.

Ich nehme mal an, daß Du damit die uniemu-Sache (die auch für die ZPU 
werkelt), meinst. Ich sag's mal so:

Für solche Projekte muß das Codemanagement stimmen. Will jetzt nicht in 
die Details, aber es schreckt Kunden ab, wenn keine Collaborative mit 
Bugtracking, SCM (git, SVN), usw. dahintersteckt. Oder sie wollen eine 
klare Ansage, was das Projekt kostet.

Den Gang Richtung OpenSource finde ich prinzipiell gut, aber auch hier 
fragt der potentielle Kunde wieder: was kostet mich dann die 
kommerzielle Lizenz, und was ist mit meinen eigenen Erweiterungen/Fixes?
Da kann das Produkt technisch super sein, aber der Kunde nimmt den 
langsameren etablierten Core, da gut dokumentiert und Lizenzbedingung 
klar.

In meinem Fall waren die Zielkunden diejenigen, die halt eher den Basar 
als die Kathedrale bevorzugen, oder gleich eine kleine Kapelle kaufen 
können :-)

Grüsse,

- Strubi

P.S. Apropos Plattformen: Der Mais lief auch mal recht gut auf Lattice 
ECP3, nur beim Memory gabs eine architektonisch bedingte Bremse. Hätte 
eine weitere Pipeline-Stage benötigt.

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

Martin S. schrieb:
> geschafft wären, obwohl noch bisschen mehr Fleisch an den Knochen
> müsste.

Da habe ich auch noch Sachen. Die erst als Integrator gebraucht werden.
Verschiedene Anbindungen, Ich muss auch etwas im Rücken haben.

> Einige haben es schon geschrieben, der böse Fisch weiß auch, wovon ich
> rede: Das Zeug muß für den Kunden einfach laufen. D.h. er will, in
> Kürze:

> - Das was die andern bieten (uBlaze, mico32, nios): Compiler, JTAG
> Debugger (UART-gdbmonitor ist eher no go), SoC Anbindung, wishbone
> - Support oder klare Bedingungen, eine sichtbare Community, eine
> Referenzplattform, ...

Im sourcecode ist ein Makefile enthalten, das einen cross C-Compiler 
erzeugt.
Über eine Referenzanwendung, die auf verschiedenen Boards möglich ist, 
habe ich zumindest schon nachgedacht.

> Den Gang Richtung OpenSource finde ich prinzipiell gut, aber auch hier
> fragt der potentielle Kunde wieder: was kostet mich dann die
> kommerzielle Lizenz, und was ist mit meinen eigenen Erweiterungen/Fixes?

Da muss der Kunde anfragen und sagen was er vor hat. Ich habe den ersten 
Schritt getan.

> Da kann das Produkt technisch super sein, aber der Kunde nimmt den
> langsameren etablierten Core, da gut dokumentiert und Lizenzbedingung
> klar.
Es braucht eben alles seine Zeit.

von Mark B. (markbrandis)


Lesenswert?

René D. schrieb:
> Da muss der Kunde anfragen und sagen was er vor hat. Ich habe den ersten
> Schritt getan.

Auf der Homepage steht:
– commercial applicants have to pay a licence fee –

Warum dieses Lizenzgebühr nicht näher benannt sein darf, erschließt sich 
mir nicht so recht.

von Hmm.. (Gast)


Lesenswert?

Mark Brandis schrieb:
> René D. schrieb:
>> Da muss der Kunde anfragen und sagen was er vor hat. Ich habe den ersten
>> Schritt getan.
>
> Auf der Homepage steht:
> – commercial applicants have to pay a licence fee –
>
> Warum dieses Lizenzgebühr nicht näher benannt sein darf, erschließt sich
> mir nicht so recht.

Eine komerzielle Nutzung kostet eine Lizenzgebühr, nicht die Info 
darüber!

von berndl (Gast)


Lesenswert?

Hmm.. schrieb:
> Eine komerzielle Nutzung kostet eine Lizenzgebühr, nicht die Info
> darüber!

Es geht darum: Wenn ich den Core gewerblich einsetzen will, muss ich 
dann z.B. pro "Stueck" soundsoviel zahlen, oder pro "Design", oder...
Oder ist das ganze Verhandlungssache? Und was, wenn der Rene im Lotto 
gewinnt und Privatier wird? Wie darf ich den Core dann weiter nutzen?

Ist bei jeder Firma ein Thema. Und (fast) alle Firmen wissen: 
Langlebigkeit und Planbarkeit zahlen sich langfristig auch aus...

von René D. (Firma: www.dossmatik.de) (dose)


Lesenswert?

berndl schrieb:
> Hmm.. schrieb:
>> Eine komerzielle Nutzung kostet eine Lizenzgebühr, nicht die Info
>> darüber!
>
> Es geht darum: Wenn ich den Core gewerblich einsetzen will, muss ich
> dann z.B. pro "Stueck" soundsoviel zahlen, oder pro "Design", oder...
> Oder ist das ganze Verhandlungssache? Und was, wenn der Rene im Lotto
> gewinnt und Privatier wird? Wie darf ich den Core dann weiter nutzen?
>
> Ist bei jeder Firma ein Thema. Und (fast) alle Firmen wissen:
> Langlebigkeit und Planbarkeit zahlen sich langfristig auch aus...
Ursprunglich wollte ich einen freien Softcore schreiben, weil es mich 
als Bastler gestört, dass ich keinen Zugriff auf so etwas hatte.

Mit der Offenlegung habe ich das Ziel erreicht, dass die Hobbyristen 
auch in den Genuss eines Softcores kommen. Ich habe auch Anfragen, von 
Diplomanden gehabt, die an Ihrer FH keine Entwicklerlizenz hatten und 
eine Diplomarbeit lauffähig bekommen mussten.

Leider hat die Entwicklung mir Zeit und auch Geld gekostet, mehr als ich 
ursprünglich annähernd eingeplant hatte. Deshalb wollte ich, wenn jemand 
es gewinnbringend einsetzt auch ein Stück Torte abhaben.

Ich habe nicht, wie bei einer Firma einer eigene Marketingabteilung 
Verkaufspakete geschnürrt.


Ich kann auch nicht planen, wenn keiner anfragt geht mir genau so.
Gedanklich hatte ich an pro Design gedacht. Bei jedem Design gibt es 
noch die eine oder andere Anpassung, die ich dann spezifische 
Serviceerhebung nennen würde. Wenn das weiterhilft.

von Tippgeber (Gast)


Lesenswert?

MAch am Besten eine site-Lizenz. Das ist vom handling am Einfachsten und 
Du hast wenig Arbeit. 10k sollten drin sein. Xilinx nimmt für seinen 
verschrubbelten TriCore MAC auch schon 5k.

von vhdlversteher (Gast)


Lesenswert?

Sehr interessante Sache. Gefällt mir.
Das ist mindestens eine Doktorarbeit. Die Busschnittstelle ist 
definiert. Bei anderen systemen kann man gar nicht hineinschauen und 
bist auch eine ganze Stange los. Da hat bis jetzt keiner geklagt und 
bugfrei ist das auch nicht.

von Mark B. (markbrandis)


Lesenswert?

Tippgeber schrieb:
> MAch am Besten eine site-Lizenz. Das ist vom handling am Einfachsten und
> Du hast wenig Arbeit. 10k sollten drin sein. Xilinx nimmt für seinen
> verschrubbelten TriCore MAC auch schon 5k.

Der Vergleich von Preisen zwischen einer großen, international bekannten 
Firma mit bekanntem Support und einer wenig bekannten Ein-Mann-Firma 
erscheint mir ein wenig... gewagt. :-)

von Michael W. (Gast)


Lesenswert?

Mark Brandis schrieb:
> international bekannten
> Firma mit bekanntem Support
Nun, genau WEIL der Support dieser grossen Firma bekannt ist, sehe ich 
hier Chancen für Drittanbieter :-D

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.