文章右侧广告为官方硬广告,与吾爱IC社区无关,用户勿点。点击进去后出现任何损失与社区无关。

最近陆续收到不少小伙伴们的私信,提到初学者应该如何快速学习掌握dbGet的用法。对于习惯了S家的命令后,乍一看dbGet是不是觉得脑袋瓜都要炸了?的确是这样的,小编第一个项目刚用innovus的时候也有这种感觉。第一次用小编想要去get到一颗buffer都不会,好尴尬。这么丢脸的事情怎么要说出来呢。

其实刚开始不会,一点都不丢脸。如果一直持续不会下去,那才是真的丢脸。很多小伙伴经常私信,抱怨某些专题很难,学不会。每当看到这些信息,小编都会劝他们并抛出一句话。这句话是“世上无难事,只怕有心人”。

即便再难学的东西,看一遍不会,继续看第二遍,第二遍看不懂继续看第三遍,一直这样重复下去,小编不相信有搞不定的问题。在这个过程中可能大脑时不时会告诉自己这个太难了,太枯燥了,搞不定等等信息。所以只要你不被大脑发出的这些干扰信息所影响,你就一定能够成功(这个方法小编不轻易告诉别人的哦)。

所有成功的背后都意味着无数的汗水,没有人能够随随便便就优秀的,所有优秀的背后一定是蓄谋已久的。
吾爱IC社区已经为你们提供了让你足够优秀的基础条件,包括各种培训资料,各种技术干货,各类技术问答,EDA环境,甚至都提供了各种项目案例。所以只要你用心,假以时日想不牛都困难。

下面为innovus floorplanning的test case教学案例,需要的小伙伴们可以前往小编知识星球下载。

OK,今天小编将分享数字IC后端实现Innovus dbGet常用的命令。好好理解掌握每个命令的用法后,你也能够熟练应用了。Let’s Go!
列出设计中所有unplace的instance

  dbGet [dbGet -p top.insts.pStatus unplaced].name

列出设计中所有place的instance

  dbGet [dbGet -p top.insts.pStatus placed].name

列出设计中所有fix的instance

  dbGet [dbGet -p top.insts.pStatus fixed].nameselect_obj [dbGet top.insts.pstatus fixed -p]

那么,ICC/ICC2中如何get到所有fixed cell呢?

  get_cells -hierarchical -filter "is_fixed == true"

列出block io端口terminal所用的layer

  dbGet top.terms.pins.allShapes.layer.name

列出设计中的non default rules (NDR)

  dbGet head.rules.namereport_routing_rules (ICC)

列出某条net的route rule

 dbGet [dbGet -p top.nets.name netName].rule.name

有的时候我们对某些net设置一个special net rule后,想查看是否设成功了,可以通过这个命令来实现。对于很多net的情况,可以foreach循环来实现。

获得某个/选中instance的pStatus信息

 dbGet [dbGetInstByName instName].pStatusdbGet selected.pstatus

instance的pStatus有unplace,placed,fixed,cover,softfixed四种属性。在Innovus中如果cell有fix属性,那么这颗cell的边框会比较粗。典型的cell,比如有tapcell,endcap和寄存器等cell。

避免特定multibit寄存器被拆分(debanking)

  dbSet [dbGetInstByName <flop_name>].dontSplitMultibit 1

避免特定multibit寄存器被合并(banking)

  dbSet [dbGetInstByName <flop_name>].dontMergeMultibit 1

吾爱IC社区之前推送过低功耗设计实现中一些方法,其中有个专题就是讨论如何在DC综合和APR阶段利用Multibit Reg来做低功耗实现。Multibit reg通常有2bit,4bit,8bit等情况。具体使用哪种需要前期做好PPA评估再定方案。

选中出设计中的所有hard blockage

  select_obj [dbGet top.fplan.pBlkgs.type hard -p]

获得方形routing blockage的坐标

  dbGet top.fplan.rBlkgs.shapes.rect

获得多边形routing blockage的坐标

 dbGet top.fplan.rBlkgs.shapes.poly

列出设计中用到的所有cell类型

 dbGet -u top.insts.cell.name

获得 block/memory的placement halos大小 (block包括memory)

 dbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloTopdbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloBotdbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloLeftdbGet [dbGet -p2 top.insts.cell.subClass block*].pHaloRight

