IF Statement.nsl

/* ************************************************************ */
declare VAR_IF {

    input       A_i ;
    input       B_i ;
    input       Enb_i ;

    func_in     Check_i() ;

    func_out    Q_AND() ;
    func_out    Q_OR() ;
    func_out    Q_ExOR() ;

    func_out    Q_AisH() ;
    func_out    Q_BisL() ;

}

/* ************************************************************ */
// Declare module
module VAR_IF {

/* ************************************************************ */
// Internal operation signals

    func_name   if_statement_check() ;

/* ************************************************************ */
// Equation

    func    Check_i {
    // Statement case #1
//      if ( Enb_i == 1'b1 ) {              // if ( Enb_i ) .... => OK
//          if_statement_check() ;
//      }

    // Statement case #2
        any {
            Enb_i   : if_statement_check() ;
        }

    }

    func        if_statement_check {
    
    // Logical decision
        if ( A_i & B_i )            // Compare A and B.
            Q_AND() ;               //      Drive output function terminal.

        if ( A_i | B_i )            // Logical OR of A and B.
            Q_OR() ;                //      Drive output function terminal.

        if ( A_i ^ B_i )            // Logical ExOR of A and B.
            Q_ExOR() ;              //      Drive output function terminal.

    // Variation 1  
        if ( A_i ) {                // Logical H level detect
            Q_AisH () ;             //      Drive output function terminal.
        }

//  // Variation 2  
//      if ( A_i == 1'b1 ) {        // Compare both A and '1' value
//          Q_AisH () ;             //      Drive output function terminal.
//      }

//  // Variation 3  
//      if ( A_i != 1'b0 ) {        // Compare both A and not '0' value.
//          Q_AisH () ;             //      Drive output function terminal.
//      }

    // Variation 4
        if ( ~B_i ) {               // Logical L level detect
            Q_BisL () ;             //      Drive output function terminal.
        }

//  // Variation 5
//      if ( B_i == 1'b0 ) {        // Compare both A and '0' value
//          Q_BisL () ;             //      Drive output function terminal.
//      }

//  // Variation 6
//      if ( B_i != 1'b1 ) {        // Compare both A and not '1' value.
//          Q_BisL () ;             //      Drive output function terminal.
//      }
    
    }
}
/* ************************************************************ */