落水清风的个人空间 https://blog.eetop.cn/1751000 [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

liberty parser - liberty格式的library文件解析器

热度 3已有 4057 次阅读| 2019-6-5 14:45 |个人分类:开源工具|系统分类:芯片设计| liberty, parser, parser

做K库工作的小伙伴可能都有接触到如下的 应用场景:
1. 查看lib文件中的内容,比如cell-pin,area/leakage_power/timing/internal_power。
2. lib文件内容的再处理,包括table的删除和插入,values的替换。
3. 针对lib文件的quality检查,包括格式,数值,变化趋势等。

当然有一些EDA工具可以帮我们完成一部分工作,比如liberate的merge_library可以帮忙做lib的内容合并,qualib可以做lib文件的部分检查,但是这些EDA工具涉及的都是common的需求,而且往往是不全面的,不能覆盖所有人各种special的需求,所以对于定制化需求,你需要一款“自主可控”的liberty parser来做library数据的抽取工作,这个工作我已经帮你做好了,并且愿意把代码分享出来和大家一起使用。

所以先说主题,liberty parser的github地址为https://github.com/liyanqing1987/libertyParser


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

examples  libertyParser.py  LICENSE  README

 

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

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

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

 

example.py

 

首先应该将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)来运行一下范例脚本。

 

 

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

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

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

 

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

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

3

点赞

刚表态过的朋友 (3 人)

全部作者的其他最新日志

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 8

    粉丝
  • 3

    好友
  • 3

    获赞
  • 0

    评论
  • 644

    访问数

小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-5 13:28 , Processed in 0.015651 second(s), 8 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部