获得 block routing halos大小和最低最高层

 dbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloSideSizedbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloBotLayer.namedbGet [dbGet -p2 top.insts.cell.subClass block*].rHaloTopLayer.name

确认所有的1’b0和1‘b1都练到tie cell,而非直接连接到VSS和VDD

 dbGet top.insts.instTerms.isTieHi 1dbGet top.insts.instTerms.isTieLo 1

如果都有tie cell,那么命令执行后应该返回0X0。如果返回值是其他值,那么可以继续使用下面的命令找出需要加tie cell的instTerms。

 dbGet [dbGet -p top.insts.instTerms.isTieHi 1].namedbGet [dbGet -p top.insts.instTerms.isTieLo 1].name

get所有连接到tie cell的instTerm名字

 dbGet [dbGet -p [dbGet -p2 top.insts.cell.subClass coreTieLo].instTerms.net.allTerms.isInput 1].name

更改net的route属性(比如从 FIXED 到ROUTED)

 dbSet [dbGet -p top.nets.name netName].wires.status route

获得设计的状态

 dbGet top.statusIoPlaceddbGet top.statusPlaceddbGet top.statusClockSynthesizeddbGet top.statusRouteddbGet top.statusRCExtracteddbGet top.statusPowerAnalyzed

列出某条net所用到的layer

 dbGet [dbGet -p top.nets.name netName].wires.layer.name

fix某条net的shape

 dbSet [dbGet -p top.nets.name netName].wires.status fixed

选中某条net的shielding net

       dbSelectObj [dbget [dbget -p [dbGet -p top.nets.name $net].shieldNets.name GND].sWires.shieldNet.name $net -p2]

在PR实现中对于高速时钟信号,通常都需要加shielding来消除crosstalk。有的时候即便加了shielding net,pt中依然发现有若干ps的crosstalk,那么此时可以通过选中victim net的shielding vss net来进一步分析。

CRPR能补偿crosstalk吗?

get到特定cell name (ref name)的所有instance

 dbGet [dbGet -p2 top.insts.cell.name cellName].name

get library中特定cell name的size

 dbGet [dbGetCellByName cellName].size

列出设计中所有clock net

 dbGet [dbGet -p top.nets.isClock 1].name

Note: 执行这句命令前,需要先做timeDesign。

如何在Innovus中做好Clock Tree Synthesis?

将包含特定关键词clk的所有instance选中,设置成fix属性

 dbSet [dbGet –p top.insts.name *clk*].pStatus fixedselect_obj [dbGet [dbGet top.insts.name *clk* -p].name]

获得特定route_type的最高层和最低层

 dbGet [dbGet -p head.routeTypes.name routeTypeName].topPreferredLayer.numdbGet [dbGet -p head.routeTypes.name routeTypeName].bottomPreferredLayer.num

get database units

 dbGet head.dbUnits

get the manufacturing grid

 dbGet head.mfgGrid

获得所有的physical only cell,比如filler cell, endcap cell和tapcell等

 dbGet [dbGet -p top.insts.isPhysOnly 1].name

获得 Dont Touch instances:

 dbGet [dbGet -p top.insts.dontTouch true].name

获得database中所有Dont Use cells

 dbGet [dbGet -p head.libCells.dontUse 1].name

获得JTag elements

 dbGet [dbGet -p top.insts.isJtagElem 1].name

获得所有 spare instances

      dbGet [dbGet -p top.insts.isSpareGate 1].name

get 特定instance的pg pin

    dbGet [dbGet top.insts.name $instName -p ].pgInstTerms.name

get特定instance的pg连接关系

proc getInstPGConnect {c} {
set inst [dbget -p top.insts.name $c]
puts “PG connection of instance $c:”
foreach PGT [dbget $inst.pgCellTerms.name] {
puts “\tPin : $PGT --> Net: [dbget [dbPGTermNet [dbGetPGTermByName $inst $PGT]].name]” }
}

Example:

getInstPGConnect u_mmu_vir_top/mult_x_12/U821

PG connection of instance u_mmu_vir_top/mult_x_12/U821:
Pin : VSS --> Net: VSS
Pin : VDD --> Net: VDD_cpu
Pin : VBP --> Net: VDD
Pin : VBN --> Net: VSS

