Modelsim XE 6.2 // synthesis_translate_on/off

Gast #553361
Lesenswert?

Hallo,

Ich arbeite mit einem Multiplizierer, der von ISE9.1i - Coregen 
generiert wurde. Beim kompilieren und synthetisieren mit ISE gibt es 
keine Probleme, allerding beim Compilieren mit Modelsim XE.

Auszug aus dem VHDL File des Multiplizieres:

38 LIBRARY ieee;
39 USE ieee.std_logic_1164.ALL;
40 --synthesis translate_off
41 Library XilinxCoreLib;
42 -- synthesis translate_on
43 ENTITY mult_fix_wizard IS

Meine Frage: Weiß jemand, wie mit den Zeilen --synthesis 
translate_on/off umgegangen werden muss?

Ich bekomme eine Fehlermeldung beim Kompilieren des VHDL Files:
Internal Error: ../../src/vcom/genexpr.c(5483)

Kann damit jemand etwas anfangen oder Tips geben??? Hängt es vielleicht 
mit o.g. Zeilen zusammen?

Sollten mehr Infos benötigt werden, um etwas zu dem Problem sagen zu 
können, bitte nachfragen.

Vielen Dank!

Gruß Sebastian
#553411
Lesenswert?

Johnsn wrote:
> Verzichte einfach auf die Coregen-Files. Mit der numeric_std Bibliothek
> und den unsigned/signed Typen erreicht du genau dasselbe!
Nein.

1. Der Coregen läßt dir die Wahl, ob du den Multiplizierer aus LUTs oder 
aus den 18x18 Blockmultiplizierern aufbauen willst.

2. Du kannst die Pipelinetiefe einstellen. OK, ich weiss nicht, ob man 
das irgendwie mittels VHDL-eigenen Mitteln auch bei solchen Funktionen 
hinbekommt...

@Seb
Du bist übrigens nicht der Erste, dem diese Fehlermeldung begegnet.
http://www.fpga-faq.com/archives/116725.html#116732
Dummerweise gab es da überhaupt keine Antwort...

> Meine Frage: Weiß jemand, wie mit den Zeilen --synthesis
> translate_on/off umgegangen werden muss?
Einfach drinnen lassen.

 -- stefan
#553513
Lesenswert?

Johnsn wrote:
> Ob LUT (und ob pipelined) oder Block kannst du genauso auch in den
> Synthese-Optionen einstellen.

Die Optionen kannte ich nicht, danke!

Die Kodierung (aus: XST User Guide, 8.1i) läßt dann auch eine einfache 
Verlängerung der Pipe zu; einziger Wermutstropfen ist, dass keine 
Hardware-Multiplizierer verwendet werden können. Das ist dann doch eine 
starke Einschränkung, leider.
1
process (clk)
2
begin
3
 if (clk'event and clk='1') then
4
  a_in <= A; b_in <= B;
5
  mult_res <= a_in * b_in;
6
  pipe_1 <= mult_res;
7
  pipe_2 <= pipe_1;
8
  pipe_3 <= pipe_2;
9
  MULT <= pipe_3;
10
 end if;
11
end process;

 -- stefan
#553759
Lesenswert?

> ...dann muss wohl der FAE ran :o)
Ich stehe gerade auf dem Schlauch :)

Übrigens, aus: XST User Guide, 8.1i, p.335
> The Translate Off (TRANSLATE_OFF) and Translate On (TRANSLATE_ON)
> directives can be used to instruct XST to ignore portions of your VHDL or
> Verilog code that are not relevant for synthesis; for example, simulation
> code. The TRANSLATE_OFF directive marks the beginning of the section to be
> ignored, and the TRANSLATE_ON directive instructs XST to resume synthesis
> from that point.

 -- stefan
Gast #553990
Lesenswert?

@adpat: zum zweiten link, genau das habe ich bereits versucht, gut es 
jetzt noch mal zu lesen. den link kannte ich bisher nicht. jetzt hängt 
es wohl noch an anderer stelle. mal schauen. aktualisiere gerade die 
libraries.

gruß seb
Gast #554048
Lesenswert?

... so jetzt geht das alles.
es lag nicht an den libraries. hatte auch noch nen syntaxfehler drin - 
die gutan alten semikolons :o)
jedenfalls war das problem, dass die generics nur im mapping aufgeführt 
waren und nicht im deklarationsteil der architecture des von coregen 
generierten files. das sollte, nein das muss man von hand ändern und 
alles ist gut :o)

in diesem sinne, schönes we!

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren