在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 154|回复: 9

[求助] innovus实现信号线和电源线分离

[复制链接]
发表于 昨天 14:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 clocker0 于 2025-6-6 15:24 编辑

各位大佬好,小弟目前在研究背面供电的课题。

之前的正面供电时,信号线和电源线都在M1-M13层,相互拥塞。
现在目前业界在做背面供电的研究,就是添加几层背面金属层,然后将电源线放入背面金属层,正面金属层就只用于信号线(CLK和signal),这样就实现了 clk/signal 绕线资源更多,且避免signal和电源线之间可能的干扰。
目前的想法是把M0当作底层,M1-M2层当作背面金属层,M3-M13层当作正面金属层。在PNR时,只在M1-M2生成电源条带,然后在M3-M13层进行routing,但是当我设置routing的bottom层是M3时,innovus会提示报错,显示M1,M2已经存在信号线(时钟树综合时在M1和M2布了时钟线),因此routing的bottom层必须设置为M1。
小弟想问下各位大佬,有没有什么办法在时钟树综合的时候就从M3层开始布线,谢谢各位大佬!

下面是小弟的脚本:


source pdn_invs.tcl

setPlaceMode -place_detail_use_check_drc false
setPlaceMode -place_global_place_io_pins true

place_opt_design -out_dir $rptDir -prefix place

####SWAP
#randSwapCells
# 添加CTS专用配置 - 指定缓冲器和反相器单元用于CTS
set_ccopt_property buffer_cells {
    BUF_X1_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
    BUF_X2_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
    BUF_X4_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
    BUF_X8_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
}
set_ccopt_property inverter_cells {
    INV_X1_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
    INV_X2_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
    INV_X4_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
    INV_X8_6T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_M0
}

set_ccopt_property use_inverters true

# 报告时钟情况以便调试
report_clocks

set_ccopt_property post_conditioning_enable_routing_eco 1
set_ccopt_property -cts_def_lock_clock_sinks_after_routing true
setOptMode -unfixClkInstForOpt false

# 创建时钟树规范并运行CTS
create_ccopt_clock_tree_spec -filename ccopt.spec
source ./ccopt.spec
ccopt_design

set_interactive_constraint_modes [all_constraint_modes -active]
set_propagated_clock [all_clocks]
set_clock_propagation propagated


# ------------------------------------------------------------------------------
# Routing
# ------------------------------------------------------------------------------

#setNanoRouteMode -routeTopRoutingLayer 14
setNanoRouteMode -routeUseAutoVia false
#setNanoRouteMode -routeBottomRoutingLayer 1

##Recommended by lib owners
# Prevent router modifying M1 pins shapes
#setNanoRouteMode -routeWithViaInPin "1:1"
#setNanoRouteMode -routeWithViaOnlyForStandardCellPin "1:1"
#setNanoRouteMode -routeWithViaOnlyForStandardCellPin false

## allows route of tie off nets to internal cell pin shapes rather than routing to special net structure.
setNanoRouteMode -routeAllowPowerGroundPin true

## limit VIAs to ongrid only for VIA1 (S1)
setNanoRouteMode -drouteOnGridOnly "via 1:1"
setNanoRouteMode -dbCheckRule true
setNanoRouteMode -drouteAutoStop true
setNanoRouteMode -drouteExpKeepVia {*RW*, *MAR*}
setNanoRouteMode -drouteExpAdvancedMarFix false
setNanoRouteMode -routeExpAdvancedTechnology true
setAnalysisMode -cppr both
setAnalysisMode -analysisType onChipVariation


setExtractRCMode -effortLevel medium

routeDesign
extractRC
saveDesign ${design}_route.enc


## report
summaryReport -noHtml -outfile $rptDir/route_design.rpt
report_timing > $rptDir/route_timing.rpt
report_power > $rptDir/route_power.rpt
verify_drc -exclude_pg_net -limit 1000000 > $rptDir/drc.rpt


rcOut -spef ${design}.spef
saveNetlist ${design}.v





发表于 昨天 14:27 | 显示全部楼层
没接触过,有点理解不了,你这是什么工艺,std cell的信号pin出在m几?通常来说一般信号线都要连到m1 m2的信号pin上,怎么实现只绕到m3呢
 楼主| 发表于 昨天 14:42 | 显示全部楼层
