설계 원칙¶
왜 pccx-lab은 5개가 아닌 1개의 레포지토리인가?¶
초기 설계에서는 시뮬레이터, 프론트엔드, UVM 브릿지, AI, 공통 라이브러리 등 5개의 개별 레포지토리로 분리하는 구조를 고려했습니다. 하지만 다음과 같은 이유로 기각되었습니다:
개발 속도: 여러 레포지토리에 걸친 변경 사항을 동기화하고 버전을 관리하는 오버헤드가 매우 큽니다.
단일 목적성: 모든 모듈이 결국 ‘pccx 프로파일링’이라는 단일한 목적을 향해 긴밀하게 협력합니다.
모듈 경계 규칙¶
단일 레포지토리의 단점(스파게티 코드)을 막기 위해, 디렉토리 기반의 엄격한 모듈 경계를 강제합니다:
core/: 순수 Rust 모듈. 외부 의존성을 최소화하며, UI 프레임워크를 import하는 것을 엄격히 금지합니다.ui/: Tauri + React 기반 모듈. 오직core/의 공개 API만 사용하여 시각화를 처리합니다.uvm_bridge/: SystemVerilog/UVM과core/의 경계. DPI-C 또는 FFI를 사용합니다.ai_copilot/: LLM 호출 래퍼 모듈. 오직core/의 트레이스 포맷(JSON 등)에만 의존합니다.
향후 분리 조건¶
특정 모듈(예: core/)이 pccx-lab 외부의 다른 프로젝트에서도 독자적으로 사용될 만큼 범용성을 갖추게 되면, 그때 crate로 퍼블리시하거나 별도 레포지토리로 분리하는 것을 검토합니다.