dbShape应用练习与结果的图形化展示

科技   2024-06-03 01:56   上海  


本文选自知识星球,更多干货知识以及后端笔记、视频教程等,欢迎加入星球进行查看。

星球上线了基于GPT4和个人IC设计知识库的IC设计 AI机器人 ,星球成员可以免费使用!!AI机器人24小时随时随地都能立刻回答用户的提问哦,效果非常棒!可以同时在电脑、手机、平板等多个平台上使用。

AI机器人还有绘图功能哦,最近几期的封面都是用AI机器人绘制的。

AI机器人的所有功能介绍如下:

基于GPT4和个人IC设计知识库的IC设计机器人v1.0正式上线

同时星球QQ群还有分享高达55万+字的个人数字后端设计笔记,欢迎加入。


《dbShape应用练习与结果的图形化展示》

想抓出下图中纵向Metal6 PG stripe左右扩宽5um之外的Core区域,并且用红色全部填满来进行标注:


我们可以用下面的命令来抓取Metal6的PG stripe(也就是先抓Special wire,然后通过条件筛选shape属性是PG stripe且layer name是Metal6的部分),-if就是条件筛选:

[DEV]innovus 59> get_db nets .special_wires -if {.shape==stripe&&.layer.name==Metal6}

special_wire:0x7fff6a22aa70 special_wire:0x7fff6a0bdc70 special_wire:0x7fff6a0c0260 special_wire:0x7fff6a233760 ……

我们可以通过get_db xxx .rect来得到上面所有Shape的rect的坐标:

[DEV]innovus 60> get_db [get_db nets .special_wires -if {.shape==stripe&&.layer.name==Metal6}] .rect

{975.94 326.44 983.94 1115.56} {775.94 326.44 783.94 1115.56} ……

接着可以通过dbShape的SIZEX操作(SIZEX如果为正值则代表往左右各延伸指定的距离)来将上面的图形左右各往外延伸5um,输出格式的话可以采用rect的形式:

[DEV]innovus 61> dbShape [get_db [get_db nets .special_wires -if {.shape==stripe&&.layer.name==Metal6}] .rect] SIZEX 5 -output rect

{420.94 625.44 438.94 1124.56} {470.94 616.44 488.94 1115.56} {520.94 625.44 538.94 1124.56} ……


至此,如果你想看下效果,可以用下面的proc来通过指定rect坐标来方便在GUI里面标注一些矩形:

proc hq_draw_rect {args} {
parse_proc_arguments -args $args pargs

set rect $pargs(-rect)
#set color $pargs(-color)
if {[array names pargs {-color}] != ""} {
set color_name $pargs(-color)
} else {
set color_name red
}
add_gui_shape -rect $rect -layer layer_${color_name}
setLayerPreference layer_${color_name} -color $color_name -lineWidth 3 -isVisible 1 -stipple None
#-stipple: Specifies  information about the stipple pattern of the object. The valid stipple names are None, Horizontal, Vertical, Grid, Slash, Backslash, Cross, and Brick. and Bold not list in Innovus
}
define_proc_arguments hq_draw_rect -info "Create rect annotation in gui" \
-define_args \
{
{-rect  "rect"  list string required}
{-color "color, default is red" list string optional}
}


可以用下面的命令来将结果展示出来:

set shapes [dbShape [get_db [get_db nets .special_wires -if {.shape==stripe&&.layer.name==Metal6}] .rect] SIZEX 5 -output rect]

foreach rect $shapes {

hq_draw_rect -color red -rect $rect

}


其中上面Proc中的setLayerPreference命令可以指定绘制图形的填充方式,None的话就是中间是空的,上图就是这样的效果,

setLayerPreference layer_${color_name} -color $color_name -lineWidth 3 -isVisible 1 -stipple Bold

如果改成Brick的话就是砖块的效果:

Grid的效果:


Cross的效果:

其他几种效果从名字很容易就能看出来,这里就不展示了:

Horizontal -> 水平线

Vertical -> 竖线

Slash -> 斜线

Backslash -> 反斜线


下面的命令可以清除GUI里面的annatation:

delete_gui_object -all


上面的命令并还没有实现我们的预期,下面接着讲:

...(完整推文见知识星球)...

...


基于这个教程,下面出一个非常实用的dbShape tcl脚本编程题:

根据Floorplan对于宽度小于$X或者高度小于$Y的narrow channel,自动创建Soft blockage。或者更复杂一点,根据宽度/高度的不同区间自动去添加hard/soft/partial这些不同类型的placement blockage...

该功能在实际项目中非常、非常 常用。



星球简介


目前星球中一共分享了19本+系统性的、整理成册的笔记,高达55万字+,2024年星球将分享更多私人笔记,逐步完善整个IC设计生态。
以后知识星球也会陆续会开放:
《Timing/DRV修复的专题笔记》 《ICC2 flow教程》 《Makefile在IC设计中的应用》和 《RedHawk教程笔记》 等等。
目前已上传的笔记有:
  • 低功耗设计技术总结 - 3万字,129页
  • IR drop的分析与修复总结 - 4.3千字,20页
  • 数字后端理论及实践-ICC干货笔记 - 11万字,423页
  • 数字后端理论及实践-Innouvs教程(第4版)- 5.7万字,316页
  • ICC2教程-星球精编版 - 2万字,125页
  • 数字后端理论及实践-Innouvs教程(第5版)- 11.8万字,635页
  • 面试笔试题整理 面试笔试经验分享(第1版)- 1.6万字,48页
  • 面试笔试题整理 面试笔试经验分享(第2版)- 2.3万字,87页
  • ICC2 ICC与Innovus的命令对照(第1版)
  • Tcl与DesignCompiler教程(第1版)- 6.1万字,183页
  • DRC规则讲解、DRC的检查与修复(第1版)- 7.3千字,26页
  • Congestion的分析与修复专题(第1版)- 1.2万字,41页 
  • Perl-Tk教程(第1版)- 1.6万字 73页
  • 星球精华推文分类整理合集(第1版)- 1.8万字,75页
  • 星球精华推文分类整理合集(第2版)- 4.4万字,160页
  • 面试笔试题整理 面试笔试经验分享(第3版)- 2.7万字,96页
  • 星球精华推文分类整理合集(第3版)- 6.6万字,240页
  • 时序分析与sdc专题笔记(第1版) - 3.1万字,115页
  • 星球精华推文分类整理合集(第4版)- 8.4万字,296页
  • 更多教程、笔记持续更新中。。。 


集成电路设计及EDA教程
知识 前端 后端 DFT 低功耗 验证 EDA 1rtl检查:LEDA 2仿真:VCS 3逻辑综合:DC 4形式验证:Formality 5布局布线:ICC 6STA:PT 7功耗分析:PTPX 8DRC LVS:Calibre
 最新文章