Innovus: dbGet 快速学习教程

Innovus: dbGet 快速学习教程_第1张图片

dbGet是innovus/encounter工具自带的"database access command"命令中的一部分,它几乎可以用来获取设计相关的一切信息。

输入dbGet 按[Tab]键,能看到三个选项,分别是head / top /selected。这三个选项所代表的意义如下:

head --- 工艺信息,读入的库的信息

top --- 设计相关的 inst cell net fplan等等

selected --- 获取选中的object的属性

以dbGet selected为例,选中一个instance后,输入dbGet selected [Tab]后出现instance相关所有的属性名称。

Innovus: dbGet 快速学习教程_第2张图片

如果这时候敲[Enter],就会输出一串字符。

innovus > dbGet selected
9x7f763d0f2770

这串字符我们叫它指针,它所代表的就是dbGet selected选中的instance。所以dbGet selected能执行的操作这段字符串都能执行,就比如报告选中instance名字的操作

innovus > dbGet 0x7f763d0f2770.name
clk48M0div_reg

新手入门最大的疑惑是不知道如“name”一般每个属性所代表的意义,那么我就从这方面入手。

获取这些属性的详细说明可以使用dbGet selected.?h

Innovus: dbGet 快速学习教程_第3张图片

如果想展示选中instance所有这些属性的信息可以使用dbGet selected.??

Innovus: dbGet 快速学习教程_第4张图片

有没有更直观的方式,就像是“Q”一下看属性,当然有,快捷键"V",打开DB Browser,跟dbGet selected.??展示的内容一样,只不过更赏心悦目些。

Innovus: dbGet 快速学习教程_第5张图片

讲到这里dbGet selected你是不是就会用了呢?接下来就去看看进阶用法。dbGet有很多option,具体都是干嘛的,怎么用,做个简单介绍。

innovus > dbGet -d -e -i -p -p0 -p1 -p2 -p3 --p4 -p5 -p6 -regexp -u -v

按顺序来讲:

-d 的意思是返回database整数,而一般我们用的是浮点数,database整数可以参考DEF里的单位去输出。

innovus > dbGet selected.box

{3.0 7.2 10.0 8.4}

 innovus > dbGet selected.box -d

{3000 7200 10000 8400}

-e 的意思是输出为空指针时不显示0x0,而是空字符串。

innovus > dbGet selected.rHaloTopLayer

0x0
innovus > dbGet selected.rHaloTopLayer -e

innovus >

-i 是仅输出第几个结果,从0开始,也就是第一个结果对应-i 0

innovus > dbGet selected.instTerms.name
clk480Mdiv_reg/CK clk480Mdiv_reg/D clk480Mdiv_ reg/Q clk48Mdiv_ reg/R 

innovus > dbGet selected.instTerms.name -i 0
clk480Mdiv_reg/CK

-p ... -p9,-p是最常用的option,-p和-p0 -p1是一个东西,-p x它代表从后往前推第x个选项,与-p搭配使用的pattern也是必须的。

举例来说,dbGet selected.inst terms.name clk480Mdiv_reg/CK,这里clk480Mdiv_reg/CK就是pattern。

dbGet selected.instTerms.name clk480Mdiv_reg/CK -p

输出的结果就是dbGet selected.instTerms中对应clk480Mdiv_reg/CK的指针,-p2就是倒数第二个选项,dbGet selected.instTerms.name clk480Mdiv_reg/CK -p2对应的就是dbGet selected。

innovus > dbGet selected.instTerms 

0x7f763d76e960 0x7f763d76e990 0x7f763d76e9c0 0x7f763d76e9f0

innovus > dbGet selected.instTerms.name clk480M_13div_reg/CK -p

0x7f763d76e960

innovus > dbGet selected.instTerms.name clk480Mdiv_ reg/CK -p2
0x7f763d0f2770

innovus > dbGet selected 
0x7f763d0f2770

-regexp是正则表达式的意思,dbGet支持用正则表达式筛选结果。

举例来说,要抓取instTerm中的CK PIN可以用如下命令。

dbGet selected.instTerm.name -regexp {CK}

-u是去重的意思,结果中重复性的内容被过滤掉

innovus 64> dbGet [ dbGet selected .instTerms].inst.name

clk480Mdiv_reg clk480Mdiv_reg clk480Mdiv_reg clk480Mdiv_reg

innovus 65> dbGet [ dbGet selected. instTerms].inst.name -u

clk48mdiv_reg 

-v是取反的意思,如下例子,这个选中的instance一共四个pin,当用regexp筛选CK pin后只获得CK pin,加上-v取反后就返回的值就是除CK pin以外的其他三个pin

innovus > dbGet selected.instTerms.name- regexp CK

clk480Mdiv_reg/CK 

innovus > dbGet selected.instTerms.name -regexp CK -v 

clk480Mdiv_ reg/D clk480Mdiv_ reg/Q clk480Mdiv_ reg/R 

 

 

你可能感兴趣的:(学习,后端)