mikrocontroller.net

Forum: FPGA, VHDL & Co. Wie wird Attribute noopt für Precision richtig gesetzt?


Autor: VHDLProblem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo, vielelicht kann mir jemand von euch helfen.

ich möchte gerne das Attribute noopt auf die Komponente ff_enable 
setzen, allerdings bekomme ich immer Fehlermeldungen, egal was ich 
bisher versucht habe. Hat vielleicht einer von euch eine Idee oder weiß 
wie man das Attribute in diesem Fall richtig setzt?
Ich glaube das Problem liegt an der Generiung in der Schleife, wenn ich 
das Attribute oben nach der Komponente setzte bekomme ich im Precision 
die Fehlermeldung, dass die Komponente unmapped ist. Wenn ich sie unten 
auf die Instanze setze kommt: dass man das Attribute nicht auf die 
Instanz setzten kann. Ich versteh einfach nicht, was ich falsch mache.

Ziel des Ganzen ist das die Synthese schneller von statten geht. Es ist 
allerdings nur ein Teil der Programmierung zu sehen
ARCHITECTURE rtl OF ff_compare IS

   CONSTANT C_NUM_EN_LEN : POSITIVE := 16;
   CONSTANT C_NUM_EN     : POSITIVE := G_NUM_FF_LEN / C_NUM_EN_LEN;

   SIGNAL toggle : STD_LOGIC             := '0';  -- toggle SIGNAL
   SIGNAL ff_ar  : STD_LOGIC_VECTOR ((2* (C_NUM_EN+1))-1 DOWNTO 0);
   SIGNAL v_loop : UNSIGNED (2 DOWNTO 0) := "000";

   COMPONENT ff_enable
      GENERIC (
         G_FF_LEN : POSITIVE := C_NUM_EN_LEN
         );
      PORT (
         in_ff_enable  : IN  STD_LOGIC_VECTOR(1 DOWNTO 0);
         clk           : IN  STD_LOGIC;
         en_ff_enable  : IN  STD_LOGIC;
         out_ff_enable : OUT STD_LOGIC_VECTOR(1 DOWNTO 0)
         );
   END COMPONENT;

--   ATTRIBUTE NOOPT              : BOOLEAN;
--   ATTRIBUTE NOOPT OF int_ff_enable_proc : COMPONENT IS TRUE;
   ATTRIBUTE NOOPT              : BOOLEAN;
   ATTRIBUTE NOOPT OF ff_enable : COMPONENT IS TRUE;

BEGIN
   int_ff_enable_proc : FOR i IN 0 TO C_NUM_EN-1 GENERATE

      -- Precision
      ATTRIBUTE hierarchy                       : STRING;
      ATTRIBUTE hierarchy OF inst_ff_enable     : LABEL IS 
"preserve_interface_block";
--      ATTRIBUTE NOOPT                           : BOOLEAN;
--      ATTRIBUTE NOOPT OF inst_ff_enable         : LABEL IS TRUE;
--      ATTRIBUTE NOOPT                           : BOOLEAN;
--      ATTRIBUTE NOOPT OF ff_enable         : component IS TRUE;

   BEGIN

      inst_ff_enable : ff_enable
         PORT MAP (
            clk           => clk,
            in_ff_enable  => ff_ar ((2*i)+1 DOWNTO 2*i),
            out_ff_enable => ff_ar((2*i)+3 DOWNTO (2*i)+2),
            en_ff_enable  => ff_drain_en_compare
            );

   END GENERATE int_ff_enable_proc;

END ARCHITECTURE rtl;

: Bearbeitet durch Moderator
Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
VHDLProblem schrieb:
> ich möchte gerne das Attribute noopt auf die Komponente ff_enable
> setzen,
Warum?
Ich habe das bisher noch nie wirklich gebraucht...

> allerdings bekomme ich immer Fehlermeldungen, egal was ich
> bisher versucht habe.
Welche Fehlermeldung?
Copy&paste oder ein Screenshot ist da hilfreich.
Sonst können die Forumsteilnehmer ohne Precision (so wie ich) nur raten.


