Warnung bei Statemachine (Synplify / IspLever)

OP #1522570
Lesenswert?
• ▲
▼
hallo,

ich habe in meinem design eine statemachine. wenn ich das design nicht 
direkt im ispLever7.2 synthetisiere sondern in synplify, gibt er mir 
folgene warnung aus:

Extracted state machine for register STATE
State machine has 4 reachable states with original encodings of:
   00
   01
   10
   11
@W:"C:\ispTOOLS7_2_STRT\work\MXO2280\receiver_test_v1\rec_cntl.vhd":252: 
2:252:3|Initial  value is not supported on state machine STATE
@END

hier noch ein teil des quelltextes:
1
begin
2
    if falling_edge(sys_clk25M) then
3
      if sys_en = '1' then
4
      
5
        clk_cnt_i <= (others => '0');
6
        smpl_cnt_i <= (others => '0');
7
        neg_cnt_i <= (others => '0');
8
        rlock <= '0';
9
        STATE <= CNT_STATE;
10
      
11
      elsif sys_en = '0' and all_enable = '1' then
12

13
        case STATE is
14
          when CNT_STATE =>....
15
          when SMPL_STATE => ....
16
          when NEG_STATE =>....
17
          when RESET_STATE => ....
18
        end case;
19
                      .........

da ich gerade das design durchchecken muss weil es nicht richtig 
funktioniert würde ich gerne wissen was die meldung zu bedeuten hat. ich 
kann mir darunter nicht viel vorstellen.
kann mir jemand helfen?


mfg

Andi
Gast #1522588
Lesenswert?
• ▲
▼
die fehlermeldung besagt, das dein initialisierungswert für dein signal 
"STATE" nicht unterstützt wird.

wird dieses signal von dir noch irgendwo vorinitialisiert? also bevor du 
es in dem "if sys_en = 1"-zweig auf einen startwert legst?
OP #1522920
Lesenswert?
• ▲
▼
hallo,

das nächste problem ist nun aufgetaucht.
ich habe ein prozess welcher mir eine taktflanke eines signals anzeigt. 
dazu verwende ich ein "pre_rxdv" mit dem ich den aktuellen wert des 
signals vergleiche.
der prozess reagiert auf die steigende flanke der 25Mhz clock und 
vergleicht den letztenm wer mit dem neuen und setzt dann für einen takt 
ein signal.
hier mal der code:
1
  signal cnt_start_i   : std_logic := '0';
2
  signal pre_rxdv   : std_logic := '0';
3
  
4
  attribute syn_keep of cnt_start_i : signal is true; 
5
  attribute syn_keep of pre_rxdv : signal is true;
6
  attribute syn_noprune : boolean;
7
  attribute syn_noprune of cnt_start_i : signal is true; 
8
  attribute syn_noprune of pre_rxdv : signal is true;
9

10
....
11

12
if rising_edge(sys_clk25M) then
13
      if sys_en = '1' then
14
        pre_rxdv <= '0';
15
        cnt_start_i <= '0';
16
        
17
      elsif sys_en = '0' then
18
        if rxen = '1' and pre_rxdv = '0' then
19
          cnt_start_i <= '1';
20
          pre_rxdv <= rxen;
21
        else
22
          cnt_start_i <= '0';
23
          pre_rxdv <= rxen;
24
        end if;
25
      end if;
26
    end if;

nach der synthese wurden die beiden signale rausgeschmissen. mit den 
direktiven passiert das aber auch. dazu muss ich sagen das mein 
restliches design auf fallende flanken reagiert.

hier die meldung von synplify:

@W: BN226 
:"c:\isptools7_2_strt\work\mxo2280\receiver_test_v2\rec_cntl.vhd":114:2: 
114:3|Property  n_syn_noprune incorrectly applied to instance 
RECEIVE_CONTROL.INCOMING_DATA\.pre_rxdv.Q_0
@W: BN226 
:"c:\isptools7_2_strt\work\mxo2280\receiver_test_v2\rec_cntl.vhd":114:2: 
114:3|Property  n_syn_noprune incorrectly applied to instance 
RECEIVE_CONTROL.INCOMING_DATA\.cnt_start_i.Q_0

somit kann ich die signale ja nicht im simulator finden.
wie kann ich die signale den behalten?

mfg

Andi
#1524096
Lesenswert?
• ▲
▼
syn_noprune existiert nur für Instanzen.
Für Signale ist es syn_keep, für Register syn_preserve.


Der Code-Ausschnitt sieht ansonsten soweit gut aus - sonst gibt es keine 
Warnungen?
Warum benutzt du unterschiedliche Taktflanken? Normalerweise sollte man 
sich auf eine Flanke beschraenken.
OP #1524166
Lesenswert?
• ▲
▼
hallo,

ne da kommen keine warnungen mehr. nur die, die ich zu beginn hier schon 
erwähnt habe und welche mich nicht stört.

ich verwende ansich nur eine taktflanke im ganzen design. allerdings ist 
es gerade sehr günstig das design dadurch zu synchronisieren. und jetzt 
läuft alles tadellos.


danke...

mfg

Andi

Antwort schreiben

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.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.