选中包含特定module name的所有memory或hierarchy module

 selectInst [dbGet [dbGet top.Inst.subClass block -p2].name <specify_module_name> ]

get到某个module中的所有sequential cell

selectModule <module_name>
dbGet [dbGet selected.insts.cell.isSequential 1 -p2].name

get到指定net driver的instance name和cell name

set netName netName
set inst [dbGet [dbGet -p [dbGet -p top.nets.name $netName].allTerms.isOutput 1].inst]
Puts "Net: $netName, driving inst name: [dbGet $inst.name], driving cell name: [dbGet $inst.cell.name]"

列出cell某个pin的所有layer

 dbGet [dbGet -p selected.cell.terms.name pinName].pins.allShapes.layer.extName

get到die area/选中boxes的polygon和面积

 dbShape -output polygon [dbGet top.fPlan.boxes]dbShape -output polygon [dbGet selected.boxes]dbShape -output area [dbGet selected.boxes]

get top level term pin坐标和layer number

 lindex [dbGet [dbGet top.hinst.hinstTerms.term.name <pin_name> - p].pins.allShapes.shapes.rect] 0dbGet [dbGet top.hinst.hinstTerms.term.name <pin_name>  -p].pins.allShapes.layer.num

get到cell的max cap信息

 set cellPtrList [dbGet -p head.allCells.name *BUF*]foreach cellPtr $cellPtrList {puts "[dbGet $cellPtr.name] [dbFTermMaxCap [dbGet -p $cellPtr.terms.name termName] 1]"}

找出包含特定属性的所有instance

 set inst_ptrs [dbGet -p top.insts.props {.name == "myProp" && .value == "xyzzy"]Puts "Instances with property myProp and value xyzzy: [dbGet $inst_ptrs.name]"

找出设计中非clock ports

 dbGet [dbGet -p [dbGet -p2 top.terms.net.isClock 0].isInput 1].name

get到设计中tech site相关信息

 dbGet head.sites.namedbGet head.sites.sizedbIsTechSiteVDDOnBottom [dbGet head.sites.name <name> -p]

得到physical only类型的cell (well tap, tie hi/lo, filler, endcap/decap)

 dbGet [dbGet -p head.libCells.subClass <subClassName>].namedbGet [dbGet -p head.libCells.subClass coreWellTap].namedbGet [dbGet -p head.libCells.subClass coreTieHigh].name

打印出设计中所有module名字

 foreach module_name [dbGet top.hInst.treeHInsts.cell.name] {Puts "$module_name"}

Get 到设计中所有leaf cells

 foreach leaf_name [dbGet -u top.insts.cell.name] {Puts "$leaf_name"}

给选中instance设置dont touch属性

 select_obj [dbGet top.insts.name LS* -p]foreach term [dbGet selected.instTerms.net.term –e] {set_dont_touch [dbGet $term.net.name] true}

Skip routes hierarchical hard macro nets

  proc skiproutesOnHmsNets {hmInstPattern} {deselectAllselectInst *$hmInstPattern*dbset selected.hinst.hnets.net.skipRouting 1deselectAll}

针对某些不想让工具绕线的net,可以通过设置skipRoute选项来实现。不过值得注意的是,这个操作存在一定风险。如果后续要对这些net进行eco,那么这条net可能会是open net。

不过即便出现open,我们也有办法解决。通过将这些net的skipRoute属性改成0,然后再单独绕这些net。这样的解法也是非常完美的。

删掉macro身上的信号走线

 foreach c [dbGet [dbGet -p2 top.insts.cell.baseClass block].name] {            set j [dbGet -p top.insts.name $c ]                                          dbSelectObj  [dbQuery -area  [dbGet $j.box ] -objType regular]                                puts "Deleting object at [dbGet $j.box ] within Block [dbget $j.name]"editDelete -selected  -type Signal  -use SIGNAL
}

get到设计中非power的via数量

 llength [dbGet [dbGet -p top.nets.isPwrOrGnd 0].vias]

get设计中memory的latency值

 set mem_pin [dbget [dbget top.insts.cell.name *RAM* -p2].instTerms.name *CLK]foreach i $mem_pin {puts "$i [get_property [get_pins $i] actual_latency_late_rise_max]"}

得到设计中所有直接将reset连接到VSS的flop数量,instance name和ell name

setPreference CmdLogMode 1# output file name:set ofile "flop_with_tied_rst.rpt"set ecofp [ open $ofile w ]set cnt [llength [dbGet [dbGet [dbGet top.nets.name $VSS_name -p].instTerms.cellTerm.name $RSTport -p2 ].inst.name ]]set insts  [dbGet [dbGet [dbGet top.nets.name $VSS_name -p].instTerms.cellTerm.name $RSTport -p2 ].inst ]set cnt2 [llength $insts]puts $ecofp "Total: $cnt $cnt2"#foreach inst_ptr [dbGet [dbGet [dbGet top.nets.name $VSS_name -p].instTerms.cellTerm.name $RSTport -p2 ].inst ]foreach inst_ptr $insts {set inst_name [dbGet $inst_ptr.name]set cell_ptr [dbInstCell $inst_ptr]set cell_name [dbGet $cell_ptr.name]set rst_port [dbGet $inst_ptr.instTerms.cellTerm.name $RSTport -p2]set net [dbGet $rst_port.net.name]puts $ecofp "$inst_name $cell_name "}

close $ecofp
}

