一. Standard Cell部分
和Artisan PMK对应的Standard Cell库是Metro。UPF综合要求liberty格式的库中包含cell的pg_pin定义,原始的库中是没有的。因为Standard Cell是single power rail的库,所以转换起来很容易,使用Library Compiler的add_pg_pin_to_lib或者add_pg_pin_to_db命令可直接完成转换。参见SOLD文档: UPF Library Preparation Application Notes. 生成的.lib或者.db已经包含了pg_pin定义,可直接在后续UPF流程中使用。转换过程同时使用.lib/.db和milkyway library作为输入,不需要pg_map_file。
二. PMK部分
PMK中的很多cell是multiple power rail的,比如always on cell, switch等。发现Artisan提供的.lib中不单没有pg_pin定义,连基本的power pin的定义和其它一些方面也不满足UPF flow对于library的要求(参见SOLD文档Library Compiler Modeling Timing, Signal Integrity, and Power in Technology Libraries User Guide第二章)。因此修改起来稍微麻烦些。修改.lib和.db的过程如下:
1. 使用add_pg_pin_to_lib命令,生成pg_pin_template(同时使用.lib和milkyway作为输入)。
2. 对生成的template文件作稍许修改,使它作为add_pg_pin_to_lib的map输入时不会报错,并根据milkyway里面提供的pin信息修改voltage_map等部分。
3. 使用上面做好的map文件通过add_pg_pin_to_lib命令生成新的.lib文件。
4. 根据文档
Library Compiler Modeling Timing, Signal Integrity, and Power in Technology Libraries User Guide第二章的要求,结合具体cell的功能修改上面生成的.lib文件。因为lib中cell很多,为避免不必要的工作,可以删掉.lib中用不到的cell(比如这次只有一种
电源电压,则可以删掉level shifter等)。
5. 修改好.lib后用Library Compiler编译生成新的.db,至此综合的target library部分修改完成。
检查发现milkyway reference library中power pin的定义也有问题,比如VDDG/VSSG(always on power)都被定义成了signal pin。为了后面的
后端流程,也必须修改。为了使得修改更直观,采用了修改LEF文件,然后使用Milkyway tool重新生成reference library的方法。过程如下:
1. 根据datasheet和milkyway FRAM view提供的信息,修改LEF文件中power pin的定义,主要是增加USE POWER/USE GROUND等描述。
2. 使用Milkyway tool建立新的library,导入上面改好的LEF文件。
3. 使用Milkyway tool的命令update_mw_port_by_db,使用上面修改好的.db文件来对上面新建的milkyway library作更新,主要更新secondary power rail的power port的属性(如把always on cell的VDDG更新为backupPG.
4. 使用check_library命令比对.db和milkyway library后修改完成。
同.lib修改类似,可以删除LEF文件中不需要的cell。
完成上面所有修改之后,之前UPF综合中报出的跟power相关的warning和error全部消失。