遇一人白首,择一城终老——get_object

我们在做Place & Route时,会经常使用一些database的命令来查找和统计一些数据。这些命令很实用,但是不好记,使用起来有一定的技巧。本文给大家介绍一下这些Object的命令该如何使用。

我们可以通过命令get_*来寻找想要的Object。不同类型的object对应不同的get命令。使用help_attributes

或者get_defined_attributes-return_classes

可以列出所有可以get的object类型。

遇一人白首,择一城终老——get_object

比如说:如何得到设计中所有名字中含有_clk的net名字

icc2_shell> get_nets *_clk*

{p_aps_clk_data0 p_aps_clk_data1 p_aps_clk_data2}

大部分object都支持创建,删除等操作

创建一个object: create_<object_class>

删除一个object: remove_<object_class >

get_*命令返回的是一个集合,我们称之为collection

icc2_shell> get_nets *clk*

{p_aps_clk_data0}

icc2_shell> puts [get_nets p_aps_clk_data0]

_sel902

很多命令直接支持collection作为对象,比如:

move_objects [collection] 移动指定的collection内的物体

flip_objects [collection] 翻转指定的collection内的物体

rotate_objects [collection] 旋转指定的collection内的物体

query_objects [collection] 咨询指定的collection内的物体

 

我们也可以对collection进行很多操作,比如:

append_to_collection 添加到一个collection中

remove_from_collection 从某个collection中删除具体一项

compare_collections 比较两个collection内容是否一样

copy_collection 复制一个新的collection

filter_collection 过滤某个collection

sizeof_collection 统计某个collection内的数量

 

当我们想抓取和某个collection相关的objects时,可以采用-of_objects的选项,如:

抓取net p_aps_clk所连接的pins,可以采用以下命令

icc2_shell> get_pins -of_objects [get_nets p_aps_clk]

{CLK_181}

当object带上层次化关系以后,就会变得复杂起来。

get_cells 返回的是当前逻辑层级的instance 和module,包括standard cell filler

get_cells –hierarchical 返回的是所有层级的instance和module,包括standard cell filler

get_flat_cell  返回的是所有层级的instance,不包括module和standard cell filler

举例如下:

get_cells *mux*

               clock_muxA  instance

               module_muxA  module

get_cells –hierarchical *mux*

               clock_muxA        instance

               module_muxA   module

               HIER1/ clock_muxB   instance

               HIER2/moduleA/clock_muxC   module

get_flat_cells *mux*

               clock_muxA  instance

               HIER1/ clock_muxB  instance

get_<object>还支持区域范围内查询object,参照下图

遇一人白首,择一城终老——get_object

get_cells –at {10, 10}    查询{10 10}这个坐标上的object

{A4}

get_cells –within {{0 0} {10 10}}  查询{0 0} {10 10}这个坐标范围内的object,该object必须完全在范围以内,不包括边沿

{A3}

get_cells –touching {{0 0} {10 10}}  查询{0 0} {10 10}这个坐标范围内的object,该object必须完全在范围以内,包括边沿

{A2 A3}

get_cells –intersect {{0 0} {10 10}}   查询接触{0 0} {10 10}这个边框范围的object

{A1 A2 A4 A6}

Attribute

每个object都有他相关的attributes,比如cell有full_name,area, boundary等,采用命令

list_attributes –application –class cell

可以列出全部attribute

遇一人白首,择一城终老——get_object

如果我们不知道这些具体attribute具体是什么意思,那我们可以man来查询

遇一人白首,择一城终老——get_object

如果我们想要得到具体某个attribute的值,可以采用get_attribute来实现:

get_attribute object_list attribute_name

举例:

get_attribute [get_cells InstA] physical_status

placed

同样的,如果想要修改该object上的某个属性,可以采用set_attribute来实现:

set_attribute object_list attribute_name  attribute_value

举例:

set_attribute [get_cells InstA] physical_status locked

如果想要把该object的所有属性报出来,可以采用

report_attributes –application [get_cells InstA]

遇一人白首,择一城终老——get_object

或者可以采用

report_attributes –application [get_selection]

get_attribute还可以得到指定object的子集属性

如:得到cts_inv_4164该insts中所在库里面的电压基本单位

get_attribute [get_cells cts_inv_4164]ref_block.lib.voltage_unit

1.00V


遇一人白首,择一城终老——get_object

公司招聘

各大IC公司招聘各类IC工程师

简历请戳邮箱:taozhang326[email protected]163.com

相关文章:

  • 2022-12-23
  • 2021-09-30
  • 2022-02-24
  • 2021-08-02
  • 2022-01-16
  • 2021-10-21
  • 2021-09-30
猜你喜欢
  • 2021-10-13
  • 2022-12-23
  • 2021-04-16
  • 2021-04-16
  • 2021-11-08
  • 2021-08-12
相关资源
相似解决方案