/********************************************/
/*                                          */
/* Supergate cell library for Bench marking */
/*                                          */
/* Symbiotic EDA GmbH / Moseley Instruments */
/* Niels A. Moseley                         */
/*                                          */
/* Process: none                            */
/*                                          */
/* Date   : 02-11-2018                      */
/* Version: 1.0                             */
/*                                          */
/********************************************/

library(supergate) {
  technology (cmos);
  revision : 1.0;
  
  time_unit                     : "1ps";
  pulling_resistance_unit       : "1kohm";  
  voltage_unit                  : "1V";
  current_unit                  : "1uA";  
  
  capacitive_load_unit(1,ff);
  
  default_inout_pin_cap         :  7.0;
  default_input_pin_cap         :  7.0;
  default_output_pin_cap        :  0.0;
  default_fanout_load           :  1.0;

  default_wire_load_capacitance : 0.1;
  default_wire_load_resistance  : 1.0e-3;
  default_wire_load_area        : 0.0;

  nom_process                   :  1.0;
  nom_temperature               : 25.0;
  nom_voltage                   :  1.2;
  
  delay_model                   : generic_cmos;
  
  /* Inverter */
  cell (inv) {
    area : 1;
    pin(A) {
      direction : input;
    }
    
    pin(Y) {
      direction : output;
      function : "A'";
    }
  }
  
  /* tri-state inverter */
  cell (tri_inv) {
    area : 4;
    pin(A) {
      direction : input;    
    }
    pin(S) {
      direction : input;
    }
    pin(Z) {
      direction : output;
      function  : "A'";
      three_State : "S'";
    }
  }
  
  cell (buffer) {
    area : 5;
    pin(A) {
      direction : input;
    }
    pin(Y) {
      direction : output;
      function : "A";
    }
  }  
  
  /* 2-input NAND gate */
  cell (nand2) {
    area : 3;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(Y) {
      direction: output;
      function : "(A * B)'";
    }
  }
  
  /* 2-input NOR gate */
  cell (nor2) {
    area : 3;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(Y) {
      direction: output;
      function : "(A + B)'";
    }
  }
  
  /* 2-input XOR */
  cell (xor2) {
    area : 6;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(Y) {
      direction: output;
      function : "(A *B') + (A' * B)";
    }
  }
  
  /* 2-input inverting MUX */
  cell (imux2) {
    area : 5;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(S) {
      direction : input;
    } 
    pin(Y) {
      direction: output;
      function : "( (A * S) + (B * S') )'";
    }
  }
  
  /* D-type flip-flop with asynchronous reset and preset */
  cell (dff) {
    area : 6;
    ff("IQ", "IQN") {
      next_state : "D";
      clocked_on : "CLK";
      clear      : "RESET";
      preset     : "PRESET";
      clear_preset_var1 : L;
      clear_preset_var2 : L;
    } 
    pin(D) {
      direction : input;
    }
    pin(CLK) {
      direction : input;
    }
    pin(RESET) {
      direction : input;
    }
    pin(PRESET) {
      direction : input;
    }
    pin(Q) {
      direction: output;
      function : "IQ";
      timing() {
        timing_type : rising_edge;
        intrinsic_rise : 65;
        intrinsic_fall : 65;
        rise_resistance : 0;
        fall_resistance : 0; 
        related_pin : "CLK";
      }
      timing () {
        timing_type : clear;
        timing_sense : positive_unate;
        intrinsic_fall : 75;
        related_pin : "RESET";
      }
      timing () {
        timing_type : preset;
        timing_sense : negative_unate;
        intrinsic_rise : 75;
        related_pin : "PRESET";
      }      
    }
    pin(QN) {
      direction: output;
      function : "IQN";
      timing() {
        timing_type : rising_edge;
        intrinsic_rise : 65;
        intrinsic_fall : 65;
        rise_resistance : 0;
        fall_resistance : 0; 
        related_pin : "CLK";
      }
      timing () {
        timing_type : preset;
        timing_sense : negative_unate;
        intrinsic_rise : 75;
        related_pin : "RESET";
      }
      timing () {
        timing_type : clear;
        timing_sense : positive_unate;
        intrinsic_fall : 75;
        related_pin : "PRESET";
      }      
    } 
  }

  /* Latch */
  cell(latch) {
    area : 5;
    latch ("IQ","IQN") {
      enable : "G";
      data_in : "D";
    }

    pin(D) {
      direction : input;
    }
    pin(G) {
      direction : input;
    }
 
    pin(Q) {
      direction : output;
      function : "IQ";
      internal_node : "Q";
      
      timing() {
        timing_type : rising_edge;
        intrinsic_rise : 65;
        intrinsic_fall : 65;
        rise_resistance : 0;
        fall_resistance : 0;
        related_pin : "G";
      }
      
      timing() {
        timing_sense : positive_unate;
        intrinsic_rise : 65;
        intrinsic_fall : 65;
        rise_resistance : 0;
        fall_resistance : 0;
        related_pin : "D";
      }
    }
    
    pin(QN) {
      direction : output;
      function : "IQN";
      internal_node : "QN";
      
      timing() {
        timing_type : rising_edge;
        intrinsic_rise : 65;
        intrinsic_fall : 65;
        rise_resistance : 0;
        fall_resistance : 0;
        related_pin : "G";
      }
      
      timing() {
        timing_sense : negative_unate;
        intrinsic_rise : 65;
        intrinsic_fall : 65;
        rise_resistance : 0;
        fall_resistance : 0;
        related_pin : "D";
      }
    }
  }

  /* 3 input AND-OR-INVERT gate */
  cell (aoi211) {
    area : 3;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(C) {
      direction : input;
    }    
    pin(Y) {
      direction: output;
      function : "((A * B) + C)'";
    }
  }


  /* 3 input OR-AND-INVERT gate */
  cell (oai211) {
    area : 3;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(C) {
      direction : input;
    }    
    pin(Y) {
      direction: output;
      function : "((A + B) * C)'";
    }
  }

  /* half adder */
  cell (halfadder) {
    area : 5;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(C) {
      direction : output;
      function  : "(A * B)";
    }    
    pin(Y) {
      direction: output;
      function : "(A *B') + (A' * B)";
    }    
  }

  /* full adder */
  cell (fulladder) {
    area : 8;
    pin(A) {
      direction : input;
    }
    pin(B) {
      direction : input;
    }
    pin(CI) {
      direction : input;
    }    
    pin(CO) {
      direction : output;
      function : "(((A * B)+(B * CI))+(CI * A))";
    }
    pin(Y) {
      direction: output;
      function : "((A^B)^CI)";
    }    
  }

} /* end */
