数模混合SoC芯片中LEF2Milkyway的golden flow

在数模混合芯片中的项目中,特别是数字模块很少甚至只有一个简单的数字控制逻辑时,我们要做数字模块的后端实现时,通常模拟那边会问我们实现需要他们提供哪些数据。

通常来说,我们可以让模拟设计提供数字模块的GDS或LEF文件即可。

因为我们的这个数字模块是芯片中的一个子模块,它跟芯片中的很多模拟模块和IO接口是有交互的。所以这个数字模块的IO port(IO Pin)是不能随意摆放的,而是必须根据顶层提供的形状和出pin信息来做实现。

如下图所示为某个以模拟为主的芯片,其中数字模块的出pin分成五大块。其实这个数字模块的切分和摆放pin是不是就是我们数字后端hierarchical flow中所讲的block partition和pin assignment。只不过我们PR工具做partition后是写出子模块block的floorplan def,而模拟不太会写这个文件,而是提供通用的GDS或LEF文件。

那有了模拟设计提供的GDS文件后,我们还是不能直接提供给PR工具来使用。

如果模拟那边提供的是GDS,我们可以通过GDS转LEF的golden脚本来生成对应的LEF文件。

那是不是有lef后,我们就可以开始做子模块block的后端实现了呢?

显然不可以。如果这个子模块block是我们数字顶层的一个子模块,那么我们直接读入它的LEF就可以实现调用,注意是调用。

而我们今天这个案例是要去做这个数字模块的后端实现,所以需要有这个数字模块的boundary和io pin信息。而这个信息的呈现形式不可能是LEF,因为PR工具initial boundary不支持读入LEF文件。

所以,我们还需要进一步把LEF文件转换成Milkyway数据格式,最后再通过Milkyway database来输出对应的floorplan def或io file。

下面分享LEF转Milkyway的具体步骤。

1、启动Milkyway

直接终端输入:Milkyway & (后台运行)

2、创建库

Library------>Create...

Library 中填入想要新建的库的名字,

Technology File Name 里输入工艺文件tf

值得注意的是 Set Case Sensitive 要打勾,其他保持不变,点击 OK 即可创建 Milkyway 库。

3、打开库

Library -----> Open...

点 Browse,选中 XXX(前一步新建的库的名字),点 Hide;

输入 Library Path(一般在当前目录输入.就可以) ;

点击 OK 即可。

4、导入 LEF

Cell Library-----> LEF In...

Library Name:点 Browse,选中之前新建的 Library;

Tech LEF File:点 Browse,选中工艺 tech lef 文件;

Cell LEF Files:点 Browse,选中 cell lef 文件夹下需要转的 cell 的 lef 文件,可以选多个。注意, 如果你第二次操作,上一次选中的并不会清除,所以你需要先清空;

Layer Mapping:选中.map 文件;

此时点击 OK 就会生成相应的 FRAM view。

有了Milkyway数据后,我们利用ICC打开它,注意打开FRAM View的cell。然后就可以在ICC中通过write_def写出floorplan文件了。

对应上面操作的脚本如下所示,直接照抄即可实现。

set tech_lef_file ""

set tech_file ""

set lib_name ""

set lef_file ""

cmCreateLib

setFormField "Create Library" "Technology File Name" $tech_file

setFormField "Create Library" "Library Name" $lib_name

setFormField "Create Library" "Set Case Sensitive" "1"

formOK "Create Library"

geOpenLib

setFormField "Open Library" "Library Name" $lib_name

formOK "Open Library"

read_lef

-lib_name $lib_name

-tech_lef_files $tech_lef_file

-cell_lef_files $lef_file

-advanced_lib_prep_mode

-cell_version overwrite

auExtractBlockagePinVia

formDefault "Extract Blockage"

setFormField "Extract Blockage" "Library Name" "$lib_name"

setFormField "Extract Blockage" "Routing Blockage Output Layer" "metBlk"

setFormField "Extract Blockage" "Metal1 Blockage As Thin" "1"

setFormField "Extract Blockage" "Metal2 Blockage As Thin" "1"

setFormField "Extract Blockage" "Metal3 Blockage As Thin" "1"

formButton "Extract Blockage" "extractPin"

setFormField "Extract Blockage" "extract connectivity" "1"

formButton "Extract Blockage" "extractVia"

setFormField "Extract Blockage" "Extract Via Region Up To Metal" "3"

formOK "Extract Blockage"

相关推荐
杰出的胡兵12 天前
景芯SOC设计实战
面试·职场和发展·soc·芯片·数字后端·数字ic后端·芯片设计全流程培训
IC拓荒者1 个月前
数字IC后端设计实现十大精华主题分享
数字ic后端·数字后端培训·calibre lvs·clock tree·clock gating时序·innovus案例
IC拓荒者1 个月前
数字IC后端设计实现篇之TSMC 12nm TCD cell(Dummy TCD Cell)应该怎么加?
数字ic后端·数字后端培训·tsmc12nm·dummy tcd·tcd工艺校准·数字后端零基础入门·a55 a72 cpu
IC拓荒者1 个月前
芯片级IO (Pad) Ring &IP Checklist
esd·数字ic后端·ic后端培训·innovus零基础·io ring·pad ring·checklist
IC拓荒者1 个月前
数字IC后端实现常见的physical only cell都有哪些?如何添加这些cell?
数字ic后端·数字后端培训·physical cell·latchup栓锁效应·endcap cell·boundary cell·ic后端设计实现
IC拓荒者2 个月前
华为海思2025届校招笔试面试经验分享
经验分享·华为·面试·数字ic后端·ic秋招·海思校招面经·校招笔试面试
IC拓荒者2 个月前
IC数字后端实现之大厂IC笔试真题(经典时序计算和时序分析题)
数字ic后端·静态时序分析·数字后端培训·ic后端笔试题·ic秋招笔试真题·芯原ic后端笔试·时序timing分析
IC拓荒者2 个月前
数字IC后端实现之PR工具中如何避免出现一倍filler的缝隙?
数字ic后端·placement·ic后端培训·innovus零基础lab·innovus零基础·spacing rule·innnovus place
IC拓荒者2 个月前
数字后端零基础入门系列 | Innovus零基础LAB学习Day11(Function ECO流程)
数字ic后端·数字后端培训·innovus零基础lab·innovus零基础入门·function eco·post-mask eco·innovus eco步骤
IC拓荒者2 个月前
数字IC后端设计实现之Innovus place报错案例 (IMPSP-9099,9100三种解决方案)
数字后端·数字ic后端·ic后端培训·innovus零基础lab·innovus place·innovus零基础·scan chain