热度 14| |
后端设计中常常需要得到某个object的信息,如pin, net的某些属性。以前C家的工具各有各的一套命令。以Innovus为例,在安装目录下,我们可以找到几本数据库读写的手册。
<innovus_install_dir>/doc/innovusDBAref/innovusDBAref.pd
<innovus_install_dir>/doc/dbSchema/dbSchema.pdf
在Innovus Text Command Reference (<innovus_install_dir>/doc/innovusTCR/innovusTCR.pdf)中,有一个章节介绍Basic Database Access Tcl Ccommands and Global Variables。
这几本手册加起来是大量的指令。即使只需记住一小部分,那也是非常大的挑战,尤其是年龄逐步增大的工程师,而且这还只是Innovus一个工具。如果加上Genus, Tempus, 需要记忆的就太多了。有没有办法简化database access,减少记忆量的要求呢?答案是肯定的。为了更方便简洁地在几个工具中使用同一套语法,C家推出了common UI指令 -- 同一套语法,两个指令(get_db, set_db),可以在几个工具间共用,大大简化了脚本书写工作量,大大减少了对工程师记忆力的要求。
C家为了保证向下兼容,在引入get_db, set_db时同时引入了新的一整套指令,详细参考<innovus_install_dir>/doc/TCRcom/TCRcom.pdf。有些文档称新的指令为Stylus模式指令或common UI模式指令。为了与以前的模式/指令集区分,以前的则被称为legacy模式/legacy指令。具体用哪个模式取决于Innovus启动时的option。
% innovus -- 这样启动Innovus进入legacy模式
% innovus -stylus -- 这样启动Innovus进入common UI模式
实际上get_db, set_db在legacy模式下(19.x版本以上)也可以跑,只是缺了帮助信息,man get_db在legacy模式下是不工作的。不过没多大关系,get_db基本是self explanatory,基本不需要帮助信息。
下面仍以Innovus为例,介绍一下get_db的几个小窍门。
先输入get_db *。
工具会显示一大堆信息。左边这一栏为category。
继续试验。输入get_db analysis_views。
工具显示的是所有的view。记不清mmmc里设了那些view,这个命令可以帮忙。
如果想进一步看某个view的具体信息,可以这样。
注意,这里analysis_view后面没有s,是单数。最后的.*,意思是显示这个digtop/SCAN_FF所有的属性。对于所有的object,都可以用.*来显示所有属性信息。
get_db可以套在get_*命令如get_net,get_cells外面使用。
这里的截屏只是显示了一部分。
继续深挖。
再深挖。
这里可以看到.loads.name已经是loads这个旁支最下面的leaf了,再往下就没有数据结构了。
再举个例子。
get_db支持auto completion,如输入get_db base_pin:MUX2D4BWP30P140HVT/I0 .physical_pins.layer_sh,这时如果按Tab键,Innovus可以自动完成layer_shapes。
希望能有帮助。时间有限,如有错误,请留言指正。