liberty-parser 0.3.0

Liberty file format parser (maintained fork of liberty-parse)
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
/* Small lib file sample */

library(foo) {
  time_unit : "1ps";
  voltage_unit : "1V";
  current_unit : "1mA";
  pulling_resistance_unit : "1kohm";
  leakage_power_unit : "1nW";
  capacitive_load_unit (1,pf);

  slew_upper_threshold_pct_rise : 80;
  slew_lower_threshold_pct_rise : 20;
  slew_upper_threshold_pct_fall : 80;
  slew_lower_threshold_pct_fall : 20;

  nom_process : 1;
  nom_voltage : 5;
  nom_temperature : 25;

  operating_conditions ( typical ) {
     process : 1;
     voltage : 5;
     temperature : 25;
  }
  default_operating_conditions : typical;

  lu_table_template(delay_template_5x5) {
    variable_1 : input_net_transition;
    variable_2 : total_output_net_capacitance;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
    index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
  }
  power_lut_template(energy_template_5x5) {
    variable_1 : input_transition_time;
    variable_2 : total_output_net_capacitance;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
    index_2 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
  }
  lu_table_template(hold_template_5x3) {
    variable_1 : constrained_pin_transition;
    variable_2 : related_pin_transition;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
    index_2 ("1000.0, 1001.0, 1002.0");
  }
  power_lut_template(passive_energy_template_5x1) {
    variable_1 : input_transition_time;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
  }
  lu_table_template(recovery_template_5x3) {
    variable_1 : constrained_pin_transition;
    variable_2 : related_pin_transition;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
    index_2 ("1000.0, 1001.0, 1002.0");
  }
  lu_table_template(removal_template_5x3) {
    variable_1 : constrained_pin_transition;
    variable_2 : related_pin_transition;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
    index_2 ("1000.0, 1001.0, 1002.0");
  }
  lu_table_template(setup_template_5x3) {
    variable_1 : constrained_pin_transition;
    variable_2 : related_pin_transition;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
    index_2 ("1000.0, 1001.0, 1002.0");
  }
  lu_table_template(width_template_5x1) {
    variable_1 : related_pin_transition;
    index_1 ("1000.0, 1001.0, 1002.0, 1003.0, 1004.0");
  }

/* -------------- *
 * Design : DCBX1 *
 * -------------- */
cell (DCBX1) {
  cell_footprint : dffb;
  area : 18;
  cell_leakage_power : 0.464382;
  ff (DS0000,DS0001) {
    next_state : "D";
    clocked_on : "(!(!CLK))";
    clear : "(!CLR)";
  }
  pin(CLK)  {
    direction : input;
    capacitance : 0.0159909;
    rise_capacitance : 0.0159909;
    fall_capacitance : 0.0159762;
    rise_capacitance_range ( 0.0159555, 0.0160263) ;
    fall_capacitance_range ( 0.0159743, 0.0159782) ;
    clock : true;
    internal_power() {
      rise_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("1.58266, 1.61871, 1.78774, 1.94208, 2.52771");
      }
      fall_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("2.78296, 2.8309, 3.01231, 3.17747, 3.75503");
      }
    }
    timing() {
      related_pin : "CLK";
      timing_type : min_pulse_width;
      rise_constraint(width_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.784637, 0.849532, 0.989096, 1.09011, 1.3948");
      }
      fall_constraint(width_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.866652, 0.940744, 1.08699, 1.18893, 1.49889");
      }
    }
  }
  pin(CLR)  {
    direction : input;
    capacitance : 0.0159753;
    rise_capacitance : 0.0159548;
    fall_capacitance : 0.0159753;
    rise_capacitance_range ( 0.0159548, 0.0159548) ;
    fall_capacitance_range ( 0.0159721, 0.0159786) ;
    internal_power() {
      rise_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.998572, 1.03003, 1.16559, 1.29914, 1.77921");
      }
      fall_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.672526, 0.713454, 0.866412, 1.00552, 1.50235");
      }
    }
    timing() {
      related_pin : "CLR";
      timing_type : min_pulse_width;
      fall_constraint(width_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.822025, 0.895906, 1.04269, 1.14794, 1.46983");
      }
    }
    timing() {
      related_pin : "CLK";
      timing_type : recovery_rising;
      when : "D";
      sdf_cond : "D == 1'b1";
      rise_constraint(recovery_template_5x3) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.06, 0.3, 0.6");
        values ( \
          "0.15, -0.03, -0.18", \
          "0.24, 0.06, -0.09", \
          "0.345, 0.165, 0.015", \
          "0.48, 0.3, 0.15", \
          "0.705, 0.6, 0.375");
      }
    }
    timing() {
      related_pin : "CLK";
      timing_type : removal_rising;
      when : "D";
      sdf_cond : "D == 1'b1";
      rise_constraint(removal_template_5x3) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.06, 0.3, 0.6");
        values ( \
          "0, 0.18, 0.33", \
          "-0.09, 0.09, 0.24", \
          "-0.195, -0.015, 0.135", \
          "-0.255, -0.15, 0", \
          "-0.555, -0.45, -0.225");
      }
    }
  }
  pin(D)  {
    direction : input;
    capacitance : 0.0250575;
    rise_capacitance : 0.0250551;
    fall_capacitance : 0.0250575;
    rise_capacitance_range ( 0.0236734, 0.0264367) ;
    fall_capacitance_range ( 0.0236244, 0.0264906) ;
    internal_power() {
      rise_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.909494, 0.934955, 1.07787, 1.21606, 1.74448");
      }
      fall_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("1.39746, 1.40851, 1.54776, 1.68646, 2.20605");
      }
    }
    timing() {
      related_pin : "CLK";
      timing_type : hold_rising;
      when : "CLR";
      sdf_cond : "CLR == 1'b1";
      rise_constraint(hold_template_5x3) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.06, 0.3, 0.6");
        values ( \
          "0, 0.105, 0.255", \
          "-0.015, 0.09, 0.24", \
          "-0.12, -0.015, 0.135", \
          "-0.18, -0.075, 0.075", \
          "-0.33, -0.225, -0.15");
      }
      fall_constraint(hold_template_5x3) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.06, 0.3, 0.6");
        values ( \
          "0.075, 0.18, 0.33", \
          "-0.015, 0.09, 0.315", \
          "-0.12, -0.015, 0.135", \
          "-0.255, -0.15, 0.075", \
          "-0.63, -0.45, -0.3");
      }
    }
    timing() {
      related_pin : "CLK";
      timing_type : setup_rising;
      when : "CLR";
      sdf_cond : "CLR == 1'b1";
      rise_constraint(setup_template_5x3) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.06, 0.3, 0.6");
        values ( \
          "0.075, -0.03, -0.105", \
          "0.165, 0.06, -0.09", \
          "0.27, 0.09, 0.015", \
          "0.33, 0.15, 0.075", \
          "0.48, 0.375, 0.225");
      }
      fall_constraint(setup_template_5x3) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.06, 0.3, 0.6");
        values ( \
          "0.375, 0.195, 0.045", \
          "0.39, 0.285, 0.135", \
          "0.57, 0.39, 0.24", \
          "0.63, 0.525, 0.375", \
          "1.005, 0.825, 0.675");
      }
    }
  }
  pin(Q)  {
    direction : output;
    capacitance : 0;
    rise_capacitance : 0;
    fall_capacitance : 0;
    rise_capacitance_range ( 0, 0) ;
    fall_capacitance_range ( 0, 0) ;
    max_capacitance : 0.279925;
    function : "DS0000";
    timing() {
      related_pin : "CLK";
      timing_sense : non_unate;
      timing_type : rising_edge;
      cell_rise(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.768683, 0.888102, 1.12115, 2.04994, 3.43359", \
          "0.834318, 0.953332, 1.18661, 2.1123, 3.49966", \
          "0.973067, 1.09134, 1.32436, 2.25294, 3.64089", \
          "1.0694, 1.1881, 1.42129, 2.35166, 3.73808", \
          "1.36561, 1.48473, 1.71883, 2.64496, 4.03397");
      }
      rise_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.211888, 0.278761, 0.414176, 0.95386, 1.76261", \
          "0.211286, 0.278666, 0.414136, 0.954099, 1.76294", \
          "0.21162, 0.278626, 0.414133, 0.9547, 1.76269", \
          "0.211736, 0.278691, 0.414142, 0.954733, 1.76194", \
          "0.211868, 0.279771, 0.414341, 0.953303, 1.76219");
      }
      cell_fall(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.784637, 0.951012, 1.28218, 2.60058, 4.57958", \
          "0.849532, 1.01594, 1.34666, 2.6619, 4.6418", \
          "0.989096, 1.1546, 1.4841, 2.7998, 4.77629", \
          "1.09011, 1.25481, 1.58358, 2.90135, 4.87216", \
          "1.3948, 1.55834, 1.88423, 3.19226, 5.16304");
      }
      fall_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.241841, 0.328298, 0.499171, 1.1824, 2.2026", \
          "0.24182, 0.328076, 0.499704, 1.18089, 2.20536", \
          "0.242005, 0.328824, 0.499675, 1.18253, 2.20545", \
          "0.242409, 0.329361, 0.500312, 1.18209, 2.20597", \
          "0.243731, 0.32874, 0.501095, 1.18285, 2.20603");
      }
    }
    timing() { /* MIN */
      related_pin : "CLR";
      timing_sense : positive_unate;
      timing_type : clear;
      cell_fall(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.55031, 0.63274, 0.792931, 1.35446, 2.17724", \
          "0.624112, 0.706152, 0.866015, 1.42787, 2.25236", \
          "0.770438, 0.851671, 1.01128, 1.57207, 2.3958", \
          "0.875422, 0.956464, 1.11532, 1.67531, 2.49545", \
          "1.19709, 1.27493, 1.43301, 1.99035, 2.80997");
      }
      fall_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.285422, 0.353269, 0.471669, 0.916586, 1.57571", \
          "0.285756, 0.353296, 0.471854, 0.918561, 1.58107", \
          "0.287599, 0.35487, 0.472952, 0.920259, 1.58251", \
          "0.290709, 0.357476, 0.474557, 0.920585, 1.5779", \
          "0.310362, 0.368819, 0.48248, 0.924583, 1.58244");
      }
    }
    timing() { /* MAX */
      related_pin : "CLR";
      timing_sense : positive_unate;
      timing_type : clear;
      cell_fall(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.555255, 0.638843, 0.800659, 1.44457, 2.40666", \
          "0.628955, 0.712074, 0.873626, 1.51869, 2.47752", \
          "0.775605, 0.858185, 1.01876, 1.66024, 2.62251", \
          "0.881099, 0.962966, 1.12261, 1.76414, 2.72238", \
          "1.2039, 1.28446, 1.44178, 2.07839, 3.03521");
      }
      fall_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.288227, 0.358017, 0.499901, 1.0754, 1.94701", \
          "0.287869, 0.358305, 0.499942, 1.07599, 1.94662", \
          "0.290179, 0.359288, 0.500746, 1.07645, 1.94711", \
          "0.293048, 0.361982, 0.502024, 1.07583, 1.9457", \
          "0.31232, 0.373597, 0.510039, 1.07841, 1.94768");
      }
    }
    internal_power() {
      related_pin : "CLK";
      rise_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "1.57314, 1.57304, 1.57787, 1.62831, 1.72867", \
          "1.58597, 1.58705, 1.59186, 1.63983, 1.74239", \
          "1.66799, 1.67084, 1.67381, 1.723, 1.82214", \
          "1.7492, 1.74934, 1.75298, 1.80272, 1.9006", \
          "2.03732, 2.03707, 2.03603, 2.08993, 2.18654");
      }
      fall_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "1.54131, 1.55917, 1.59413, 1.72729, 1.93027", \
          "1.55546, 1.57146, 1.60503, 1.73921, 1.94064", \
          "1.65167, 1.66411, 1.6948, 1.82197, 2.0217", \
          "1.74752, 1.7597, 1.78775, 1.90646, 2.10514", \
          "2.10983, 2.11079, 2.12569, 2.22851, 2.41173");
      }
    }
    internal_power() {
      related_pin : "CLR";
      fall_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "1.97661, 1.99878, 2.03395, 2.14949, 2.34588", \
          "1.99854, 2.01912, 2.0541, 2.16964, 2.36935", \
          "2.08861, 2.10737, 2.13929, 2.2509, 2.44742", \
          "2.17787, 2.19467, 2.22363, 2.33152, 2.52853", \
          "2.50557, 2.51351, 2.53384, 2.62681, 2.80818");
      }
    }
  }
  pin(QB)  {
    direction : output;
    capacitance : 0;
    rise_capacitance : 0;
    fall_capacitance : 0;
    rise_capacitance_range ( 0, 0) ;
    fall_capacitance_range ( 0, 0) ;
    max_capacitance : 0.191306;
    function : "DS0001";
    timing() {
      related_pin : "CLK";
      timing_sense : non_unate;
      timing_type : rising_edge;
      cell_rise(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.53022, 0.615885, 0.785881, 1.45556, 2.45578", \
          "0.595106, 0.680647, 0.85046, 1.51971, 2.52019", \
          "0.73495, 0.819536, 0.987802, 1.65481, 2.65463", \
          "0.836487, 0.920147, 1.0877, 1.75259, 2.75064", \
          "1.1425, 1.22484, 1.38922, 2.04757, 3.04159");
      }
      rise_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.280518, 0.364215, 0.53395, 1.20304, 2.19604", \
          "0.280538, 0.364313, 0.533995, 1.20314, 2.19615", \
          "0.281994, 0.365145, 0.534161, 1.20322, 2.19616", \
          "0.285363, 0.36741, 0.535394, 1.20355, 2.19633", \
          "0.297495, 0.377231, 0.542785, 1.20535, 2.19664");
      }
      cell_fall(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.584307, 0.640781, 0.750784, 1.18588, 1.83966", \
          "0.649844, 0.706271, 0.816181, 1.25171, 1.90631", \
          "0.788499, 0.843865, 0.953923, 1.38883, 2.04394", \
          "0.884869, 0.940861, 1.05087, 1.48753, 2.14121", \
          "1.18126, 1.23809, 1.34892, 1.78181, 2.43581");
      }
      fall_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.200989, 0.250711, 0.350544, 0.76221, 1.39065", \
          "0.20102, 0.250709, 0.350533, 0.762492, 1.39135", \
          "0.201177, 0.250322, 0.350548, 0.762169, 1.39071", \
          "0.201327, 0.250773, 0.350772, 0.762268, 1.39149", \
          "0.202454, 0.250729, 0.350654, 0.762402, 1.3906");
      }
    }
    timing() { /* MIN */
      related_pin : "CLR";
      timing_sense : negative_unate;
      timing_type : preset;
      cell_rise(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.818343, 0.917791, 1.09637, 1.77178, 2.77121", \
          "0.892044, 0.991431, 1.16997, 1.84567, 2.84513", \
          "1.0382, 1.13812, 1.31646, 1.99211, 2.99159", \
          "1.14288, 1.24313, 1.42127, 2.0968, 3.09611", \
          "1.46245, 1.56386, 1.74091, 2.41546, 3.41464");
      }
      rise_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.263996, 0.350213, 0.522408, 1.18781, 2.1821", \
          "0.264006, 0.350218, 0.522543, 1.18784, 2.1822", \
          "0.263949, 0.350239, 0.522569, 1.18752, 2.18202", \
          "0.26407, 0.350002, 0.522441, 1.18744, 2.18188", \
          "0.26456, 0.350446, 0.522773, 1.18732, 2.182");
      }
    }
    timing() { /* MAX */
      related_pin : "CLR";
      timing_sense : negative_unate;
      timing_type : preset;
      cell_rise(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.822025, 0.981049, 1.29461, 2.53333, 4.38359", \
          "0.895906, 1.0543, 1.36766, 2.6059, 4.45709", \
          "1.04269, 1.20014, 1.51261, 2.74984, 4.59942", \
          "1.14794, 1.30481, 1.61645, 2.85207, 4.70184", \
          "1.46983, 1.62492, 1.93481, 3.16574, 5.01278");
      }
      rise_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.272133, 0.356004, 0.523164, 1.21387, 2.25237", \
          "0.272211, 0.35612, 0.523144, 1.21379, 2.25214", \
          "0.272261, 0.355986, 0.523059, 1.21399, 2.25187", \
          "0.272252, 0.356034, 0.523049, 1.21392, 2.25226", \
          "0.273083, 0.35654, 0.523072, 1.21409, 2.25256");
      }
    }
    internal_power() {
      related_pin : "CLK";
      rise_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "1.54131, 1.55917, 1.59413, 1.72729, 1.93027", \
          "1.55546, 1.57146, 1.60503, 1.73921, 1.94064", \
          "1.65167, 1.66411, 1.6948, 1.82197, 2.0217", \
          "1.74752, 1.7597, 1.78775, 1.90646, 2.10514", \
          "2.10983, 2.11079, 2.12569, 2.22851, 2.41173");
      }
      fall_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "1.57314, 1.57304, 1.57787, 1.62831, 1.72867", \
          "1.58597, 1.58705, 1.59186, 1.63983, 1.74239", \
          "1.66799, 1.67084, 1.67381, 1.723, 1.82214", \
          "1.7492, 1.74934, 1.75298, 1.80272, 1.9006", \
          "2.03732, 2.03707, 2.03603, 2.08993, 2.18654");
      }
    }
    internal_power() {
      related_pin : "CLR";
      rise_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "1.97661, 1.99878, 2.03395, 2.14949, 2.34588", \
          "1.99854, 2.01912, 2.0541, 2.16964, 2.36935", \
          "2.08861, 2.10737, 2.13929, 2.2509, 2.44742", \
          "2.17787, 2.19467, 2.22363, 2.33152, 2.52853", \
          "2.50557, 2.51351, 2.53384, 2.62681, 2.80818");
      }
    }
  }
}

