Warnung bei Statemachine (Synplify / IspLever)

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

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