www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Spartan3A - Not enough free sites available


Autor: Timo Birnschein (Firma: MicroForge) (timob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich versuche mit Hilfe der Xilix ISE 10.1 WebEdition und einem Spartan3A 
Evaluation Board einige Sensoren zu verwalten. Das klappt in meinem VHDL 
code bisher auch ganz wunderbar, jedoch bin ich jetzt plötzlich auf ein 
Problem gestoßen und komme nicht weiter:
ERROR:Place:836 - Not enough free sites available for the components of the following type(s).
      IOB     Number of Components 145     Number of Sites 138

Was sind Sites? Und warum tauchen sie in keinem Design Summary auf? Und 
wieso habe ich nur 138 davon?

Aber viel wichtiger: Wie kann ich meinen Site-Verbrauch reduzieren? Habe 
ich mit einer bestimmten Resource die notwendigen Nutzungsbedingungen 
misachtet?

Ich hoffe ihr könnt mir helfen, ich kann so nicht weiter entwickeln. 
Mein FPGA ist grademal zu 10% voll und ich benutze nur grob 25 Pins, 
wenn überhaupt.

Gruß
Timo

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo Birnschein wrote:
> und ich benutze nur grob 25 Pins,

Weiss das der Placer auch?
Zeig mal den Top Level deines Codes.

Autor: Timo Birnschein (Firma: MicroForge) (timob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Meinst du die Entity?
entity LowerLegSensors is
  port(
    clk            : IN std_logic; --/C10:16MHz/ /N9:12MHz/ /T7:32kHz/
    rst            : IN std_logic; --/H4/
    -- Buttons on evaluation board
    btnA          : IN std_logic; --/K3:BtnA/
    btnB          : IN std_logic; --/H5:BtnB/ 
    btnC          : IN std_logic; --/L3:BtnC/
    
    led1          : OUT std_logic; --/D14/
    led2          : OUT std_logic; --/C16/
    led3          : OUT std_logic; --/C15/
    led4          : OUT std_logic; --/B15/
    
    -- pins for UART
    rx           : IN  std_logic; --/A3/
    tx           : OUT std_logic; --/B3/
    
    -- pins for sensor control
    ADNS_cs        : out std_logic;
    LIS_cs        : out std_logic;
    TC77_cs        : out std_logic;
    SPI_sclk        : out std_logic;
    SPI_mosi        : out std_logic;
    SPI_miso        : in  std_logic;
    MS_SCLK        : out std_logic;
    MS_CLK        : out std_logic;
    MS_DIN        : out std_logic;
    MS_DOUT        : in  std_logic;
    
    -- debugging pins
    spiFinished_o    : out std_logic;
    spiStart_o      : out std_logic;
    
    -- Sensor Storages for the Top Module
    deltaYTmp_o      : out std_logic_vector(7 downto 0);
    deltaXTmp_o      : out std_logic_vector(7 downto 0);
    productIDTmp_o    : out std_logic_vector(7 downto 0);
    revisionIDTmp_o  : out std_logic_vector(7 downto 0);
    motionTmp_o      : out std_logic_vector(7 downto 0);

    whoAmITmp_o      : out std_logic_vector(7 downto 0);
    accelXTmp_o     : out std_logic_vector(15 downto 0);
    accelYTmp_o     : out std_logic_vector(15 downto 0);
    accelZTmp_o     : out std_logic_vector(15 downto 0);

    pressTmp_o       : out std_logic_vector(15 downto 0);

    temp1Tmp_o       : out std_logic_vector(15 downto 0);

    temp2Tmp_o       : out std_logic_vector(15 downto 0)
  );
end LowerLegSensors;

Autor: Timo Birnschein (Firma: MicroForge) (timob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah ich seh grade: Vielleicht wäre es schlau erst das TopModul zu bauen. 
Es deine Aussage hat mich auf meine ganzen Logic_Vectoren gebracht, die 
bisher jedoch nicht angeschlossen sind. Damit übergebe ich meine 
Sensordaten ins TopModul - was bisher nicht existiert. Die ganzen Sensor 
Logic_Vectoren werden aus einem Prozess heraus getrieben. Solange der 
Prozess nicht existiert kann ich synthetisieren. Ich nehme mal an, dass 
er die dann einfach wegoptimiert.

Autor: Martin Kohler (mkohler)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Timo Birnschein wrote:
> Meinst du die Entity?
Ja...

Wieviele Pins brauchst du ungefähr, sagtest du? 25?
Zähl mal nach! ;-)

Autor: Timo Birnschein (Firma: MicroForge) (timob)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Siehe meinen Post auch um 0900 :P

Ja, Dein Tip war entscheidend :)

Vielen Dank!

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Solange der Prozess nicht existiert kann ich synthetisieren.
Die Synthese klappt auch mit viel zu vielen Ports, weil die Synthese 
sich gar nicht (großartig) um das Ziel-FPGA schert.

Translate, Map und Place&Route haben dann aber Probleme: sie bekommen 
das Design nicht im FPGA unter (hier, weil zuviele IO-Ports nötig sind).

Wenn ich sowas in einem S3 PQ208 FPGA mache:
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.NUMERIC_STD.ALL;


entity ZuvielePorts is
    Port ( clk : in  STD_LOGIC;
           load : in  STD_LOGIC;
           din : in  STD_LOGIC_VECTOR (127 downto 0);
           dout : out  STD_LOGIC_VECTOR (127 downto 0));
end ZuvielePorts;

architecture Behavioral of ZuvielePorts is
signal counter : unsigned (127 downto 0) := (others=>'0');
begin
  process begin
    wait until rising_edge(clk);
    if (load='1') then
       counter <= unsigned(din);
    else
       counter <= counter+1;
    end if;
  end process;
  
  dout <= std_logic_vector(counter);
end Behavioral;

Dann sagt die Synthese:
Process "Synthesize" completed successfully

Translate sagt das selbe, denn es kann die Elemente, die die Synthese 
erzeugt hat, im FPGA wiederfinden.

Map bekommt aber Probleme, weil die IO-Pins nicht ausreichen:
ERROR:Pack:18 - The design is too large for the given device and package. 

Fazit:
Bei einem Design ohne Top-Level sind alle Schritte nach der Synthese 
unnötig und kosten nur Rechenzeit. Nicht umsonst hat die Synthese im 
Design-Flow einen eigenen Menüpunkt.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.