Design & Library Objects

gimdo·2024년 7월 4일

Design Objects

  • Verilog(VHDL) Perspective
    -> Design, Port, Clock, Cell, Pin, Net (Clock is a user-defined object within Design Compiler memory.)
  • Schematic Perspective
    -> Design, Port, Clock, Cell, Pin, Net

(Pin are always associated with a specific instance or cell : cell_name/pin_name)
INV는 왜 ENCODER나 REGFILE 같은 design object가 아닐까?
-> INV는 라이브러리 셀이므로, ENCODER와 REGFILE은 VHDL entities나 Verilog modules 때문입니다.

  • Ports VS Pins
    Ports : inputs and outputs of the current design.
    Pins : inputs and outputs of any cell that is instantiated in the current design.
    -Port and pin은 디자인에 따라 변경될 수 있습니다.

"get_*" Commands

dc_shell-topo > set_load 5 [get_nets SUM]
get_nets sum : net에 있는 SUM을 갖고 옵니다.

  • "get_*" commands return objects in the current_design, in DC memory, or in libraries : Can be used stand-alone or embedded in other commands.

  • Wildcards with ? or * : 지정된 패턴에 일치하는 포트 이름을 선택하는 데 사용됩니다.

    set_load 5 [get_ports addr_bus*]
    set_load 6 [get_ports "Y??M Z*"]

    *는 임의의 문자열을 나타냅니다. 예를 들어, Z*는 "Z"로 시작하는 모든 포트 이름을 선택합니다. "ZA", "Z1", "Z_output" 등이 모두 포함됩니다.

    ?는 단일 문자를 나타냅니다. 예를 들어, Y??M은 "Y"로 시작하고, 그 뒤에 두 글자가 있으며, 마지막에 "M"으로 끝나는 포트 이름을 선택합니다. "YAAM", "Y12M", "YXZM" 등이 포함됩니다.

  • "get_*" 명령어는 인수와 일치하는 데이터베이스 개체의 집합을 반환합니다 : 허나, 일치하는 개체를 찾을 수 없는 경우 빈 컬렉션이 반환됩니다.

  • 앞에 'man'을 치고 명령어 입력하면 그 명령어에 대해 설명합니다. 또한, 명령어 쓸때에는 '[ ]'로 묶어준다.

  • argument는 띄어쓰기가 적용이 됩니다.
    ex) arg arg -> argument가 두 개로 적용

★★★ Summary : Commands Covered

  • get_ports, _pins, _designs, _cells, _nets

  • all_inputs, _outputs, _clocks, _registers

  • set pci_ports [get ports "Y??M* Z*"]

  • sizeof_collection $pci_ports
    -> $pci_ports라는 컬렉션에 포함된 항목의 수를 반환합니다.
    예시: 만약 $pci_ports에 5개의 포트가 있다면, sizeof_collection $pci_ports는 5를 반환합니다.

  • set pci_ports (add_to_collection $pci_ports [get_ports CTRL*]]
    -> $pci_ports 컬렉션에 "CTRL"로 시작하는 모든 포트를 추가합니다.
    예시: 기존 $pci_ports에 "CTRL1", "CTRL2" 등의 포트가 추가됩니다.

  • set all_inputs_except_clk [remove_from collection [all_inputs] [get ports CLK]]
    -> CLK 포트를 all_inputs 컬렉션에서 제거한 후 남은 입력 포트를 all_inputs_except_clk 컬렉션에 저장합니다.
    예시: 만약 all_inputs에 IN1, IN2, CLK가 있다면, CLK를 제외한 IN1, IN2가 all_inputs_except_clk에 저장됩니다.

  • filter_collection [get_cells *] "ref name =~ AN*"
    -> "ref_name"이 "AN"으로 시작하는 셀을 필터링하여 반환합니다.
    예시: 셀 이름이 AN1, AN2, AN_CTRL인 셀들을 반환합니다.

  • get_cells * -filter "dont_touch = true"
    -> "dont_touch" 속성이 true로 설정된 셀들을 필터링하여 반환합니다.
    예시: 만약 cell1과 cell2가 "dont_touch" 속성이 true로 설정되어 있다면, 이 셀들을 반환합니다.

  • list_attributes -application -class ‹object_type>
    -> 지정된 object_type 클래스에 대한 모든 속성을 나열합니다.
    예시: list_attributes -application -class cell을 사용하면 셀 클래스에 대한 모든 속성을 나열합니다. 또한, 해당 객체 유형의 속성들을 확인하는 데 유용합니다.

profile
MJ_EE

0개의 댓글