www.mikrocontroller.net

Forum: FPGA, VHDL & Co. Sensitivity List Problem bei GENERATE-Konstrukten


Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die option "check for Synthesis" liefert bei ModelSIM AE folgenden 
Fehler: "Signal ctrl_we is not in the s.-list" - obwohl es geclocked 
ist. Kann es an dem Generate Konstukt liegen?

Der Code stammt vom open cores SPDIF Decoder.
 
-- control register generation
   CTRLREG : for k in ctrl_din'range generate
      -- active bits can be written to
      ACTIVE : if ACTIVE_BIT_MASK(k) = '1' generate
         CBIT : process (clk, rst)
         begin
            if rst = '1' then
               ctrl_internal(k) <= '0';
            else
               if rising_edge(clk) then
                  if ctrl_wr = '1' then
                     ctrl_internal(k) <= ctrl_din(k);
                  end if;
               end if;
            end if;
         end process CBIT;
      end generate ACTIVE;

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> ctrl_we
taucht in dem Code gar nicht auf...

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Probier mal statt
if rst = '1' then
   ctrl_internal(k) <= '0';
else
    if rising_edge(clk) then

folgendes
if rst = '1' then
   ctrl_internal(k) <= '0';

elsif rising_edge(clk) then

Modelsim ist bei der Erkennung von getakteten Prozessen
inkl. async. Reset etwas zu genau

Gruß,
SuperWilly

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>> ctrl_we
>taucht in dem Code gar nicht auf...

@Lothar:
Die Taste "e" ist Nachbar(in) der Taste "r",
also weniger Korinthenkakerei hilft manchmal weiter.

Zur Sache ein Nachtrag:

Folgendes Konstrukt wird beim Synthese-Check durch Modelsim
ebenfalls bemängelt:
process(Reset, Clk)
begin
    if rising_edge(Clk) then

    end if;

    if Reset='1' then

    end if;
end process;

Gruß,
SuperWilly

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> @Lothar:
> Die Taste "e" ist Nachbar(in) der Taste "r",
> also weniger Korinthenkakerei hilft manchmal weiter.
Den Neben-Satz nach dem Komma hätts nicht mehr gebraucht,
der enthält keine gewinnbringende Information.
BTW: War ja nicht mein Tippfehler...   :-/

> Modelsim ist bei der Erkennung von getakteten Prozessen
> inkl. async. Reset etwas zu genau
Ja, beide Konstrukte werden bei Lattice und Xilinx anstandslos 
synthetisiert.

>Folgendes Konstrukt wird beim Synthese-Check durch Modelsim
>ebenfalls bemängelt: ...
Was macht Modelsim dann mit solchen Clock-Enable:
   process (clk, sel2)
   begin
      if rising_edge(clk) and (sel2='1') then
         :
      end if;
   end process;

   process (clk, sel3)
   begin
      if (sel3='1') then
         if rising_edge(clk) then
            :
         end if;
      end if;
   end process;
Die Xilinx-Synthese verdaut das...  :-o

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Was macht Modelsim dann mit solchen Clock-Enable:

@Lothar

Ja, die Synthese hat damit keine Probleme, Modelsim jedoch meckert auch
hier.

Gruß,
SuperWilly

Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke euch beiden!

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe das Problem beim Modelsim-Support mal angefragt. Informationen
folgen ...

Gruß,
SuperWilly

Autor: Frager (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn man auf ELSIF umstellt, geht es in der TAT. Ich denke es liegt 
daran, dass er vorher nicht gesamten ELSE-Zweig als getaktet ansieht und 
sich merkt, dass dort Kombinatorik kommen kann.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ich denke es liegt daran ...
... das Modelsim zwar gut simulieren kann, die Synthese aber besser 
anderen überlassen sollte ;-)

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe von Mentor eine Antwort bezüglich meiner Frage, wieso oben genannte 
Konstrukte vom Synthesis-Checker bemängelt werden,
erhalten:

Der Synthesis-Checker hat (Zitat) "limitations", die Behebung dieser
erhält eine niedrige Priorität, es sei denn ich kann driftige Gründe
nennen, wieso oben genannte Konstrukte als synthese-fähige Konstrukte
erkannt werden sollten.

Was meint Ihr dazu ? Welche wichtigen Gründe sprechen für die 
Unterstützung
solcher "vom Üblichen" abweichenden Register-Beschreibungen mit 
(a)synchroner Reset/Set-Unterstützung ?


Gruß,
SuperWilly

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Welche wichtigen Gründe sprechen für die Unterstützung
> solcher "vom Üblichen" abweichenden Register-Beschreibungen mit
> (a)synchroner Reset/Set-Unterstützung ?
Keiner.
Modelsim simuliert und Synplify/XST&Co synthetisieren.

Wieso sollte man an einen Hammer einen Schraubendreher anbauen?  ;-)

Autor: SuperWilly (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Naja, der Synthese-Checker in Modelsim soll unvollständige 
Sensitivitätslisten aufzeigen, um nachher keine bösen Überraschungen
in Form unterschiedlichen Verhaltens in realer Hardware und Simulation
zu erhalten.
Wenn nun jedoch Konstrukte von Modelsim bemängelt werden, die eigentlich
unproblematisch sind, dann werden die Meldungen ab einer gewissen
Anzahl unübersichtlich und sind nicht mehr hilfreich.
Hat also mit Hammer und Schraubendreher überhaupt nichts zu tun !

Gruß,
SuperWilly

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.