Schematic - 회로도 엔진

59개 헤더 파일 - 심볼, 와이어, 넷리스트, 계층 구조의 핵심 엔진

핵심 클래스

c_schematic

전체 회로도를 관리하는 최상위 클래스입니다. 다중 시트, 심볼 라이브러리, 넷리스트를 총괄합니다.

c_sch

서브시트 문서 객체 (TypeName: "SCH"). HierSheet로 렌더링되며, 선택 시 selection에 들어오는 것은 이 객체입니다.

c_sch_sheet

아이템 컨테이너 (TypeName: "SCHSHEET"). 와이어, 심볼, 텍스트 등 실제 회로도 요소들을 담는 컨테이너입니다.

c_sch_item

모든 회로도 요소의 기본 클래스입니다. c_geo_item을 상속하며, 회로도 특화 속성(넷, 연결)을 추가합니다.

c_lib_symbol

심볼 라이브러리 항목을 나타냅니다. 핀, 도형, 필드 정보를 포함하며, 회로도에 배치될 때 인스턴스화됩니다.

c_lib_painter

심볼 렌더링 전용 Painter입니다. GAL을 사용하여 심볼의 핀, 도형, 텍스트를 화면에 그립니다.

회로도 요소

요소클래스설명
Wirec_sch_wire전기적 연결선. 두 핀 또는 넷을 연결합니다.
Busc_sch_bus다중 신호 버스. 여러 와이어를 하나의 굵은 선으로 그룹화합니다.
Junctionc_sch_junction와이어 교차점의 전기적 연결을 명시하는 접합점입니다.
Labelc_sch_label넷 이름 라벨. 동일 시트 내에서 같은 이름의 라벨은 전기적으로 연결됩니다.
HierPortc_sch_hierport계층 포트. 상위/하위 시트 간의 신호 연결 인터페이스입니다.
SheetPinc_sch_sheetpin시트 핀. HierSheet의 가장자리에 표시되는 연결 포인트입니다.
Dimensionc_sch_dimension치수선. 회로도 내 거리/크기를 표시합니다.
BusEntryc_sch_busentry버스 진입점. 개별 와이어가 버스에 연결되는 지점입니다.
Bitmapc_sch_bitmap비트맵 이미지. 회로도에 참조 이미지를 삽입합니다.
Fieldc_sch_field필드 텍스트. Reference, Value 등 심볼의 속성 텍스트입니다.
Connectionc_sch_connection연결 정보. 넷 이름, 버스 멤버 등 전기적 연결 메타데이터입니다.

ERC - 전기 규칙 검사

c_erc.h - Electrical Rules Check는 회로도의 전기적 오류를 자동으로 검출합니다.

검사 항목

  • 미연결 핀 (Unconnected pins)
  • 핀 타입 충돌 (Output-Output conflict)
  • 전원 핀 미연결
  • 중복 Reference
  • 미사용 넷 라벨
  • 계층 포트 불일치

결과 처리

ERC 결과는 마커(marker)로 회로도에 표시됩니다. 각 마커는 심각도(Error/Warning/Info)를 가지며, 사용자가 개별적으로 확인하거나 무시할 수 있습니다.

Connection Graph - 넷 연결 분석

c_connection_graph.h는 회로도의 모든 전기적 연결을 그래프로 분석합니다. 와이어, 핀, 라벨, 포트를 추적하여 넷리스트를 생성하고, 연결 상태를 검증합니다.

// Connection Graph 동작 흐름
1. 모든 시트의 연결 가능 요소 수집
2. 와이어/핀/라벨 기반 연결 그래프 구축
3. 넷 이름 전파 (라벨 → 와이어 → 핀)
4. 계층 포트를 통한 시트 간 연결 해석
5. 넷리스트 생성 및 ERC 데이터 제공

계층 구조 (Hierarchy)

ImEDA 회로도는 다중 시트 계층 구조를 지원합니다. 각 시트는 독립적인 c_sch 객체이며, HierSheet를 통해 상위 시트에서 참조됩니다.

Root Sheet (c_sch)
최상위 회로도 시트
SubSheet A (c_sch)
HierSheet로 참조
SubSheet B (c_sch)
HierSheet로 참조
enterSubSheet() 규칙: "SCH" 타입이면 직접 진입, "SCHSHEET" 타입이면 이름으로 c_sch를 검색 후 진입합니다.