VERDVANA'S BLOG Verdvana

Synopsys TCL


1 前言

        根据邸志雄老师的芯动力——硬件加速设计方法 课程中“掌握Synopsys TCL语言”一节记录。


2 TCL組成

        对于IC设计来讲,TCL语言分为三个部分:

  • TCL本身的内建指令;
  • Synopsys公司EDA工具自定义的指令;
  • 用户自定义指令。

3 object

        和SystemVerilog类似。

        object分为以下六类:

  • design;
  • cell;
  • ports;
  • pins;
  • nets;
  • clocks。

        各含义见Design Compiler入门的第二节。


4 attributes

        attributes是objects的属性。各个object有以下属性:

  • ports:
    • diretion;
    • driving_cell_rise;
    • load;
    • max_capacitance;
    • 等等;
  • cell:
    • dont_touch;
    • is_hierarchical;
    • is_mapped;
    • is_sequential;
    • 等等。

        下面举例说明。

4.1 port

        查看design中有没有port叫做CLK:

shell> get_port CLK

        查看design中所有的port:

shell> get_port *

        查看design中C开头的port:

shell> get_port C*

        属性direction:用来保存port的方向:

shell> get_attribute [get_port A] direction

        得到所有方向是input的port:

shell> get_port *-f "direction==in"

4.2 cell

        和PORT类似。

        属性ref_name用来保存起map到的refence cell名称:

shell> get_attribute [get_cells -h U3] ref_name

        得到所有ref_name是INV的cell:

shell> get_cells *-f "ref_name==INV"

4.3 nets

        查看design当中有多少个net(TCL本身指令)

shell> llength [get_object_name[get_nets *]] 

        或(Synopsys TCL指令):

shell> sizeof_collection [get_nets *]

        属性owner_net:用来保存与之相连的net的名称:

shell> get_arrtibute [get_pins U2/A] owner_net 

        属性full_name:用来保存net的名称:

shell> get_attribute [get_nets INV0] full_name

        NET和PORT之间的联系:

shell> get_nets -of [get_port A]

        其他和PORT类似。

4.4 pins

        查看design当中有哪些pin的名字叫Z:

shell> get_pins */Z

        查看design当中有哪些pin的名字以Q开头:

shell> get_pins */Q*

        告辞