/* -------------- *
 * Design : INVX1 *
 * -------------- */
cell (INVX1) {
  cell_footprint : inv;
  area : 3;
  cell_leakage_power : 0.0341756;
  pin(A)  {
    direction : input;
    capacitance : 0.0160164;
    rise_capacitance : 0.0160164;
    fall_capacitance : 0.0159693;
    rise_capacitance_range ( 0.0160164, 0.0160164) ;
    fall_capacitance_range ( 0.0159693, 0.0159693) ;
  }
  pin(Y)  {
    direction : output;
    capacitance : 0;
    rise_capacitance : 0;
    fall_capacitance : 0;
    rise_capacitance_range ( 0, 0) ;
    fall_capacitance_range ( 0, 0) ;
    max_capacitance : 0.402017;
    function : "(!A)";
    timing() {
      related_pin : "A";
      timing_sense : negative_unate;
      cell_rise(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.147583, 0.217035, 0.355377, 0.907001, 1.73349", \
          "0.224219, 0.291274, 0.428044, 0.977438, 1.80305", \
          "0.365232, 0.445422, 0.582152, 1.12428, 1.94149", \
          "0.46186, 0.55044, 0.700788, 1.23784, 2.0566", \
          "0.75585, 0.872701, 1.05674, 1.62712, 2.42849");
      }
      rise_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.09712, 0.164583, 0.299488, 0.839163, 1.64852", \
          "0.117867, 0.173862, 0.30016, 0.839221, 1.64879", \
          "0.174063, 0.229801, 0.335188, 0.839268, 1.64864", \
          "0.212233, 0.270216, 0.376329, 0.849921, 1.64867", \
          "0.322205, 0.398154, 0.51726, 0.945327, 1.66712");
      }
      cell_fall(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.166552, 0.247549, 0.408769, 1.04944, 2.00953", \
          "0.234229, 0.313057, 0.472061, 1.11143, 2.07233", \
          "0.366262, 0.455096, 0.610195, 1.24173, 2.19801", \
          "0.456648, 0.553252, 0.718877, 1.34254, 2.29658", \
          "0.732451, 0.855462, 1.05488, 1.6961, 2.63335");
      }
      fall_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.103393, 0.176429, 0.322563, 0.906541, 1.78269", \
          "0.119174, 0.182264, 0.32239, 0.906789, 1.78367", \
          "0.176141, 0.235883, 0.351112, 0.906842, 1.78324", \
          "0.215097, 0.277743, 0.390555, 0.911993, 1.78282", \
          "0.333403, 0.409933, 0.534675, 0.99795, 1.79573");
      }
    }
    internal_power() {
      related_pin : "A";
      rise_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.389002, 0.393869, 0.398499, 0.402791, 0.40412", \
          "0.442829, 0.430625, 0.423648, 0.413675, 0.40862", \
          "0.617376, 0.577985, 0.535474, 0.47171, 0.448634", \
          "0.768465, 0.717378, 0.652041, 0.547541, 0.493993", \
          "1.29533, 1.2207, 1.10425, 0.86946, 0.7254");
      }
      fall_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.011845, 0.00625, 0.001276, 0.005383, 0.006277", \
          "0.022784, 0.017685, 0.013616, 0.008902, 0.007861", \
          "0.173984, 0.138231, 0.101902, 0.054497, 0.035459", \
          "0.311874, 0.256871, 0.196965, 0.106444, 0.069818", \
          "0.81705, 0.723427, 0.595846, 0.372799, 0.246518");
      }
    }
  }
}

