Me sale un error en WinCupl excessive number of product terms

#1
Hola que tal, estoy haciendo una máquina de estados de un menú de motores con una gal22v10, pero al momento de compilar, me sale el error que me dice: excessive number of product terms, alguna idea como solucionarlo??? aquí les dejo mi código:
Código:
Name     Menu motores ;
PartNo   00 ;
Date     26/02/2013 ;
Revision 01 ;
Designer Engineer ;
Company  jorch ;
Assembly None ;
Location  ;
Device   g22v10 ;

/* *************** INPUT PINS *********************/
PIN   1  = CLK                        ; /*        */ 
PIN   2  = M;
PIN   3  = S;
PIN   4  = X;

/* *************** OUTPUT PINS *********************/
PIN   [23..19] = [O0..4]         ;
PIN   18 = RELOJ;
/*DEFINICIONES*/
$DEFINE EDO_A 0
$DEFINE EDO_B 1
$DEFINE EDO_C 2
$DEFINE EDO_D 3
$DEFINE EDO_E 4
$DEFINE EDO_F 5
$DEFINE EDO_G 6
$DEFINE EDO_H 7
$DEFINE EDO_I 8
$DEFINE EDO_J 9
$DEFINE EDO_K 10
$DEFINE EDO_L 11
$DEFINE EDO_M 12
$DEFINE EDO_N 13
$DEFINE EDO_O 14
$DEFINE EDO_P 15
$DEFINE EDO_Q 16
$DEFINE EDO_R 17
$DEFINE EDO_S 18
$DEFINE EDO_T 19
$DEFINE EDO_U 20

/*CAMPOS*/
FIELD ESTADO = [O0..4];

/*MAQUINA DE ESTADOS*/
SEQUENCE ESTADO
{
    PRESENT EDO_A
        IF M NEXT EDO_B;
        DEFAULT NEXT EDO_A;
    PRESENT EDO_B
        IF M NEXT EDO_C;
        IF S NEXT EDO_D;
        DEFAULT NEXT EDO_B;
    PRESENT EDO_C
        IF M NEXT EDO_A;
        IF S NEXT EDO_G;
        DEFAULT NEXT EDO_C;
    PRESENT EDO_D
        IF M NEXT EDO_E;
        IF S NEXT EDO_J;
        IF X NEXT EDO_B;
        DEFAULT NEXT EDO_D;
    PRESENT EDO_E
        IF M NEXT EDO_F;
        IF S NEXT EDO_L;
        IF X NEXT EDO_B;
        DEFAULT NEXT EDO_E;
    PRESENT EDO_F
        IF M NEXT EDO_D;
        IF S NEXT EDO_N;
        IF X NEXT EDO_B;
        DEFAULT NEXT EDO_F;
    PRESENT EDO_G
        IF M NEXT EDO_H;
        IF S NEXT EDO_P;
        IF X NEXT EDO_C;
        DEFAULT NEXT EDO_G;
    PRESENT EDO_H
        IF M NEXT EDO_I;
        IF S NEXT EDO_R;
        IF X NEXT EDO_C;
        DEFAULT NEXT EDO_H;
    PRESENT EDO_I
        IF M NEXT EDO_G;
        IF S NEXT EDO_T;
        IF X NEXT EDO_C;
        DEFAULT NEXT EDO_I;
    PRESENT EDO_J
        IF M NEXT EDO_K;
        IF S NEXT EDO_D;
        DEFAULT NEXT EDO_J;
    PRESENT EDO_K
        IF M NEXT EDO_J;
        IF S NEXT EDO_D;
        DEFAULT NEXT EDO_K;
    PRESENT EDO_L
        IF M NEXT EDO_M;
        IF S NEXT EDO_E;
        DEFAULT NEXT EDO_L;
    PRESENT EDO_M
        IF M NEXT EDO_L;
        IF S NEXT EDO_E;
        DEFAULT NEXT EDO_M;
    PRESENT EDO_N
        IF M NEXT EDO_O;
        IF S NEXT EDO_F;
        DEFAULT NEXT EDO_N;
    PRESENT EDO_O
        IF M NEXT EDO_N;
        IF S NEXT EDO_F;
        DEFAULT NEXT EDO_O;
    PRESENT EDO_P
        IF M NEXT EDO_Q;
        IF S NEXT EDO_G;
        DEFAULT NEXT EDO_P;
    PRESENT EDO_Q
        IF M NEXT EDO_P;
        IF S NEXT EDO_G;
        DEFAULT NEXT EDO_Q;
    PRESENT EDO_R
        IF M NEXT EDO_S;
        IF S NEXT EDO_H;
        DEFAULT NEXT EDO_R;
    PRESENT EDO_S
        IF M NEXT EDO_R;
        IF S NEXT EDO_H;
        DEFAULT NEXT EDO_S;
    PRESENT EDO_T
        IF M NEXT EDO_U;
        IF S NEXT EDO_I;
        DEFAULT NEXT EDO_T;
    PRESENT EDO_U
        IF M NEXT EDO_T;
        IF S NEXT EDO_I;
        DEFAULT NEXT EDO_U;
}

/*FUNCIONES*/
RELOJ = M#S#X;
 
Última edición por un moderador:
Arriba