本帖最后由 clocker0 于 2025-6-6 14:44 编辑


dingyisuper1 发表于 2025-6-6 14:27
没接触过,有点理解不了,你这是什么工艺,std cell的信号pin出在m几?通常来说一般信号线都要连到m1 m2的 ...


pdk用的probe3.0的pdk(github上开源PDK),支持包括背面供电网络(BSPDN)关键扩展技术的探索。


请问PDK里的哪个文件可以看std cell的信号Pin处在M几?

我觉得作者的意思就是把M1-M2当作背面金属层,M3-M13层当作正面金属层,然后进行仿真,但是我目前跑了好久没跑通....












BM1BM2定义.png
电源条带定义.png
发表于 昨天 14:43 | 显示全部楼层


dingyisuper1 发表于 2025-6-6 14:27
没接触过,有点理解不了,你这是什么工艺,std cell的信号pin出在m几?通常来说一般信号线都要连到m1 m2的 ...


好像是N3这种先进工艺会做背面供电
 楼主| 发表于 昨天 14:46 | 显示全部楼层


ywwuyifan 发表于 2025-6-6 14:43
好像是N3这种先进工艺会做背面供电


是的,我这个是5nm节点的PDK,但是目前innovus好像还不支持真的背面供电仿真,所以说只能把M1-M2当作背面金属层,然后M3-M13当作正面金属层,这样来实现背面供电仿真。但是我目前疑惑就是实现不了M1-M2放电源线,M3-M13放CLK和signal线
发表于 昨天 14:46 | 显示全部楼层
我觉得2楼说的对,你得先看看std cell出pin在第几层才能决定能不能从M3开始用routing
至于innovus说有M1 M2有存在clk routing你就先删了线先跑flow
发表于 昨天 14:51 | 显示全部楼层
有没有论文,想长长见识
 楼主| 发表于 昨天 14:54 | 显示全部楼层


ywwuyifan 发表于 2025-6-6 14:46
我觉得2楼说的对,你得先看看std cell出pin在第几层才能决定能不能从M3开始用routing
至于innovus说有M1 M2 ...


MACRO INV_X2_5T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_BPR
  CLASS CORE ;
  ORIGIN 0 0 ;
  FOREIGN INV_X2_5T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_BPR 0 0 ;
  SIZE 0.1350 BY 0.1200 ;
  SYMMETRY X Y ;
  SITE coresite ;
  PIN ZN
    DIRECTION OUTPUT ;
    USE SIGNAL ;
    PORT
      LAYER M1 ;
        RECT 0.0525 0.0840 0.0675 0.0120 ;
    END
  END ZN
  PIN I
    DIRECTION INPUT ;
    USE SIGNAL ;
    PORT
      LAYER M1 ;
        RECT 0.0825 0.0600 0.0975 0.0120 ;
    END
  END I
  PIN VDD
    DIRECTION INOUT ;
    USE POWER ;
    SHAPE ABUTMENT ;
    PORT
      LAYER M0 ;
        RECT 0.0000 0.1130 0.1350 0.1270 ;
    END
  END VDD
  PIN VSS
    DIRECTION INOUT ;
    USE GROUND ;
    SHAPE ABUTMENT ;
    PORT
      LAYER M0 ;
        RECT 0.0000 -0.0070 0.1350 0.0070 ;
    END
  END VSS
END INV_X2_5T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_BPR
我看了下,确实std cell的出pin在M0和M1

 楼主| 发表于 昨天 14:56 | 显示全部楼层
发表于 昨天 15:24 | 显示全部楼层


clocker0 发表于 2025-6-6 14:54
MACRO INV_X2_5T_2F_45CPP_24M0P_30M1P_24M2P_2MPO_ET_BPR
  CLASS CORE ;
  ORIGIN 0 0 ;


cell出pin在这些层,信号线就必须(至少)要绕到这些层,电源线只能走其它层了。

这工艺太先进了,没有接触过,学习一下0.0
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /1 下一条

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

GMT+8, 2025-6-7 06:57 , Processed in 0.022801 second(s), 7 queries , Gzip On, MemCached On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表