常用dbGet命令

5028cc21f7054379b6a2412b20b7b774.png

3a7c67366bbe403887e0696bf1c875a0.png

我正在「拾陆楼」和朋友们讨论有趣的话题,你⼀起来吧?
拾陆楼知识星球入口

203b6a2614bc4b3493fd98a95d93a4fb.png


Examples of dbGet Command
1. Find the top name of the design
dbGet top.name

2. Get all the attributes of a selected object 
dbGet selected.??
If you press tab key after a . (dot) it will display all the possible options there.  you can try
dbGet top.<press tab here>

3. Get the name of the selected object (instance, net, ports or any other objects).
dbGet selected.name

4. Get the cell name of a selected  Instance. 
dbGet selected.cell.name

5. Get all the pins of a selected  Instance. 
dbGet selected.cell.terms.name

6. Get the database unit 
dbGet head.dbUnits

7. Get the manufacturing grid value 
dbGet head.mfgGrid

8. Get all  the layers name
dbGet head.layers.name
Please let me know in the comment that it returns only routing layers or base layers too

9. Get all  the routing layers name
dbGet [dbGet head.layers.type routing -p].name
Alternatively, getAllLayers metal can also be used

10. Get the parameters of any particular routing layer (like Masks, Directions, pitch, minWidth, minSpacing etc )
dbGet [dbGet [dbGet head.layers.type routing -p].name *2 -p].minWidth

11. Get the information of a cell which is present in std. cell library but not in design.
dbGet head.libCells.name <cell_name> 
Then you can find many things like all available Drive strengths, Vt type etc.
You can also use another way : get_lib_cells <cell_name>

12. Get the pointers of all the cells which are used more than 100 times in the design
dbGet [dbGet head.allCells.objType libCell -p]{.numRefs > 100}

13. Get all the inverter cells available in the library.
dbGet [dbGet head.libCells.isInverter 1 -p].name 

14. Get  the size of your block
dbGet top.fPlan.box.size

15. Get  the area of a block
dbGet top.fPlan.area

16. Get all the power domains availble in the design
dbGet top.fPlan.groups.pd.name 

17. Find all the block level ports name 
dbGet top.terms.name

18. Find the metal layers used in block level IO ports
dbGet top.terms.pins.allShapes.layer.name -u

19. Get the count of block level ports 
dbGet top.numTerms
or you can also use
llength [dbGet top.terms]

20. Get all input and output ports 
dbGet top.numInputs
llength [dbGet top.terms.inOutput 1 -p]

21. Get all clock and scan clock pins
llength [dbGet top.terms.isClk 1 -p]
llength [dbGet top.terms.isScanClk 1 -p]

22. Get the edge number where a port is placed
dbGet [dbGet top.terms.name <port_name> -p].edge 

23. Get all the feedthru ports name which is placed on a particular edge number (suppose 3)
dbGet [dbGet top.terms.edge 3 -p].name *ft*  

24. Get the name of all the instances present in the design. 
dbGet top.insts.name

25. Get all the instances name of a particular cell 
dbGet [dbGet top.insts.cell.name <cell_name> -p2].name

26. Get all the physical cells present in the design 
dbGet [dbGet top.insts.cell.isPhyOnly 1 -p].name -u
Suppose you want to print all the names in a new line, you can use join them like below.
        join [dbGet [dbGet top.insts.cell.isPhyOnly 1 -p].name -u ] 
Suppose you want only a number that how many types of physical cells have been used, llength can be used in that case before the dbGet command.
       llength [dbGet [dbGet top.insts.cell.isPhyOnly 1 -p].name -u ]

27. Find the total number of physical cell instances used in the design  
llength [dbGet top.insts.cell.isPhyOnly 1 -p2]

28. Find all the instances which have only one pins (like tie cells, antenna cells)
llength [dbGet top.insts.cell.numTerms 1 -p2]

29. Find total numbers of well tap instances used in the design 
llength [dbGet top.insts.cell.name <*TAP*> -p2]
Note: Depending on the standard cell library nomenclature the keyword *TAP* could be vary

30. Find total types of well tap cells used in the design 
llength [dbGet top.insts.cell.name <*TAP*> -p -u]
Note: -p may be used in place of -p1, both have same meaning

