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을 사용하여 심볼의 핀, 도형, 텍스트를 화면에 그립니다.
회로도 요소
| 요소 | 클래스 | 설명 |
|---|---|---|
| Wire | c_sch_wire | 전기적 연결선. 두 핀 또는 넷을 연결합니다. |
| Bus | c_sch_bus | 다중 신호 버스. 여러 와이어를 하나의 굵은 선으로 그룹화합니다. |
| Junction | c_sch_junction | 와이어 교차점의 전기적 연결을 명시하는 접합점입니다. |
| Label | c_sch_label | 넷 이름 라벨. 동일 시트 내에서 같은 이름의 라벨은 전기적으로 연결됩니다. |
| HierPort | c_sch_hierport | 계층 포트. 상위/하위 시트 간의 신호 연결 인터페이스입니다. |
| SheetPin | c_sch_sheetpin | 시트 핀. HierSheet의 가장자리에 표시되는 연결 포인트입니다. |
| Dimension | c_sch_dimension | 치수선. 회로도 내 거리/크기를 표시합니다. |
| BusEntry | c_sch_busentry | 버스 진입점. 개별 와이어가 버스에 연결되는 지점입니다. |
| Bitmap | c_sch_bitmap | 비트맵 이미지. 회로도에 참조 이미지를 삽입합니다. |
| Field | c_sch_field | 필드 텍스트. Reference, Value 등 심볼의 속성 텍스트입니다. |
| Connection | c_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로 참조
HierSheet로 참조
SubSheet B (c_sch)
HierSheet로 참조
HierSheet로 참조
enterSubSheet() 규칙:
"SCH" 타입이면 직접 진입, "SCHSHEET" 타입이면 이름으로 c_sch를 검색 후 진입합니다.