리팩터링을 통한 디자인 재구성
전통적인 의미에서 리팩터링(refactoring)이란, 기존 설계(프로그래밍에서는 기존 코드)를 해당 설계(또는 코드)의 기능은 바꾸지 않은 채 구조를 재정비하는 작업을 말합니다. PCB 설계 관점에서는, 다음과 같은 다양한 상황에서 어떤 형태로든 리팩터링이 유익하고 시의적절한 해결책이 될 수 있습니다:
-
부품이 단종되어 기능적으로 동등한 서브회로로 대체해야 하는 경우. (Show Me)
-
회로도 설계를 더 큰 설계에서 사용할 서브회로로 만들려는 경우. (Show Me)
-
기존 회로도 서브시트를 향후 설계 전반에서 재사용할 수 있도록 디바이스 시트로 만들려는 경우. (Show Me)
-
기존 디바이스 시트를 현재 설계에 맞게 로컬화하고 사용자 정의해야 하는 경우. (Show Me)
-
기존 서브회로 일부를 다른 시트로 옮겨야 하는 경우. (Show Me)
Altium Designer는 여러 기능을 제공하며, 이들이 함께 Design Refactoring 기능을 구성하여 요구사항에 따라 설계를 재구성할 수 있는 최대한의 유연성을 제공합니다.
부품을 시트 심볼로 변환
이 기능은 현재 문서의 부품을 시트 심볼로 변환합니다. 기존 부품이 단종되어 별도 시트에 정의된 기능적으로 동등한 서브회로로 대체해야 할 때 이상적입니다.
부품을 마우스 오른쪽 버튼으로 클릭한 다음 컨텍스트 메뉴에서 Part Actions » Convert Part To Sheet Symbol 명령을 선택하면 부품 심볼이 시트 심볼로 변환됩니다. 연결성은 유지되며, 시트 엔트리는 원래 핀 이름을 기준으로 이름이 지정되고 I/O Type는 원래 핀의 전기적 타입을 반영하도록 설정됩니다.
시트 심볼의 Designator 는 처음에 원래 부품의 설계자(Designator)로 설정되며, File Name is 는 처음에 부품의 코멘트 텍스트로 설정됩니다.
필요한 하위(Child) 시트가 이미 존재한다면, 시트 심볼의 File Name 를 해당 시트를 가리키도록 변경합니다. 존재하지 않는다면, 시트 심볼을 마우스 오른쪽 버튼으로 클릭하고 Sheet Symbol Actions » Create Sheet From Sheet Symbol 명령을 선택하여 서브시트를 빠르게 생성할 수 있습니다. 이 경우 심볼의 시트 엔트리에 대응하는 포트가 새 서브시트에 배치되며, 대체 서브회로를 정의하고 연결할 준비가 완료됩니다.
부품을 새 서브시트로 푸시
유사한 결과를 얻는 또 다른(그리고 더 빠를 수 있는) 방법은 필요한 부품을 마우스 오른쪽 버튼으로 클릭한 다음 Part Actions » Push Part To Sheet 명령을 선택하는 것입니다. 이 명령은 현재 문서의 부품을 새 서브시트로 푸시하여, 원래 부품을 해당 시트를 참조하는 시트 심볼로 대체합니다. 기본적으로 다음 단계가 수행됩니다:
-
부품이 복사됩니다.
-
원래 부품이 시트 심볼로 변환되며, 이때 Designator 는 원래 부품의 설계자로 설정되고 File Name 는 <OriginalPartComment>.SchDoc로 설정됩니다. 또한 연결성은 유지되며, 시트 엔트리는 원래 핀 이름을 기준으로 이름이 지정되고 I/O Type는 원래 핀의 전기적 타입을 반영하도록 설정됩니다.
-
시트 심볼에서 새 회로도 시트가 생성되며, 심볼의 File Name 값으로 이름이 지정됩니다.
-
원래 부품의 복사본이 시트 중앙에 붙여넣어지며, 시트 심볼의 시트 엔트리에 대응하는 포트가 배치되고 부품의 핀에 배선됩니다.
그런 다음 필요에 따라 해당 부품을 삭제하고 기능적으로 동등한 회로로 대체할 수 있습니다.
Push Part To Sheet 명령을 사용하면 초기 부품이 빠르게 시트 심볼로 변환되고, 새로 생성된 시트에 그 부품의 복사본이 붙여넣어지며,
해당 심볼이 그 시트를 참조하게 됩니다.
부품을 포트로 변환
이 기능은 현재 문서의 부품을 포트 집합으로 변환하는 데 사용됩니다. 전원 공급 장치나 위성 보드(satellite board) 같은 기존의 독립형 서브 설계를, 더 큰 단일 보드 설계에서 사용할 서브회로로 만들고자 할 때(예: 제조 비용 최소화 목적) 이상적입니다. 이는 앞 절(컴포넌트를 더 하위 레벨의 서브회로로 대체)과 반대 과정입니다. 즉, 서브회로를 상위 레벨 설계에 ‘꽂아 넣어’ 계층 구조에서 상위 지점과 연결할 수 있도록 만드는 과정입니다.
부품을 마우스 오른쪽 버튼으로 클릭한 다음 컨텍스트 메뉴에서 Part Actions » Convert Part To Ports 명령을 선택하면 부품 심볼이 포트 집합으로 변환됩니다. 연결성은 유지되며, 포트는 원래 핀 이름을 기준으로 이름이 지정되고 I/O Type는 원래 핀의 전기적 타입을 반영하도록 설정됩니다.
Convert Part To Ports 명령을 사용하면 부품을, 서브회로를 상위 레벨 설계에 연결하는 포트로 빠르게 대체할 수 있습니다.
그 다음, 관련 상위(Parent) 시트에 시트 심볼을 추가하여 서브회로의 계층 삽입을 완료합니다. 방법은 다음과 같습니다:
-
필요한 상위 시트를 활성화합니다.
-
Design » Create Sheet Symbol From Sheet 명령을 사용합니다.
-
Choose Document to Place 대화상자에서(부품에서 변환되어 생성된 포트를 포함하는) 문서를 선택합니다.
-
시트 심볼이 커서에 나타납니다. 시트 내에서 필요한 위치에 배치한 다음 클릭하여 배치를 완료합니다.
시트 심볼은(자신의 File Name 속성을 통해) 하위 시트를 참조하며, 하위 시트의 포트에 대응하는 시트 엔트리를 가집니다.

