Forum: FPGA, VHDL & Co. [Spartan6] Microblaze zu groß?


von Thomas (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Zusammen,

ich wage mich gerade an das Thema Ethernet und wollte dazu zunächst auf 
dem FPGA ein Microblaze mit axi_ethernet und DMA verwenden. Eigentlich 
hatte ich mir darum, dass das Design zu groß ist, überhaupt keine 
Gedanken gemacht, ich hielte das ganze noch recht "überschaubar" für 
einen FPGA - allerdings habe ich auf dem Gebiet auch wenig Erfahrung.

Der Synthese-Prozess gibt mir folgende Meldung:
1
Device utilization summary:
2
---------------------------
3
4
Selected Device : 6slx16csg324-2 
5
6
7
Slice Logic Utilization: 
8
 Number of Slice Registers:           11453  out of  18224    62%  
9
 Number of Slice LUTs:                12488  out of   9112   137% (*) 
10
    Number used as Logic:             11113  out of   9112   121% (*) 
11
    Number used as Memory:             1375  out of   2176    63%  
12
       Number used as RAM:              527
13
       Number used as SRL:              848
14
15
Slice Logic Distribution: 
16
 Number of LUT Flip Flop pairs used:  18124
17
   Number with an unused Flip Flop:    6671  out of  18124    36%  
18
   Number with an unused LUT:          5636  out of  18124    31%  
19
   Number of fully used LUT-FF pairs:  5817  out of  18124    32%  
20
   Number of unique control sets:       684
21
22
IO Utilization: 
23
 Number of IOs:                          88
24
 Number of bonded IOBs:                  86  out of    232    37%  
25
26
Specific Feature Utilization:
27
 Number of Block RAM/FIFO:               25  out of     32    78%  
28
    Number using Block RAM only:         25
29
 Number of BUFG/BUFGCTRL/BUFHCEs:        10  out of     16    62%  
30
 Number of DSP48A1s:                      3  out of     32     9%  
31
 Number of PLL_ADVs:                      2  out of      2   100%  
32
33
WARNING:Xst:1336 -  (*) More than 100% of Device resources are used

Und hier hänge ich gerade. Leider weiß ich nicht so recht, wie ich das 
Design verringern soll. Ebenfalls finde ich es verrückt, dass die 
Synthese ziemlich lange dauert - wenn ich am Microblaze etwas ändere 
dauert alles über 20 Minuten.

Wie kann man hier vorgehen, um das ganze zu "verkleinern"? Mein PFGA 
enthält auch nur den Microblaze. Verwenden tue ich das ganze übrigens 
auf dem Development Board SP601.

Wie kann man die Zahl der "Slice LUTs" verringern? Ich kann ja im 
Microblaze z.B. so etwas wie "Data Cache" oder "Instruction Cache" 
konkret angeben und auch verkleinern - das wirkt sich allerdings doch 
bestimmt nur auf die verwendeten "Block-RAMs" aus.

Habe ich einfach zu viele Komponenten in meinem MicroBlaze? Den "groben" 
Aufbau habe ich mal als Bild angehängt.
Bringt es etwas, unter "Addresses" im XPS die "Size" einzelner 
Komponenten zu verringern? Allerdings weiß ich dann auch nicht genau, 
was ich eigentlich tue :(

Viele Grüße,
  Thomas

von Tür Ringer (Gast)


Lesenswert?

Ich würde mal sagen, Du nimmst nicht ausgerechnet den aller Mickrigsten, 
aller Spartan6 FPGAs. Nimm mal wenigstens den 45er. Der ist so etwas wie 
der Standard. Dann stünde da sowas wie:

11453  out of  54576    21%
12488  out of  27288    46%

und Dein SoftCore täte zweimal reinpassen. Du darst nicht vergesse, dass 
ein Softcore bezogen auf die Anwendung immer extrem viel mehr Platz 
benötigt, als eine gleichwertige FSM.

Siehe auch hier:

http://www.fpga-auswahl-bei-platzverschwender-cores.de

von Luke.skywalker (Gast)


Lesenswert?

Hallo Thomas,

du kannst diverse Settings des Microblaze ändern. Du könntest z.B. in 
den Einstellungen ein Häkchen beim "Optimize for Area" setzen. Das 
verringert die Anzahl der Pipelinestufen und damit den Platzverbrauch 
(leider auch den Durchsatz).

von Thomas (Gast)


Lesenswert?

Hey,

das habe ich gerade auch im Family Sheet 
(http://www.xilinx.com/support/documentation/data_sheets/ds160.pdf) 
gesehen, dass ich wohl eher einen kleinen FPGA habe. Auf dem 
Entwicklungsboard habe ich da natürlich nicht sonderlich große Auswahl.

Vllt. kann ich noch ein paar Optionen der einzelnen Komponenten meine 
Microblaze-Prozessors verwenden, um die Größe zu drücken.

Viele Grüße,
  Thomas

von Thomas (Gast)


Lesenswert?

In Ordnung, das mit Optimize for Area werde ich mal durch probieren :)

Danke

von Tür Ringer (Gast)


Lesenswert?

Dann gäbe es noch "pack luts into unused BRAMs" und "resource sharing"

von Georg A. (georga)


Lesenswert?

Ist da im MB evtl. FPU und/oder MMU an? Soll ja Anwendungen geben, wo 
man die nicht braucht... Eine etwas ältere MB-Version (von 2009) braucht 
"roh" übrigens ca. 10% eines XCS3E1600. Und der ist etwas kleiner als 
dein S6...

von Grendel (Gast)


Lesenswert?

> Number of Slice LUTs:  12488  out of   9112   137%

Megablaze statt Microblaze ;-)
Kannste sicher kleiner konfigurieren.

von Edi M. (Gast)


Lesenswert?

Wie gross wäre denn ein kleiner PICO?

von Alexander F. (alexf91)


Lesenswert?

E. M. schrieb:
> Wie gross wäre denn ein kleiner PICO?

Ein Picoblaze?
Laut Xilinx je nach FPGA mindestens 26 Slices.
Der ist aber kaum mit einem Microblaze vergleichbar.

von Duke Scarring (Gast)


Lesenswert?

Thomas schrieb:
> Habe ich einfach zu viele Komponenten in meinem MicroBlaze?
Um Ethernet zu machen brauchst Du auch Speicher. Den kannst Du also 
nicht einsparen. Evtl. kannst Du auf die DMA-Engine verzichten.
Hast Du in Deinem EDK auch noch die PLB/OPB-Version (statt AXI) zu 
Auswahl?
Die ist etwas ressourcenschonender.

Duke

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.