ECO (Engineering change order)

ECO라고 하는 것은 일반적으로 chip이 나오고 그 이후에 칩의 버그가 별견되어서 수정이 필요할 경우에 쓰이는 용어가 되겠다. ECO가 없이 한방에 설계한 그대로 칩이 나오게 된다면 상당히 이상적인 경우인데, 일반적으로 그러한 경우는 매우 드물고 대개 엔지니어링 샘플이 나오고 나서 하드웨어를 테스트하고 그 때 발견된 오작동의 원인을 분석해서 어떻게 ECO할지 결정하게 된다.

흔한 이론으로는 원래 칩이 설계될 때 ECO를 대비하여 spare logic(spare gates)을 추가해 놓고 만일 ECO를 하게 된다면 칩을 새로 찍어내야 하는 수고 없이 단지 이미 찍혀진 spare logic을 재활용해서 결과를 얻게끔 하고 싶어한다. 문제는 spare logic이 달라붙게 되면 추가적인 전력 소비가 일어나게 되는데, 반면 ECO를 하려고 할 때 주변에 여분의 logic이 없어서 온전히 chip을 새로 설계해야하는 상황에 봉착하게 되면 비용이 어마어마하게 들게 되므로, spare logic을 붙이게 된다.

spare logic을 활용해서 bug에 대한 patch가 가능한 것이 확인이 되면 ‘metal change’라는 것을 하게 된다. 이것은 wire의 역할을 하는 metal이 새롭게 깔려진다는 뜻이다. 즉, 원래 설계되었던 배선의 패턴과 다른 패턴이 칩의 (metal) layer에 깔리게 된다는 거다. 그러니까 칩을 새로 찍지 않고 단지 배선을 변경함으로써 원하는 디버깅을 한다는 말이다. 그렇게 함으로써 칩 제작 비용을 줄인다는 뜻이다.

이것을 구체화하자면, 1) 엔지니어링 샘플을 뽑는다. 이것을 이용하여 하드웨어 테스트를 한다. 2) 문제가 발견되면 그 문제가 어디서 발생했는지 찾아본다. RTL 수준에서의 변경이 요구된다면 기존의 패턴과 어떻게 달라져야하는지 분석한다. 단순히 metal layer의 변경으로 해결 가능하다면 일단 한숨 내려놓을 수 있다. 3) metal layer의 change로 불가하다면 팀 전체가 어두운 얼굴을 할 수 밖에 없다. 누군가 대형사고를 쳤다고 볼 수도 있고.

칩 설계에 어떻게든 발을 담구고 있는 엔지니어로서 최종적으로 만들어진 칩이 ECO에 들어가야 한다면 일단 마음에 큰 부담이 되고 그것이 metal layer change로도 해결이 안된다는 이야기를 듣게 되면 ‘대형사고’인 거다. 그러나 뜻하지 않게 한방에 변경없이 칩을 찍어내도 된다면 이것은 엄청나게 고무적인 것이다. 비용을 크게 절감하게 될 뿐 아니라 고객에게 delivery되는 시점이 크게 앞당겨지게 되는 것이니까.