Ah, da stehts ja:
> Ziel des Ganzen ist das die Synthese schneller von statten geht.
Wie lange dauert denn die Synthese momentan?
Wie groß ist das Design?
Ich habe aktuell Synthesezeiten von 30 Minuten. Aber auch 
(funktionsfähige) Synthesen, die über Nacht liefen (>8h) habe ich schon 
erlebt.

Duke

Autor: VHDLProblem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Design macht nur Logik die theoretisch wegoptimiert werden kann.

Dabei sollen eine durch ein generic bestimmte anzahl an fliflops und 
Schieberegister hintereinander gesetzt werden. die Synthes von 64t 
flipFlops die in einer bestimmten Anordnung generiert werden soll dauert 
47h plus. Habe die Synthese da abgebrochen

Dont_touch kann ich in diesem Fall nicht verwenden, da die unterste 
Ebene der Hierachie optimiert werden muss.

Warning: [45558]: Module work.ff_ressource_top(struct){generic map 
(G_NUM_FF_LEN => 160 G_NUM_FF_WIDTH => 100)}: Black-box attributes (like 
black_box or noopt) are set on instances inside this module.  These 
attributes are not supported on instances and will be ignored.  Please 
set the attributes on the module or entity definition to treat them as 
black-boxes.
im anderen fall:
# Warning: [45759]: NOOPT attribute specified for an unmapped cell, 
'ff_enable_16'. This attribute will be ignored.

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
VHDLProblem schrieb:
> Das Design macht nur Logik die theoretisch wegoptimiert werden kann.
Ok. Und was willst Du bezwecken?
Wenn Du sehen willst, wieviele Deiner Flipflops in's FPGA passen, würde 
ich die Ausgänge miteinander verxodern und auf einen LED-Pin o.ä. legen.


> Dabei sollen eine durch ein generic bestimmte anzahl an fliflops und
> Schieberegister hintereinander gesetzt werden. die Synthes von 64t
> flipFlops die in einer bestimmten Anordnung generiert werden soll dauert
> 47h plus. Habe die Synthese da abgebrochen
Dann würde ich mal weniger probieren :)
Man kann sich ja steigern: 1k, 2k, 4k, 8k, ...
Zu 100% wirst Du Deine FFs wahrscheinlich nicht nutzen können.

Irgendeine Ressource geht im FPGA immer zuerst aus: BRAM, 
Multiplizierer, Taktnetze, Routing, ...
FF und LUTs bleiben da sicher ein paar über, nur man bekommt kein 
Routing mehr hin.


VHDLProblem schrieb:
> Black-box attributes (like
> black_box or noopt) are set on instances inside this module.  These
> attributes are not supported on instances and will be ignored.  Please
> set the attributes on the module or entity definition to treat them as
> black-boxes.
Das würde ich mal den Precision-Constraint-Guide zu Rate ziehen...

Duke

Autor: VHDLProblem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Antwort bringt mich leider nicht weiter immerhin hat mein FPGA 
über 400t flipflop da sollten 64t kein Problem darstellen.

Ich möchte nur wissen wie man das Attribute richtig setzt :(

Autor: Duke Scarring (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
VHDLProblem schrieb:
> Ich möchte nur wissen wie man das Attribute richtig setzt :(
RTFM.

Laut 
https://courses.engr.illinois.edu/ece412/Reference...
kommt
attribute dont_touch : boolean;
attribute dont_touch of I1: label is true;
und
attribute preserve_signal : boolean;
attribute preserve_signal of rst_int : signal is true;
in Frage.
Ich habe keinen Zugriff auf Precsion. Es kann sein, das es bei neueren 
Versionen weitere nutzbare Attribute gibt.

Duke

Autor: VHDLProblem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für deine Antwort.

Allerdings weiß ich wie ich diese Attribute setze, eben nur nicht das 
Attribute noopt. Da ich die Komponente in einer generischen Schleife 
instanziiere.

Autor: VHDLProblem (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
noopt

Specifies that an instance should not be optimized or changed.
noopt <instance name> <true or false>

In contrast to dont_touch, lower-level hierarchy and leaf instances are 
not protected from
optimization or change. For Example
Verilog
//exemplar attribute <module_name> noopt TRUE
VHDL
attribute NOOPT : boolean;
attribute NOOPT of <component_name> : component is TRUE;

ich become so wie ich es vgl code oben einsetzte eben immer 
fehlermeldungen

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.