linux查看liberty日志,liberty parser - liberty格式的library文件解析器

libertyParser下载下来以后包括以下内容。

examples  libertyParser.py  LICENSE  README

其中libertyParser.py包含了核心代码,包括parser和一些实用的function。

README文件中则对liberty parser的基本原理和代码结构做了详细说明。

examples目录中包含一个library文件范例example.lib和一个使用脚本范例example.py,我们就从这个脚本的使用来了解一下libertyParser.py的应用。

example.py

145849o75yx1540ei44350.png

首先应该将libertyParser.py中的类libertyParser实例化,实例化的时候同时传入library file(s),此时liberty parser会逐行解析library file(s),报告不规范行和非法行,同时将library file(s)的数据记录到python dict(字典)的数据结构之中。(数据结构请参阅README)

myLibertyParser = libertyParser.libertyParser(libFile)

对于myLibertyParser,其使用有两种。

1. 直接获取数据结构myLibertyParser.libDic,自己逐层拨开libDic取出所需数据。

2. 如果对libDic的结构了解不充分,也可以使用libertyParser内置的一些函数来获取基本数据,内置函数有以下几种。

* getUnit() : 返回字典unitDic,里面包含library file中所有关于unit的定义。

* getCellList() : 返回列表cellList,里面包含library file中所有cell。

* getCellArea() : 返回字典cellAreaDic,里面包含library file中所有cell的area信息。

* getCellLeakagePower() :返回字典cellLeakagePowerDic,里面包含library file中所有cell的leakage_power信息,因为一个cell会包含多个leakage_power,所以每个leakage_power的数据结构中会同时包含when/related_pg_pin/values这三个数据以示区分。

* getLibPinInfo() : 返回字典libPinDic,里面包含library file中所有pin层级的timing和internal_power信息,最小单位是timing table和internal_power table中所包含的index及values数据。

那么我们用范例lib(非常简单的一个lib,包含了三个简单cell)来运行一下范例脚本。

145855v74vlzw5q31v7vvg.png

这个parser具有简单高效的特点。

由于采用了基于结构分析(不包含任何关键词),所以它能普遍适用于不同纳米制程的library file(实测过28nm - 7nm)。

尽管python属于一种执行低效的语言,但是经过代码调优,实测parser 700万行的library file(有700MB这么大),用时仅仅28s左右。

欢迎大家使用,如果发现bug请及时联系我liyanqing1987@163.com修复。

如果有其它合理的enhancement的需求,也可以联系我。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值