ADDER4_sync.nsl

/* ************************************************************ */
declare ADDER4_sync {

    input       A_in[4] ;           // Add value input. Port-A
    input       B_in[4] ;           // Add value input. Port-B
    output      Q_out[4] ;          // Add result out
    
    func_in     exec( A_in, B_in ) ;// Add function execution request with parameter.
    func_out    done( Q_out ) ;     // Add function complete acknowledge with parameter.
    
}

/* ************************************************************ */
// Declare module
module ADDER4_sync {
    reg         reg_Q[4] = 4'b0000 ;// Declare register with initial value.

    proc_name   adder_finish(reg_Q) ;
    
/* ************************************************************ */
// Internal operation signals
//  {
//      Q_out   = reg_Q ;
//  }

/* ************************************************************ */
// Pallarel equation

/* ************************************************************ */
// Function independent equation
    func    exec {
        reg_Q := A_in + B_in ;
        adder_finish() ;
    }
    
    proc    adder_finish {
        done(reg_Q) ;
        finish ;
    }

}
/* ************************************************************ */