好了,今天的内容分享就到这里。如果你比较有心,我相信你会想着整理一份S家对应命令汇总,那就赶紧去做吧!如果小编的分享对你有所帮助,帮忙点击“在看”并转发给你的朋友,算是对小编的一点帮助。

小编知识星球简介(如果你渴望进步,期望高薪,喜欢交流,欢迎加入):

在这里,目前已经规划并正着手做的事情:
ICC/ICC2 lab的编写
基于arm CPU的后端实现流程
利用ICC中CCD(Concurrent Clock Data)实现高性能模块的设计实现
基于ARM 四核CPU 数字后端Hierarchical Flow 实现教程
时钟树结构分析
低功耗设计实现
定期将项目中碰到的问题以案例的形式做技术分享
基于90nm项目案例实现教程(ICC和Innovus配套教程)
数字IC行业百科全书

吾爱IC社区知识星球星主为公众号”吾爱IC社区”号主,从事数字ic后端设计实现工作近八年,拥有55nm,40nm,28nm,22nm,14nm等先进工艺节点成功流片经验,成功tapeout过三十多颗芯片。

这里是一个数字IC设计实现高度垂直细分领域的知识社群,是数字IC设计实现领域中最大,最高端的知识交流和分享的社区,这里聚集了无数数字ic前端设计,后端实现,模拟layout工程师们。

在这里大家可以多建立连接,多交流,多拓展人脉圈,甚至可以组织线下活动。在这里你可以就数字ic后端设计实现领域的相关问题进行提问,也可以就职业发展规划问题进行咨询,也可以把困扰你的问题拿出来一起讨论交流。对于提问的问题尽量做到有问必答,如遇到不懂的,也会通过查阅资料或者请教专家来解答问题。在这里鼓励大家积极发表主题,提问,从而促进整个知识社群的良性循环。每个月小编会针对活跃用户进行打赏。

最重要的是在这里,能够借助这个知识社群,短期内实现年薪百万的梦想!不管你信不信,反正已经进来的朋友肯定是相信的!相遇是一种缘分,相识更是一种难能可贵的情分!如若有缘你我一定会相遇相识!知识星球二维码如下,可以扫描或者长按识别二维码进入。目前已经有680位星球成员,感谢这680童鞋的支持!欢迎各位渴望进步,期望高薪的铁杆粉丝加入!终极目标是打造实现本知识星球全员年薪百万的宏伟目标。

