> 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:
1 | library IEEE;
|
2 | use IEEE.STD_LOGIC_1164.ALL;
|
3 | use IEEE.NUMERIC_STD.ALL;
|
4 |
|
5 |
|
6 | entity ZuvielePorts is
|
7 | Port ( clk : in STD_LOGIC;
|
8 | load : in STD_LOGIC;
|
9 | din : in STD_LOGIC_VECTOR (127 downto 0);
|
10 | dout : out STD_LOGIC_VECTOR (127 downto 0));
|
11 | end ZuvielePorts;
|
12 |
|
13 | architecture Behavioral of ZuvielePorts is
|
14 | signal counter : unsigned (127 downto 0) := (others=>'0');
|
15 | begin
|
16 | process begin
|
17 | wait until rising_edge(clk);
|
18 | if (load='1') then
|
19 | counter <= unsigned(din);
|
20 | else
|
21 | counter <= counter+1;
|
22 | end if;
|
23 | end process;
|
24 |
|
25 | dout <= std_logic_vector(counter);
|
26 | end Behavioral;
|
Dann sagt die Synthese:
1 | 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:
1 | 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.