Forum: FPGA, VHDL & Co. Synplify Pro und VHDL packages


von Bjørn (Gast)


Lesenswert?

Hallo!

Ich habe habe mir ein kleines Package mit zwei Funktionen geschrieben:
1
package log2 is
2
  function log2ceil(x : natural) return natural;
3
  function log2floor(x : natural) return natural;
4
end log2;
5
6
package body log2 is
7
8
  function log2ceil(x : natural) return natural is
9
  begin
10
    for i in 0 to 32 loop
11
      if 2**i > x then
12
        return i;
13
      end if;
14
    end loop;
15
    return 32;
16
  end function;
17
18
  function log2floor(x : natural) return natural is
19
  begin
20
    for i in 1 to 33 loop
21
      if 2**i > x then
22
        return i-1;
23
      end if;
24
    end loop;
25
    return 32;
26
  end function;
27
28
end log2;

Und diese Funktionen möchte ich in einer anderen Entity benutzen:
1
library ieee;
2
use ieee.std_logic_1164.all;
3
library work;
4
use work.log2.all;
5
6
entity blubb is
7
  generic (
8
    bits : natural);
9
  port (
10
    clk    : in  std_logic;
11
    reset  : in  std_logic;
12
    gain   : in  std_logic_vector(log2ceil(2*bits) downto 0);
13
    input  : in  std_logic_vector(bits-1 downto 0);
14
    output : out std_logic_vector(bits-1 downto 0));
15
end blubb;

Allerdings scheint Synplify Pro Probleme damit zu haben:
1
@E:CD255 : main.vhd(83) | No identifier "log2ceil" in scope
2
1 error parsing file C:\Documents and Settings\myself\Desktop\bla\hdl\main.vhd

Mit GHDL funktioniert das super. Wo ist das Problem und wie kann ich es 
beheben?

Ich benutze übrigens Actels Libero.

von Duke Scarring (Gast)


Lesenswert?

Wie (und in welche Bibliothek) hast Du denn das package compiliert?

Duke

von Bjørn (Gast)


Lesenswert?

Ich habe das Package einfach zusammen mit den anderen VHDL Dateien in 
den hdl Ordner gelegt. In Libero wird das Paket auch Design Explorer 
angezeigt.

von Duke Scarring (Gast)


Lesenswert?

Ich hab von Libero keine Ahnung. Aber bei GHDL, Modelsim und anderen 
Simulatoren muß die Reihenfolge beim Compilieren eingehalten werden, 
damit alles gefunden wird.

Kannst Du Dein package ggf. einzeln übersetzen?

Duke

von SuperWilly (Gast)


Lesenswert?

Hast du mal eine Architecture beschrieben ?

von Bjørn (Gast)


Lesenswert?

> Kannst Du Dein package ggf. einzeln übersetzen?

Danach habe ich auch schon gesucht, aber leider ohne Erfolg.

> Hast du mal eine Architecture beschrieben ?

Ein
1
architecture behav of blubb is
2
3
-- ...
4
5
begin
6
7
-- ...
8
9
end behav

ist in der main.vhd natürlich mit drin. Die wollte ich der Einfachheit 
halber nur nicht mit posten.

von SuperWilly (Gast)


Lesenswert?

Ist die Architecture leer ?


Mach mal folgendes, falls sie leer ist:


begin
output <= input;

von Bjørn (Gast)


Lesenswert?

Nope, sie ist nicht leer. In ihr stecken einige Wochen Arbeit, die 
langsam mal auf realer Hardware getestet werden will. ;)

Ich überlege, ob ich die beiden Funktionen nicht einfach mit in die VHDL 
Dateien schreibe, in denen sie gebraucht werden, da das mit den Packages 
unter Libero/Synplify ja irgendwie nicht klappt. Es sei denn jemand hat 
da noch eine andere Idee, woran das liegen könnte?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Bjørn schrieb:
> da das mit den Packages unter Libero/Synplify ja irgendwie nicht klappt.
Mit Xilinx/Diamond/Synplify und Xilinx/ISE geht das problemlos...

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.