Warnung bei Statemachine (Synplify / IspLever)

OP #1522570
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
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
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
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
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

Eine eigene Frage? Dieser Thread ist über 16 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.