Innovus dbGet常用命令合集相关推荐

  1. Centos7常用命令合集

    Centos7常用命令合集 管理centos服务器的时候常会对文件进行一些常规操作,除了ftp之外了解在ssh下必要的文件操作命令那也是必不可少的,以下摘录一些常用的文件操作命令: 文件操作: ls ...

  2. Linux手册大合集,收藏!Linux常用命令合集

    收藏!Linux常用命令合集 1. 帮助命令 1.1 man 命令名称,man 的意思是 manual,即手册,对于大多数命令都可以使用这个命令来查看其使用的方法. 1.2 help 命令名称 或者 ...

  3. 收藏!Linux 常用命令合集

    收藏!Linux常用命令合集 1. 帮助命令 1.1 man 命令名称,man 的意思是 manual,即手册,对于大多数命令都可以使用这个命令来查看其使用的方法. 1.2 help 命令名称 或者 ...

  4. Innovus/Encounter Floorplan命令合集(二)

    以下资料是我之前写过的,芯片数字后端中的一些Innovus/Encounter命令的中文介绍(第二部分,上半部在前面一个链接),主要是Floorplan部分,接下来会新增Timing部分命令介绍.整理 ...

  5. bat fc命令_什么是批处理?Windows批处理(cmd/bat)常用命令合集

    什么是批处理?批处理(Batch),也称为批处理脚本.顾名思义,批处理就是对某对象进行批量的处理,通常被认为是一种简化的脚本语言,它应用于DOS和Windows系统中.批处理文件的扩展名为bat .目 ...

  6. FFmpeg常用命令合集

    0.概述 最近工作中涉及到一些视频处理的技术,比如获取视频时长.获取视频关键帧.视频剪辑等.这里作一个汇总,后面会持续更新. 1.常用命令 1.0.查看视频信息 通过ffmpeg -i input.m ...

  7. git add 所有修改文件_Git 技术干货!工作中quot;Gitquot;的使用实践和常用命令合集!

    作者:洋仔聊编程 出自:InfoQ 写作平台 原文:xie.infoq.cn/article/1ce91dc60431b1b8845729d41 工作中git是一项必不可少的技能,在项目的开发进程中起 ...

  8. Linux 常用命令合集

    常用命令 艿艿:这一小节会非常非常非常长,当做温故知新吧. 另外,面试官也可能会问,你熟悉 Linux 么?你平时使用哪些 Linux 命令.酱紫的连环炮~ 当然,建议重点看下 「性能相关」 小节. ...

  9. 【linux】服务器运维必备之linux常用命令合集

    目录 1  常用系统查看命令:磁盘/内存/CPU 2  常用操作命令 3  系统/硬件时间操作 4  文件编辑器 5  防火墙 6  网卡 7  root用户远程ssh登录 1  常用系统查看命令:磁 ...

最新文章

  1. WSUS Troubleshooting guide
  2. IIS HTTP 错误 404.17 - Not Found 解决方法
  3. uva1624knots
  4. linux oracle流复制,oracle 流复制
  5. 冰豹lua驱动设置_卡宴?卡宴!——冰豹ROCCAT Kain 120 AIMO开箱
  6. [复变函数]第19堂课 5.3 解析函数在无穷远处的性质
  7. 矩阵中不重复的元素(51Nod-1024)
  8. aide入侵检测工具与crontab
  9. /usr/include/sys/stat.h文件属性
  10. amazeui学习笔记--css(布局相关2)--等分网格 AVG Grid
  11. 快速排序算法的优化思路总结
  12. GDAL的python版本安装使用
  13. 【人工智能】马尔可夫链模型是什么?
  14. ffmpeg中的时间单位以及时间转换函数(av_q2d av_rescale_q)
  15. C语言把csv文件转xls,Excel怎么批量将CSV格式转换为xlsx或xls格式?VBA、宏、软件?...
  16. 侯晓迪:全身心的投入,吃住都在实验室
  17. UE4项目聚集—为所有创意人开放的虚幻引擎
  18. 四年级下册计算机作业,科学(四年级下册)作业.doc
  19. 牛顿-莱布尼茨公式的运用
  20. 【报告分享】2020年中国房地产销售额百亿企业排行榜-中国指数研究院(附下载)

热门文章

  1. 身份验证漏洞 之 身法提升篇
  2. 本机号码一键登录原理
  3. 我方了!游戏建模竟然要学这么多东西!
  4. WPF--使用windows语音合成与语音识别
  5. 解决uni-app开发的view页面中的文本乱码问题
  6. [转]火影忍者疾风传275集
  7. SAP库龄报表解析说明
  8. 钉钉中,打开app内的h5应用
  9. 洛谷 P1402 酒店之王
  10. Matlab 自定义函数