Worried about liberty basics? Let's start from ground zero!!

Published: Tue, 04/25/17

Hi

Being a fresher, I had a nightmare about 7years ago, to read and interpret the timing .lib file. I feel others should not suffer the same, so here’s a blog on timing library format basics. My course on “Library characterization and modelling – Part 1” explains every bit of it, in detail. A very important skill needed for STA engineers.

Timing library format:
Here’s an image of a library:
Liberty modeling format is mainly a syntactical collection of below statements:
  1. Group statements
  2. Attribute statements
  3. Define statements
Group statements:
A group statement, as shown above is a collection of other statements. Like, a group of timing and power arc form ‘arc’, a group of arcs form ‘pin’, a group of ‘pins’ form a cell, and a group of ‘cells’ for a library. If this part is clear, then it becomes damn easy to interpret any timing library.

Attribute statements:
Now attributes, an important part of the static timing analysis or place and route analysis, are classified in various parts, as shown in below image:
In above example, “voltage_unit” is form of library attribute, “area” is a form of cell attribute, “direction” and “function” are forms of pin attribute. There are more than 100’s of attributes for each group. So, an attribute statement is a qualitative description with a keyword-value pair.

These attributes convey an important information to core static timing analysis engine or PNR engine. Why PNR? So there are “cell” attributes like “dont_touch : true” for cells like pads. This conveys the PNR optimization software to not use this cell to optimize core of design

That’s not all, you can create and define your own attributes as well, and that brings me to introduce you the next liberty format basic

Define statements:
This is something needed to customize the library as you wish. I below image, I have created new attribute called “my_job”
For example, a custom attribute “my_job” on “pin” group can be created using following statement:
define (my_job, pin, string)

And then, this attribute can be assigned a string value under “pin” group, which can later be accessed using any timing engine.

So, you see, a library file is just a collection of group and attribute statements combined hierarchically. It can’t get any simpler than above. For more simpler definitions and explanations of liberty file, go through my course on Library characterization and modelling – Part 1 below:


NOTE:
So I have got these last 10 coupons which will give my course for $10 for 1 day. And as you have seen in the last month, how prices fluctuate at Udemy, so no guarantee that you will again get this offer after tomorrow, as these $10 offers expires tomorrow mid-night 26th April at 11:59PM IST.

I would say, just as "The early bird catches the worm", you should also do that in a day, and get courses worth $95 at just $10. Initial reviews of the courses has been great, and below is what one reviewer has to say about my courses:

"Really good course for a beginner in Physical design. Thanks Kunal! Keep up the good work!"

Do you want to have a similar experience? Then you need to get it today...Here are the discount links...




Static timing analysis - Part 1:



Custom Layout:

Clock tree synthesis - Part 1:



VLSI - Essential concepts and detailed interview guide:
https://www.udemy.com/vlsi-academy/?couponCode=LAST_WEEK_10USD