Forum: FPGA, VHDL & Co. Angabe von Instanzen im ucf


von Egon (Gast)


Lesenswert?

Hi,

ich will die BRAMS fest im FPGA platzieren, nur leider kommt folgende 
Fehlermeldung:

Could not find instance(s) 'BER_MEAS/USER/TOP_REF/D_BLOCK_0' in the 
design.  To suppress this error, specify the correct instance name or 
remove the constraint.


Im ucf-File habe ich folgende Zeile angegeben:
INST "BER_MEAS/USER/TOP_REF/D_BLOCK_0" LOC = "RAMB16_X2Y6";

Ich habe keinen Instanznamen ausgelassen. Gibt es irgendwelche Tricks?

von Rick Dangerus (Gast)


Lesenswert?

Schau im RTL-Viewer nach, wie die Instanz wirklich heisst.

Rick

von Egon (Gast)


Lesenswert?

Hallo Rick,

im RTL-Viewer heisst die Instanz genauso. Woran könnte es noch liegen?

Ich habe meine BRAMs nicht als ramb16_s36_s36 implementiert sondern ein 
Synthese Construct von Xilinx verwendet und als Komponente abgelegt.


type ram_type is array (511 downto 0) of std_logic_vector (8 downto 0);
signal   Sig_RAM : ram_type;
begin


process (<clockA>)
begin
   if (<clockA>'event and <clockA> = '1') then
      if (<enableA> = '1') then
         if (<write_enableA> = '1') then
            Sig_RAM(conv_integer(<addressA>)) <= <input_dataA>;
         end if;
      end if;
   end if;
end process;

process (<clockB>)
begin
   if (<clockB>'event and <clockB> = '1') then
      if (<enableB> = '1') then
         <ram_outputB> <= <ram_name>(conv_integer(<addressB>));
      end if;
   end if;
end process;

von Fpgakuechle K. (Gast)


Lesenswert?

Egon wrote:
> Hi,
>
> ich will die BRAMS fest im FPGA platzieren, nur leider kommt folgende
> Fehlermeldung:
>
> Could not find instance(s) 'BER_MEAS/USER/TOP_REF/D_BLOCK_0' in the
> design.  To suppress this error, specify the correct instance name or
> remove the constraint.
>
>
> Im ucf-File habe ich folgende Zeile angegeben:
> INST "BER_MEAS/USER/TOP_REF/D_BLOCK_0" LOC = "RAMB16_X2Y6";
>
> Ich habe keinen Instanznamen ausgelassen. Gibt es irgendwelche Tricks?

1) Pfad (Path) bedeutet nicht Pfad der Datei auf der festplatte sondern 
innerhalb der Designhierarchie. Hast du den BRAM in deinem Top-Level 
(Name der obersten Entity als D_BLOCK_0 instanziert lautet der Pfad:
TOP_REF/D_BLOCK_0
2) Groß/Kleinschreibung kann das Problem sein, oder es werden andere 
Schrägstriche erwartet.
3)Man die Pfade mit * als Jokerzeichen abkürzen, also
 INST "*D_BLOCK_0"

von Egon (Gast)


Lesenswert?

1) Pfad (Path) bedeutet nicht Pfad der Datei auf der festplatte sondern
innerhalb der Designhierarchie. Hast du den BRAM in deinem Top-Level
(Name der obersten Entity als D_BLOCK_0 instanziert lautet der Pfad:
TOP_REF/D_BLOCK_0

--> ???

2) Groß/Kleinschreibung kann das Problem sein, oder es werden andere
Schrägstriche erwartet.

--> ich habe alles mehrmals überprüft, ich finde keine Unterschiede


3)Man die Pfade mit * als Jokerzeichen abkürzen, also
 INST "*D_BLOCK_0"

--> das habe ich auch schon probiert, er findet die Instanz einfach 
nicht.

von Kest (Gast)


Lesenswert?

Was das Problem sein kann ist "TOP_REF/D_BLOCK_0" oder 
<TOP_REF/D_BLOCK_0> Unterschied. Irgendwo bei Xilinx kann man 
umschalten, welche Schreibweise verwendet wird.


Grüße,

Kest

von FPGAküchle (Gast)


Lesenswert?

Schreib Labels um deinen source und versuche es damit:

INST "*toller_labelname*" LOC = "RAMB16_X2Y6";



architecture .. of .. is
...
begin
toller_labelname:BLOCK is
Begin

type ram_type is array (511 downto 0) of std_logic_vector (8 downto 0);
signal   Sig_RAM : ram_type;

process (<clockA>)
begin
   if (<clockA>'event and <clockA> = '1') then
      if (<enableA> = '1') then
         if (<write_enableA> = '1') then
            Sig_RAM(conv_integer(<addressA>)) <= <input_dataA>;
         end if;
      end if;
   end if;
end process;

process (<clockB>)
begin
   if (<clockB>'event and <clockB> = '1') then
      if (<enableB> = '1') then
         <ram_outputB> <= <ram_name>(conv_integer(<addressB>));
      end if;
   end if;
end process;

end block toller_labelname;
...
end architecture;

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.