/* ---------------- *
 * Design : NAND2X1 *
 * ---------------- */
cell (NAND2X1) {
  cell_footprint : nand2;
  area : 4;
  cell_leakage_power : 0.0567011;
  pin(A)  {
    direction : input;
    capacitance : 0.0201485;
    rise_capacitance : 0.0201485;
    fall_capacitance : 0.019937;
    rise_capacitance_range ( 0.0190239, 0.0212732) ;
    fall_capacitance_range ( 0.0186932, 0.0211807) ;
    internal_power() {
      rise_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.23538, 0.234957, 0.234854, 0.234994, 0.235103");
      }
      fall_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.242091, 0.236781, 0.235478, 0.235391, 0.235861");
      }
    }
  }
  pin(B)  {
    direction : input;
    capacitance : 0.0174339;
    rise_capacitance : 0.0173315;
    fall_capacitance : 0.0174339;
    rise_capacitance_range ( 0.0132218, 0.0214411) ;
    fall_capacitance_range ( 0.0134763, 0.0213916) ;
    internal_power() {
      rise_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.234047, 0.233613, 0.233977, 0.234143, 0.233872");
      }
      fall_power(passive_energy_template_5x1) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        values ("0.262936, 0.263042, 0.262941, 0.263082, 0.263471");
      }
    }
  }
  pin(Y)  {
    direction : output;
    capacitance : 0;
    rise_capacitance : 0;
    fall_capacitance : 0;
    rise_capacitance_range ( 0, 0) ;
    fall_capacitance_range ( 0, 0) ;
    max_capacitance : 0.424097;
    function : "(!(A B))";
    timing() {
      related_pin : "A";
      timing_sense : negative_unate;
      cell_rise(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.193773, 0.26363, 0.402277, 0.954263, 1.78147", \
          "0.272928, 0.340545, 0.476366, 1.02569, 1.85123", \
          "0.442504, 0.510273, 0.640167, 1.1776, 1.99738", \
          "0.565262, 0.636904, 0.768224, 1.29767, 2.1125", \
          "0.955771, 1.04092, 1.18992, 1.71578, 2.51138");
      }
      rise_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.135895, 0.203553, 0.338593, 0.878625, 1.68874", \
          "0.146052, 0.207351, 0.338713, 0.878813, 1.68874", \
          "0.196906, 0.248155, 0.361279, 0.878891, 1.68874", \
          "0.232599, 0.287925, 0.393355, 0.884583, 1.68833", \
          "0.349961, 0.412136, 0.519502, 0.95658, 1.70372");
      }
      cell_fall(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.141326, 0.196767, 0.30679, 0.744364, 1.40074", \
          "0.186534, 0.240718, 0.348973, 0.785244, 1.44019", \
          "0.271642, 0.333042, 0.443928, 0.873326, 1.52524", \
          "0.327857, 0.395743, 0.513999, 0.942458, 1.59134", \
          "0.491662, 0.578524, 0.723419, 1.18578, 1.82356");
      }
      fall_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.08909, 0.141457, 0.246741, 0.667122, 1.29868", \
          "0.109662, 0.152681, 0.250305, 0.667113, 1.29797", \
          "0.167366, 0.205878, 0.288622, 0.672974, 1.29795", \
          "0.210361, 0.250148, 0.328387, 0.688252, 1.30052", \
          "0.338489, 0.388406, 0.474547, 0.796753, 1.34428");
      }
    }
    timing() {
      related_pin : "B";
      timing_sense : negative_unate;
      cell_rise(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.166482, 0.237259, 0.376051, 0.930395, 1.75785", \
          "0.244773, 0.312274, 0.449451, 1.0003, 1.8268", \
          "0.403815, 0.477683, 0.61021, 1.15037, 1.97284", \
          "0.516971, 0.596251, 0.735618, 1.26784, 2.08568", \
          "0.870583, 0.971812, 1.13374, 1.67895, 2.47854");
      }
      rise_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.107339, 0.17479, 0.309773, 0.849562, 1.65925", \
          "0.120137, 0.179866, 0.309698, 0.849541, 1.65925", \
          "0.171788, 0.224979, 0.335941, 0.849351, 1.65885", \
          "0.207489, 0.264273, 0.370118, 0.856314, 1.65885", \
          "0.317586, 0.38588, 0.501904, 0.933212, 1.67544");
      }
      cell_fall(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.13719, 0.19247, 0.302112, 0.739584, 1.39515", \
          "0.198757, 0.254873, 0.362554, 0.798603, 1.4541", \
          "0.300327, 0.370903, 0.492393, 0.922255, 1.57645", \
          "0.368717, 0.447726, 0.579847, 1.0186, 1.66359", \
          "0.571848, 0.674223, 0.839381, 1.34335, 1.98612");
      }
      fall_transition(delay_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.088926, 0.141503, 0.246613, 0.667122, 1.29814", \
          "0.116664, 0.157333, 0.250359, 0.667109, 1.29868", \
          "0.172013, 0.217718, 0.302983, 0.674305, 1.2987", \
          "0.212873, 0.260755, 0.349111, 0.69935, 1.2991", \
          "0.33606, 0.398964, 0.497741, 0.83858, 1.36969");
      }
    }
    internal_power() {
      related_pin : "A";
      rise_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.754847, 0.759479, 0.763944, 0.767989, 0.769687", \
          "0.825329, 0.813516, 0.799402, 0.786103, 0.778299", \
          "1.08496, 1.04004, 0.982478, 0.884757, 0.844555", \
          "1.31343, 1.2471, 1.15862, 1.00451, 0.923568", \
          "2.11003, 2.01672, 1.86766, 1.51618, 1.29097");
      }
      fall_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.021504, 0.014138, 0.008351, 0.0022, 0.000423", \
          "0.032905, 0.02363, 0.016647, 0.009649, 0.006079", \
          "0.263496, 0.219931, 0.167607, 0.092535, 0.056628", \
          "0.474533, 0.407808, 0.325833, 0.185551, 0.116037", \
          "1.24768, 1.13433, 0.969528, 0.643674, 0.442551");
      }
    }
    internal_power() {
      related_pin : "B";
      rise_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.551421, 0.564803, 0.579627, 0.595129, 0.600456", \
          "0.615395, 0.606006, 0.603838, 0.603944, 0.603118", \
          "0.851456, 0.811443, 0.765091, 0.689944, 0.663474", \
          "1.054, 0.996567, 0.92146, 0.789533, 0.730927", \
          "1.77112, 1.679, 1.54244, 1.26292, 1.05817");
      }
      fall_power(energy_template_5x5) {
        index_1 ("0.06, 0.18, 0.42, 0.6, 1.2");
        index_2 ("0.025, 0.05, 0.1, 0.3, 0.6");
        values ( \
          "0.015069, 0.01128, 0.007085, 0.001339, 0.000967", \
          "0.037481, 0.031036, 0.028743, 0.011886, 0.00701", \
          "0.257402, 0.211914, 0.160692, 0.086374, 0.065684", \
          "0.449098, 0.38172, 0.303152, 0.176538, 0.102258", \
          "1.13844, 1.02859, 0.869325, 0.570768, 0.379786");
      }
    }
  }
}
}