콘텐츠로 이동

ECO 규칙

ECO 의 결과가 예측 가능하려면 판정의 근거가 규칙으로 고정되어야 한다. 같은 회로도(schematic)와 같은 기판을 넣으면 언제나 같은 마크가 나와야 하고, 마크가 왜 그렇게 나왔는지 규칙으로 설명되어야 한다.

이 문서는 그 규칙을 축별로 정리한다. 절차의 전체 모습은 ECO to PCB 란 무엇인가가 소유한다.

방향은 인자이지 기본 동작이 아니다. 정방향과 역방향은 옮기는 것도 근거도 다르므로 하나의 “동기화” 로 뭉뚱그리지 않는다. 구현되지 않은 방향을 요청하면 오류로 답한다 — 조용히 성공한 것처럼 답하지 않는다.

참조 지정자(reference designator) 하나가 부품 하나다.

멀티게이트 심볼(symbol)이 네 개 흩어져 있어도 U1 은 부품 하나다. 그러므로 핀 집합은 배치된 게이트의 핀이 아니라 부품 정의 전체의 핀을 쓴다. 게이트 하나를 아직 그리지 않았더라도 그 핀에 대응하는 패드(pad)는 기판에 있어야 하기 때문이다.

수집은 프로젝트에 등록된 회로도 전체를 순회한다 — 열려 있는 문서는 편집 중인 상태로, 닫혀 있는 문서는 상주 사본으로 읽고, 계층 시트는 따라 내려간다. 번호 매기기(annotate)와 같은 순회를 쓴다. 두 곳에 순회를 두면 “번호는 매겨졌는데 ECO 에는 안 보이는 부품” 이 생긴다.

순서기준결과
1기판 부품이 든 심볼 식별자대응 확정
2식별자가 없으면 참조 지정자폴백
어느 쪽으로도 못 찾으면회로도 쪽은 add · 기판 쪽은 delete

식별자로 대응됐는데 참조 지정자가 다르면 이름 변경이다. 실행은 부품을 지우고 다시 만드는 대신 이름만 고친다.

형태해석
라이브러리:이름그 라이브러리에서 그 이름을 찾는다
이름등록된 라이브러리를 등록 순서대로 조회해 첫 일치를 쓴다
빈 문자열미지정 — 오류다

두 번째 형태에서 여러 라이브러리에 같은 이름이 있으면 첫 일치를 쓰되 그 사실을 그 행에 표시한다. 조용히 고르면 라이브러리 등록 순서가 바뀌는 날 다른 footprint 가 실린다.

핀에 대응하는 패드가 없으면 오류이고 패드가 남으면 기구 패드이므로 오류가 아니다

부품의 핀 번호 집합과 footprint 의 패드 번호 집합을 비교한다.

상태판정
핀에 대응하는 패드가 없다오류 — 모자란 번호를 함께 답한다
패드가 남는다오류가 아니다 — 남는 수를 결과에 담는다
번호가 없는 패드세지 않는다

패드가 남는 것을 실패로 보지 않는 이유는 고정 홀·기구 패드 때문이다. 커넥터 하우징을 잡는 패드는 심볼에 핀이 없는 것이 정상이다. 반대로 핀에 패드가 없으면 그 부품은 물리적으로 배치할 수 없으므로 오류다.

마크는 footprint 지정 라이브러리 조회 핀 대조 대응 여부 이름 비교의 순서로 정해진다

마크조건
errorfootprint 미지정 · 라이브러리에서 찾지 못함 · 핀에 대응 패드 없음
add검사를 통과했고 대상 기판에 대응 부품이 없다
replace대응 부품이 있고 footprint 이름이 다르다
unchanged대응 부품이 있고 footprint 이름이 같다
delete대상 기판에만 있고 회로도에 없다

error 가 다른 마크에 앞선다. 실행할 수 없는 항목에 대해 무엇을 할지 정하는 것은 뜻이 없다.

replace 의 판정 기준은 footprint 이름 하나다. value 나 필드가 달라졌다고 부품을 다시 만들지 않는다 — 그것은 값을 고치면 되는 일이고, 다시 만들면 배치와 배선(routing)을 잃는다.

넷은 프로젝트 연결 그래프에서 온다. 파일을 다시 파싱하지 않는다. 그래프가 아직 한 번도 계산되지 않았다면 넷 목록은 비어 있고, “넷을 알 수 없다” 는 사실을 그대로 답한다 — 지어내지 않는다.

상태동작
회로도에만 있다추가
기판에만 있다제거
양쪽에 있다참조.핀 집합을 비교해 다르면 연결 변경
자동 생성 이름이고 연결이 하나 이하무시한다

마지막 줄이 실무에서 크다. 이름을 붙이지 않은 넷은 도구가 자동으로 이름을 만드는데, 그 이름은 부품 번호와 핀 번호에서 나오므로 번호가 바뀌면 이름도 바뀐다. 연결이 하나뿐인 자동 이름까지 차이로 세면 목록이 의미 없는 항목으로 덮인다.

오류와 삭제를 뺀 모든 부품의 패드를 회로도 값으로 맞춘다.

새로 더한 부품만이 아니다. 이미 기판에 있던 부품도 패드마다 넷 이름을 대조해 다른 것만 고친다. 같으면 건드리지 않으므로 비용은 실제로 바뀐 부품에만 든다.