Create Sheet Symbol From Sheet 명령을 사용하면 시트 심볼을 빠르게 추가하여 서브회로를 설계 계층에 손쉽게 연결할 수 있습니다.
회로도 시트를 디바이스 시트로 변환
어느 시점에서는 재사용을 위한 설계 개념이 더 높은 추상화 수준으로 확장되어야 합니다. 만약 컴포넌트 수준에서 멈춘다면, USB 인터페이스나 전압 레귤레이터처럼 유사한 기능을 포함하는 각 설계는 말 그대로 ‘바퀴를 다시 발명’하게 됩니다. 이때 디바이스 시트가 등장합니다. 즉, 특정 회로 기능을 제공하도록 설계된 회로도 시트입니다. 디바이스 시트를 사용하면 전통적인 복사-붙여넣기 방식에 수반되는 위험을 제거할 수 있습니다. 또한 설계 노력의 반복을 없애는 동시에, 향후 설계에서 재사용할 수 있는 설계 콘텐츠의 수준을 높여 줍니다.
리팩터링 도구 모음의 일부로, Schematic 편집기는 기존의 표준 회로도 시트를 다른 설계에서 재사용할 수 있도록 디바이스 시트로 빠르게 변환할 수 있게 해줍니다.
기존 회로도 시트를 디바이스 시트로 변환하려면:
-
설계 계층에서 관련 상위 페이지에 있는, 필요한 시트를 참조하는 시트 심볼을 찾습니다.
-
시트 심볼을 선택하고 메인 메뉴에서 Edit » Refactor » Convert Selected Schematic Sheet To Device Sheet 명령을 선택합니다. Convert Schematic Sheet to Device Sheet 대화상자가 나타납니다. 새로 생성될 디바이스 시트를 저장할 대상 위치와 변환 범위(현재 시트 심볼만 업데이트할지, 설계 공간 또는 활성 프로젝트에서 관련된 모든 시트 심볼을 업데이트할지)를 선택합니다. 후자는 특히 멀티 채널 설계에서 유용한데, 동일 서브회로가 여러 인스턴스로 존재하기 때문입니다.
Convert Schematic Sheet to Device Sheet 대화상자에서 변환 세부 정보를 지정합니다.
-
OK를 클릭합니다. 시트 심볼이 디바이스 시트 심볼로 변환되고, 회로도는 지정한 디바이스 시트 위치로 이동됩니다.
원래 시트 심볼의 속성은 디바이스 시트 심볼에 상속됩니다.
디바이스 시트를 회로도 시트로 변환
디바이스 시트는 기능성 서브회로를 캡처하여 설계 간에 재사용할 수 있게 해줍니다. 하지만 특정 설계를 위해 기존 서브회로를 수정해야 할 필요가 있을 수 있습니다. 디바이스 시트 자체를 수정하는 대신, Schematic 편집기는 디바이스 시트의 복사본을 만들어 해당 회로를 표준 회로도 시트에서 사용할 수 있도록 해줍니다. 이를 통해 원본 디바이스 시트는 그대로 유지된다는 점을 확신하면서, 현재 설계 요구사항에 맞게 로컬 복사본을 수정할 수 있습니다.
기존 디바이스 시트를 회로도 시트로 ‘변환’하려면:
-
필요한 디바이스 시트를 참조하는 디바이스 시트 심볼을 찾습니다.
-
디바이스 시트 심볼을 선택하고 메인 메뉴에서 Edit » Refactor » Convert Device Sheet To Schematic Sheet 명령을 선택합니다. Convert Device Sheet to Schematic Sheet dialog가 나타납니다. 새로 생성될 회로도 시트를 저장할 대상 위치와 변환 범위(현재 디바이스 시트 심볼만 업데이트할지, 활성 프로젝트에서 관련된 모든 디바이스 시트 심볼을 업데이트할지)를 선택합니다.
Convert Device Sheet to Schematic Sheet 대화상자에서 변환 세부 정보를 지정합니다.
-
OK를 클릭합니다. 디바이스 시트 심볼이 시트 심볼로 변환되며, 디바이스 시트의 사본이 지정된 위치에 표준(보호되지 않은) 시트로 로컬에 저장됩니다. 시트 심볼은 이 로컬 시트를 참조합니다.
변환 후 로컬 회로도 시트가 Projects 패널에서 이전 디바이스 시트를 대체합니다.
원래 디바이스 시트 심볼의 속성은 시트 심볼이 상속합니다.
선택한 하위 회로를 다른 시트로 이동
설계가 발전함에 따라, 해당 설계를 구성하는 소스 회로도 시트의 내용은 재배치가 필요할 수 있습니다. 회로의 특정 부분은 별도의 시트에서 더 잘 ‘읽힐’ 수 있고, 또는 시트가 과도하게 복잡해져(그리고 읽기 어려워져!) 일부 회로를 추가/다른 시트로 옮기면 도움이 될 수 있습니다.
또 다른 리팩터링 기능은 시트에서 하나 이상의 객체를 선택한 뒤, 그 선택 항목을 다른 시트로 이동하는 기능입니다. 방법은 다음과 같습니다.
-
먼저 이동하려는 회로를 선택합니다.
-
마우스 오른쪽 버튼을 클릭하고 컨텍스트 메뉴에서 Edit » Refactor » Move Selected Subcircuit to Different Sheet 명령을 선택합니다. Choose Destination Document 대화상자가 열리며, 여기서 대상 회로도 시트를 지정할 수 있습니다.
-
OK를 클릭합니다. 선택한 시트가 활성화되고, 선택한 하위 회로가 커서에 떠 있는 상태로 나타납니다.
-
필요에 따라 시트에서 회로의 위치를 잡은 다음 클릭하여 배치합니다. 배치가 완료되면 해당 회로는 원래 시트에서 제거됩니다.
-
이동된 회로에 하나 이상의 기존 시트 심볼이 포함되어 있으면, 해당 심볼이 참조하는 하위 회로도 시트(들)는 Projects 패널에 반영된 설계 계층에서, 그 시트 심볼이 이동된 시트 아래로 이동하여 배치됩니다. 새 시트로 이동하는 경우, 설계 계층에 올바르게 들어가도록 관련 부모 페이지에 시트 심볼을 추가하여 해당 시트를 적절한 위치에 배치하십시오.


