Page MenuHomePhorge

nem_basic_yosys_restricted.lib
No OneTemporary

Size
49 KB
Referenced Files
None
Subscribers
None

nem_basic_yosys_restricted.lib

library (nem_basic) {
comment : "Manually created liberty with more gates - ignore any timing information";
date : "$April 26th 2024$";
revision : "0.2";
delay_model : table_lookup;
capacitive_load_unit (1,pf);
time_unit : "1ns";
current_unit : "1uA";
voltage_unit : "1V";
voltage_map (VCC,15);
voltage_map (GND,0);
default_cell_leakage_power : 0;
default_fanout_load : 1;
default_max_transition : 500;
default_output_pin_cap : 0;
input_threshold_pct_rise : 50.0;
input_threshold_pct_fall : 50.0;
output_threshold_pct_rise : 50.0;
output_threshold_pct_fall : 50.0;
slew_lower_threshold_pct_rise : 20.0;
slew_lower_threshold_pct_fall : 20.0;
slew_upper_threshold_pct_rise : 80.0;
slew_upper_threshold_pct_fall : 80.0;
slew_derate_from_library : 1.0;
nom_process : 1;
nom_temperature : 125;
nom_voltage : 15;
operating_conditions (NEM_BASIC_COND) {
process : 1;
temperature : 125;
voltage : 29;
}
default_operating_conditions : NEM_BASIC_COND;
lu_table_template (delay_template_2x2) {
variable_1 : input_net_transition;
variable_2 : total_output_net_capacitance;
index_1("0.01,0.1");
index_2("0.02,0.2");
}
lu_table_template (constraint_template_2x2) {
variable_1 : constrained_pin_transition;
variable_2 : related_pin_transition;
index_1("0.01,0.1");
index_2("0.02,0.2");
}
cell(inv_3T) {
area : 1160;
cell_footprint : inv_3T;
/* cell_description : "NEM 3T Inverter"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (in) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "!(in)";
max_capacitance : 10;
max_fanout : 10;
max_transition : 500;
timing () {
related_pin : "in";
timing_sense : negative_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(mux_4T) {
area : 1288;
cell_footprint : mux_4T;
/* cell_description : "NEM 4T 2-Input MUX"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
/*bundle(in) {
members(in_0,in_1);
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}*/
pin(in_0){
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin(in_1){
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (sel) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "(!sel & in_0) | (sel & in_1)";
max_fanout : 10;
timing () {
related_pin : "in_0";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "in_1";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "sel";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(and_4T) {
area : 1000000;
cell_footprint : and_4T;
/* cell_description : "NEM 4T 2-Input AND based on muxiplayers pass logic"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "a&b";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(nand_4T) {
area : 1000000;
cell_footprint : and_4T;
/* cell_description : "NEM 4T 2-Input AND based on muxiplayers pass logic"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "!(a&b)";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(and_not_4T) {
area : 1000000;
cell_footprint : and_4T;
/* cell_description : "NEM 4T 2-Input AND based on muxiplayers pass logic having inverted input"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "a&!(b)";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(or_4T) {
area : 1000000;
cell_footprint : or_4T;
/* cell_description : "NEM 4T 2-Input OR based on muxiplayers pass logic"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "a|b";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(nor_4T) {
area : 1000000;
cell_footprint : or_4T;
/* cell_description : "NEM 4T 2-Input NOR based on muxiplayers pass logic"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "a|b";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(or_not_4T) {
area : 1000000;
cell_footprint : or_4T;
/* cell_description : "NEM 4T 2-Input OR based on muxiplayers pass logic having inverted input"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "a|!(b)";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(xor_4T) {
area : 1000000;
cell_footprint : xor_3T;
/* cell_description : "NEM 4T 2-Input XOR based on 2 4T and 3T inverter"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "a^b";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(xnor_4T) {
area : 1000000;
cell_footprint : xor_3T;
/* cell_description : "NEM 4T 2-Input XNOR based on 2 4T and 3T inverter"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "!(a^b)";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
}
cell(xor_4T_test) {
area : 1000000;
cell_footprint : xor_3T;
/* cell_description : "NEM 4T 2-Input XOR based on 2 4T needs an inverted input"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (a) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (b) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (c) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (out) {
direction : "output";
related_ground_pin : GND;
related_power_pin : VCC;
function : "(a&c)|(!(a)&b)";
max_fanout : 10;
timing () {
related_pin : "a";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "b";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
pin_opposite("b","c");
}
/*
cell(SR_latch) {
area : 2704;
cell_footprint : SR_latch;
cell_description : "NEM based S-R type Latch";
pin (S) {
direction : "input";
}
pin (R) {
direction : "input";
}
pin (Q) {
direction : "output";
function : "IQ";
}
pin (Q_bar) {
direction : "output";
function : "IQB";
}
latch (IQ,IQB) {
preset : "S"
clear : "R"
clear_preset_var1 : L;
clear_preset_var2 : L;
}
statetable (" R S ", " IQ IQB "){
table : "H L : - - : L H ,\
L H : - - : H L ,\
H H : - - : L L ,\
L L : - - : N N";
}
}
*/
cell(D_latch) {
area : 9448;
cell_footprint : D_latch;
/* cell_description : "NEM based D type Latch"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (D) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
/* data_in_type : data;*/
/*
timing() {
related_pin : "EN";
timing_type : hold_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
timing() {
related_pin : "EN";
timing_type : setup_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
*/
}
pin (EN) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (Q) {
direction : "output";
function : "QOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
/*
timing () {
related_pin : "D";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "EN";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
*/
}
pin (Q_bar) {
direction : "output";
function : "QBOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
/*
timing () {
related_pin : "D";
timing_sense : negative_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "EN";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
*/
}
latch (QOUT,QBOUT) {
enable : "EN";
data_in : "D";
}
}
cell(D_latch_rst) {
area : 13432;
cell_footprint : D_latch_rst;
/* cell_description : "NEM based D type Latch with reset"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (D) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
/* data_in_type : data;*/
}
pin (EN) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (rst) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (Q) {
direction : "output";
function : "QOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "D";
timing_sense : positive_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "EN";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4darkblue.0","0.21,4.1");
}
}
}
pin (Q_bar) {
direction : "output";
function : "QBOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "D";
timing_sense : negative_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
timing () {
related_pin : "EN";
timing_sense : non_unate;
timing_type : combinational;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
latch (QOUT,QBOUT) {
enable : "EN";
data_in : "D";
clear : "rst";
}
}
cell(D_FF) {
area : 20056;
cell_footprint : D_FF;
/* cell_description : "NEM based M-S D type Flip Flop"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (D) {
nextstate_type : data;
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
max_transition : 0.2;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_type : hold_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
timing () {
related_pin : "CLK";
timing_type : setup_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
}
pin (CLK) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (Q) {
direction : "output";
function : "QOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
pin (Q_bar) {
direction : "output";
function : "QBOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
ff (QOUT,QBOUT) {
clocked_on : "CLK";
next_state : "D";
}
}
cell(D_FF_rst) {
area : 28184;
cell_footprint : D_FF_rst;
/* cell_description : "NEM based M-S D type Flip Flop with reset"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (D) {
nextstate_type : data;
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
max_transition : 0.2;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_type : hold_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
timing () {
related_pin : "CLK";
timing_type : setup_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,-4.0","0.21,4.1");
}
}
}
pin (rst) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_type : recovery_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
}
timing () {
related_pin : "CLK";
timing_type : removal_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
}
}
pin (CLK) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (Q) {
direction : "output";
function : "QOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
pin (Q_bar) {
direction : "output";
function : "QBOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
ff (QOUT,QBOUT) {
clear : "rst";
clocked_on : "CLK";
next_state : "D";
}
}
/* SCAN FUNCTIONALITY HASN'T BEEN ADDED YET */
cell(S_FF) {
area : 20056;
cell_footprint : D_FF;
/* cell_description : "NEM based M-S D type Flip Flop with scan functionality";*/
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (D) {
nextstate_type : data;
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
max_transition : 0.2;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_type : hold_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
timing () {
related_pin : "CLK";
timing_type : setup_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
}
pin (SI) {
nextstate_type : data;
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
max_transition : 0.2;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_type : hold_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
timing () {
related_pin : "CLK";
timing_type : setup_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
}
pin (CLK) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (Q) {
direction : "output";
function : "QOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
pin (Q_bar) {
direction : "output";
function : "QBOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
ff (QOUT,QBOUT) {
clocked_on : "CLK";
next_state : "D";
}
}
/* SCAN FUNCTIONALITY HASN'T BEEN ADDED YET */
cell(S_FF_rst) {
area : 28184;
cell_footprint : S_FF_rst;
/* cell_description : "NEM based M-S D type Flip Flop with reset and scan functionality"; */
pg_pin (VCC) {
pg_type : primary_power;
voltage_name : "VCC";
}
pg_pin (GND) {
pg_type : primary_ground;
voltage_name : "GND";
}
pin (D) {
nextstate_type : data;
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
max_transition : 0.2;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_type : hold_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","-0.21,4.1");
}
}
timing () {
related_pin : "CLK";
timing_type : setup_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,-4.0","0.21,4.1");
}
}
}
pin (rst) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_type : recovery_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("-0.2,-2.0","-0.21,-2.1");
}
}
timing () {
related_pin : "CLK";
timing_type : removal_rising;
rise_constraint (constraint_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
}
}
pin (CLK) {
direction : "input";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
}
pin (Q) {
direction : "output";
function : "QOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
pin (Q_bar) {
direction : "output";
function : "QBOUT";
related_ground_pin : GND;
related_power_pin : VCC;
capacitance : 1;
timing () {
related_pin : "CLK";
timing_sense : non_unate;
timing_type : rising_edge;
cell_rise (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
rise_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
cell_fall (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,2.0","0.21,2.1");
}
fall_transition (delay_template_2x2) {
index_1 ("0.01,0.1");
index_2 ("0.02,0.2");
values ("0.2,4.0","0.21,4.1");
}
}
}
ff (QOUT,QBOUT) {
clear : "rst";
clocked_on : "CLK";
next_state : "D";
}
}
}

File Metadata

Mime Type
text/plain
Expires
Thu, Jul 3, 8:53 PM (13 h, 44 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
157352
Default Alt Text
nem_basic_yosys_restricted.lib (49 KB)

Event Timeline