用liberate生成lib

前言:数模混合芯片中,模拟部分往往被封装成一个大的ANALOG_TOP再给数字集成,数字部分需要对应的lib来跑后面的flow。问了很多做模拟的同事和朋友,似乎只有做对外模拟IP交付的人才会生成lib,对内交付时,要么频率低,不用lib,直接当异步处理,要么就数字自己来搞lib。那么这次也只能硬着头皮自己来了。

liberate中的各种命令选项相当多,搞懂还是挺花时间的,这次因为模拟内部只有vendor提供的ADC(已有现成的lib,无完整gds)和其他一些timing不敏感的功能和接口,所以我的策略就是把liberate当作一个大型脚本,生成一个只提供接口信息的lib,然后再写脚本将ADC的详细timing信息和接口信息merge到一起。当然,ANALOG_TOP封装ADC后,接口连线肯定有所增加,delay也会有所增加,这部分就只能忽略了,如果有朋友知道怎么把这部分延迟加到lib中,还希望不吝赐教啊~~

对着liberate referance manual开始研究:

1、运行liberate,用以下两句命令,用已有lib生成一个template。没有template也没事,自己写也行。

read_library existing.lib

write_template -use_lu_table_name liberate_templates

template内主要是define_template,define_cell等。我这里重点改define_cell的input、output这些,因为整个ANALOG_TOP是被作为一个cell来看的。

2、read_spice

准备好analog netlist和device model,read_spice{netlist model}。model选定TT、SS、FF,但是这里不能用$定义变量,不知道为什么。

3、set_operating_condition -voltage 1.21 -temp -40

根据PVT选择。

4、source template

5、char_library -io

开始特征化,这才是重点,会调用SPICE simulator,我这边用的时Spectre

不加-io选项时,工具会报一个error,意思里面全要计算,太多了,达到计算上限,建议加-io选项,只关心IO。就试了试,可以顺利跑完。

6、write_library new.lib

接口齐全,lib需要的header、bus type、template、接口pin上的cap都有,就是不会再有timing(){...}了,不过也够了。

7、依照上面的流程把需要的corner都来run一遍

8、写脚本将ADC.lib 写入new.lib

往往ADC的pin和ANALOG_TOP中的pin name不一致了,需要修改。related_pin也要特别注意,name变了要修改,直接影响STA。

9、用library compiler生成db

lc_shell>read_lib new.lib

lc_shell>write_lib -o new.db library_name

10、最后打开PrimeTime看看

netlist link db的过程会检查二者接口是否一一对应

然后report_timing看看ADC相关路径是否都能报出来,报的对不对,clk是不是预期的,以确认ADC merge的正确性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值