1.抓取inst的数量:
>llength [dbget -p2 [dbget -p [dbget -p top.insts.name * ].isPhysOnly 0].cell.subClass core]
该嵌套命令的思路:
第一步dbget -p top.insts.name *是抓取出设计中的所有inst指针
第二步dbget -p [dbget -p top.insts.name * ].isPhysOnly 0 是去除掉physical的inst
第三步dbget -p2 [dbget -p [dbget -p top.insts.name * ].isPhysOnly 0 ].cell.subClass core意为get core区域的非physical的insts
第四步llength [dbget -p2 [dbget -p [dbget -p top.insts.name * ].isPhysOnly 0].cell.subClass core]就是计算抓取的inst的数量
2.抓取设计中std cell的面积:
>expr [join [dbget [dbget -p2 [dbget -p [dbget -p top.insts.name * ].isPhysOnly 0 ].cell.subClass core].area ] + ]
该嵌套命令的思路同上:
第一步先抓取出所有的非physical的cell:dbget -p2 [dbget -p [dbget top.insts.name -p *].isPhysOnly 0].cell.subClass core
第二步get到这些cell的面积:dbget [dbget -p2 [dbget -p [dbget top.insts.name -p *].isPhysOnly 0].cell.subClass core].area
第三步使用join将抓到的Cell的面积的数值串接成一个字符串:join [dbget [dbget -p2 [dbget -p [dbget top.insts.name -p *].isPhysOnly 0].cell.subClass core].area ] +
第四步使用expr计算所有cell的面积之和:expr [join [dbget [dbget -p2 [dbget -p [dbget top.insts.name -p *].isPhysOnly 0].cell.subClass core].area ] +]
3.计算设计中mem的面积:
>expr [join [get_property [get_cells * -hierarchical -filter "is_memory_cell == true"] area] + ]
该嵌套命令思路:
第一步get到mem:get_cells * -hierarchical -filter "is_memory_cell == true"
第二步get到mem的面积:get_property [get_cells * -hierarchical -filter "is_memory_cell == true"] area
第三步对mem的面积做计算:expr [join [get_property [get_cells * -hierarchical -filter "is_memory_cell == true"] area] + ]
4.计算设计中macro的面积:
>expr [join [dbget [dbget -p2 [dbget -p [dbget -p top.insts.name *].isPhysOnly 0].cell.subClass block].area ] + ]
嵌套思路同上
5.计算pad的面积:
>expr [join [dbget [dbget top.insts.cell.baseClass pad -p2].area] + ]
6.假如需要计算很多个block的面积,思路是把这些block的面积列为一个列表,然后再使用join加和,最后进行计算
> expr [join [list [dbget [dbget top.insts.name -p block_a].area] [dbget [dbget top.insts.name -p block_b].area]] + ]
这里假设有两个block,block_a和block_b