liberty-parser 0.2.0

Liberty file format parser (maintained fork of liberty-parse)
Documentation

library(cells) {
    lu_table_template(delay_temp_3x3) {
        variable_1: input_net_transition;
        variable_2: total_output_net_capacitance;
        index_1 ("1.0, 2.0, 3.0");
        index_2 ("1.0, 2.0, 3.0");
    }
    cell (DFF) {
	ff (FF) {
           next_state: "D";
           clocked_on: "CLK";
           clear: "!CLR";
        }
        pin (CLK) {
            direction: input;
	    clock: true;
        }
        pin (CLR) {
            direction: input;
        }
        pin (D) {
            direction: input;
        }
        pin (Q) {
            direction: output;
	    function: "FF";
        }
    }
    cell (AND2) {
        area : 1;
        pin(a) {
            direction: input;
        }
        pin(b) {
            direction: input;
        }
        pin(o) {
            function : "(A & B)";
            direction: output;
            timing() {
                related_pin: "A";
                timing_sense: positive_unate;
                cell_rise(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
                cell_fall(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
            }
            timing() {
                related_pin: "B";
                timing_sense: positive_unate;
                cell_rise(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
                cell_fall(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
            }
        }
    }
    cell (NAND2) {
        area : 1;
        pin(a) {
            direction: input;
        }
        pin(b) {
            direction: input;
        }
        pin(o) {
            function : "!(A & B)";
            direction: output;
            timing() {
                related_pin: "A";
                timing_sense: negative_unate;
                cell_rise(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
                cell_fall(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
            }
            timing() {
                related_pin: "B";
                timing_sense: negative_unate;
                cell_rise(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
                cell_fall(delay_temp_3x3) {
                    index_1 ("0.5, 1.0, 1.5");
                    index_2 ("10.0, 20.0, 30.0");
                    values ( "0.1, 0.2, 0.3", \
                             "0.11, 0.21, 0.31", \
                             "0.12, 0.22, 0.32" );
                }
            }
        }
    }
}