31. Find  the name of all uniq types of well tap cells used in the design 
dbGet [dbGet top.insts.cell.name <*TAP*> -p].name -u
For better visibility print all of them in new line
join [dbGet [dbGet top.insts.cell.name <*TAP*> -p].name -u] 

32. Find the name of all the unique types of boundary cells used in the design
dbGet [dbGet top.insts.cell.name <*BOUNDARY*> -p].name -u
Note: you need to verify the keyword *BOUNDARY* based on your standard cell name.

33. Find the name of all the macro’s in your design
dbGet [dbGet top.insts.cell.baseClass block -p2].name
Suppose you want to exclude few macros like ESD cells or any othere from this list, then you can use -v option with this. like below.
dbGet [dbGet top.insts.cell.baseClass block -p2].name -v <uniq_name_pattern_of those_macros>
llength will return the count of macros.

34. Find the name of all sequential elements (registers/flip flops) in the design
dbGet [dbGet top.insts.cell.isSequential 1 -p2].name

35. Find the name of all the don’t touch instance
dbGet [dbGet top.insts.isDontTouch 1 -p].name

36. Get the name of all the instance in your design which has fixed placement status
dbGet [dbGet top.insts.pStatus fixed -p].name

37. Find the lower left cordinate of an instance 
dbGet [dbGet top.insts.name <inst_name> -p].pt
Or you can first select the instance and then use following command.
dbGet selected.pt
In case you want only x-coordinate or only y coordinate, you may use following command.
dbGet selected.pt_x 
dbGet selected.pt_y

38. Find the width and height of a cell
set width [dbGet [dbGet top.insts.cell.name <cell_name> -p].size_x -u]
set height [dbGet [dbGet top.insts.cell.name <cell_name> -p].size_y -u]
Or we can select the instance and use following command
dbGet [dbGet selected.cell.name <cell_name> -p].size_x -u
Or If that cell is not present in the design we can use following command
dbGet [dbGet head.libCells.name <cell_name> -p].size_x -u

39. Find the cordinate of a pin of an instance 
dbGet [dbGet top.insts.instTerms.name <inst_term_name> -p].pt

40. Find the placement status of an instance
dbGet [dbGet top.insts.name <inst_name> -p].pStatus
Note: Apart from pStatus there are two more status for an instace called ctsStatus and effectiveStatus.  effectiveStatus is the final status based on the latest pnr stage.
We can also change the pStatus of an instance using dbSet command.
dbSet [dbGet top.insts.name <inst_name> -p].pStatus <fixed | placed >

41. Get the name of all the nets in the design
dbGet top.nets.name 

42. Get all the power and ground nets name in the design 
dbGet [dbGet top.nets.isPwrOrGnd 1 -p].name

43. Get all the signal nets only (except clock, power nad ground) 
dbGet [dbGet [dbGet [dbGet top.nets.isClock 0 -p].isPwr 0 -p].isGnd 0 -p].name

44. Find the name of all the nets with a particular pattern in net name 
dbGet top.nets.name <*pattern*> 

45. Find the name of all the CTS clock nets
dbGet [dbGet top.nets.isCTSClock 1 -p].name 

46. Find the net name connected to a pin of an instance
dbGet [dbGet top.insts.instTerms.name <full_inst_pin_name> -p2].net.name 

47. Get the routing status of a net 
dbGet [dbGet top.nets.name <net_name>].wires.status
Further we can change the routing status of the net using dbSet command 
dbSet [dbGet top.nets.name <net_name>].wires.status <fixed | routed>

48. Get all the NDR used in the design
dbGet head.rules.name

49. llx lly urx ury all four coordinate in four variable of an instance 
selectInst <inst_name>
set box [dbGet [dbGet top.insts.name <inst_name> -p].box]
foreach {x1 y1 x2 y2} [lindex $box 0] {break;}

50. Get object type of an unknown object
set un selected.name
dbGet [dbGetObjByName $un].objType 

51. Get the count of ULVT cells in the design (excluding  physical only cells)
llength [dbGet [dbGet top.insts.isPhyOnly 0 -p].cell.name *ULVT* -e]

52. Get the area of violation marker and search any object on that area
set marker <marker_name>
set area [dbGet [dbGet top.markers.userType $marker -p].box]
dbQuery -area $area -objType sViaIst
Note: marker name is nothing but your violation’s name itself (like VIA0.S.2.1.s ).  You need to load those markers first and then you need to use the 2nd command in foreach loop.

  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

拾陆楼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值