상황처리
회로도에서 그 핀의 연결이 없어졌다패드의 넷을 해제해 미결선으로 둔다
넷 객체가 기판에 없다만든다
넷이 비게 되었다지우지 않는다 — 트랙(track)이 아직 그 넷을 가리킬 수 있다. 빈 넷의 수를 답한다

삭제를 나중에 하면 같은 참조 지정자가 부딪히고 삭제를 먼저 하면 빈자리에 새 부품이 들어간다

단계내용순서의 근거
부품 삭제참조 지정자 충돌을 막는다 — 옛 R1 을 지우기 전에 새 R1 을 넣을 수 없다
이름 변경추가보다 앞서야 같은 이름이 부딪히지 않는다
추가와 교체이 단계에서는 넷을 배정하지 않는다
넷 배정부품이 모두 제자리에 있어야 핀과 패드를 짝지을 수 있다
재구축연결성과 ratsnest 를 다시 만든다

footprint 교체는 자세를 보존한 재생성이다. 새 footprint 정의로 부품을 만들어 위치·회전·실장면(mounting side)·참조 지정자·value·링크 키를 옛 부품에서 옮기고 옛 부품을 지운다. 패드의 넷은 ④ 에서 다시 붙으며, 번호가 같은 패드만 이어진다.

단계마다 적용한 값을 다시 읽어 대조하고 어긋난 항목만 실패 목록에 남긴다

단계마다 적용한 값을 다시 읽어 대조한다. 이름을 고쳤으면 이름을 다시 읽고, 넷을 배정했으면 패드의 넷 이름을 다시 읽는다. 어긋난 항목은 실패 목록에 사유와 함께 남고, 나머지 항목은 계속 진행한다.

실행이 끝나면 전체를 다시 대조해 남은 add · replace · delete 의 수를 답한다. 정상이면 전부 0 이다.

규칙
되돌리기실행 한 번이 되돌리기 한 칸이다. 사용자에게 그것은 한 동작이기 때문이다
닫힌 대상파일에 직접 쓰는 경로에는 되돌리기가 없다. 그 사실을 실행 전에 경고한다
이력언제 무엇을 반영했는지 기록으로 남긴다

반영을 시작하기 전에 회로도 자체를 본다. 여기서 걸리면 대조로 넘어가지 않는다.

항목심각도(severity)
배정되지 않은 참조 지정자오류
중복된 참조 지정자오류
다른 시트에서 같은 지역 넷 이름오류
빈 value경고
핀이 하나뿐인 넷경고
실장 제외 부품 알림정보

항목마다 실행 가능성을 본다.

항목심각도
footprint 미지정 · 삭제 대상이 기판에 없음오류
footprint 를 라이브러리에서 찾지 못함오류
핀에 대응하는 패드 없음오류
추가·이름 변경 대상 참조 지정자가 이미 있음오류
패드가 핀보다 많음설정에 따라 경고 또는 정보
전원 넷 변경경고
넷 삭제 · 영향 핀 목록정보

항목의 상태는 그 항목이 가진 가장 높은 심각도로 정해진다. 오류가 하나라도 있으면 그 항목은 실행에서 제외된다.

대상비용
부품 수집부품 수에 비례 · 명령당 1회
라이브러리 목록파일당 1회 — 정의 본체를 읽지 않는다
footprint 정의 파싱고유 이름당 1회 — 같은 부품이 천 개여도 파싱은 한 번
핀·패드 대조집합 조회
대상 기판 읽기1회

회로도의 사용자 필드는 기판으로 함께 옮겨진다. 제조·조립 문서가 기판 쪽 자료에서 나오기 때문이다.

규칙내용
필수 필드와 사용자 필드를 식별자로 가른다사용자가 Value 를 다른 말로 바꿔도 분류가 흔들리지 않는다
게이트 어디에 적혀 있어도 그 부품의 것이다먼저 읽은 값을 지킨다. 그러지 않으면 게이트 순서가 값을 정한다
값이 바뀐 것만 반영한다되돌리기가 옛 값을 바르게 복원하려면 측정이 수정보다 앞서야 한다
기판에만 있는 필드는 지우지 않는다기판에서 적은 제조 메모가 ECO 마다 조용히 사라지면 안 된다
기판에만 있는 필드를 보고한다지우지 않는 것만으로는 사용자가 그 존재를 알 수 없다
빈 값으로 필드를 만들지 않는다“값이 없다” 와 “필드가 없다” 는 다른 사실이다
옮긴 값의 수를 답한다0 이면 아무것도 옮기지 않았다는 뜻이고, 그 사실이 보여야 한다
확인
사전참조 지정자가 전부 배정되었고 중복이 없는가
이름footprint 이름이 라이브러리 지정 형태로 적혀 있는가
이름여러 라이브러리에 같은 이름이 있다는 표시가 없는가
핀에 대응하는 패드가 없는 부품이 없는가
마크error 를 남긴 채 실행하려 하지 않는가
전원 넷 변경 경고를 확인했는가
실행되돌릴 수 없는 경로(닫힌 대상)를 고른 것이 의도인가
검증실행 뒤 남은 마크와 실패 목록을 확인했는가
필드기판에만 있는 필드 보고를 확인했는가