[RTL] 공정 산포(Process Variation)와 Setup/Hold Time의 상관관계

RTL 엔지니어로서 합성을 돌리거나 STA(Static Timing Analysis)를 하다 보면 PVT (Process, Voltage, Temperature) 조건이라는 말을 귀에 딱지가 앉도록 듣게 됩니다.

“Worst Case에서 Setup 잡았어?”, “Best Case에서 Hold는 괜찮아?”

설계만 하시는 분들은 이 ‘Process’를 단순히 툴에서 설정하는 옵션 정도로 생각하기 쉽습니다.

이 글에서는 공정의 Variation이 도대체 어떻게 설계의 타이밍(Timing)을 위협하는지, 두 분야를 엮어서 설명해 보려 합니다.

이상과 현실

우리가 Verilog로 짠 코드는 논리적으로 완벽합니다. 하지만 이를 웨이퍼 위에 실제로 구현하는 것은 다른 문제입니다.

반도체 공정(8대 공정)을 거치면서 수많은 변수가 발생합니다. 이 미세한 차이를 공정 산포(Process Variation)라고 합니다. 공정 산포는 크게 트랜지스터를 만드는 FEOL(Front-End-Of-Line)과 배선을 연결하는 BEOL(Back-End-Of-Line) 두 곳에서 모두 발생합니다.

(1) FEOL: 트랜지스터 성능의 변동

  • Photo/Etching (L의 변동): 빛의 파장 한계나 식각 가스의 흐름 불균일로 인해 트랜지스터의 Gate Length가 의도보다 조금 길거나 짧게 깎일 수 있습니다. Gate Length는 속도와 직결됩니다.
  • Ion Implantation (Vth의 변동 – RDF): 최근 미세 공정에서 가장 핫한 이슈는 RDF(Random Dopant Fluctuation)입니다. 채널 영역에 들어가는 도펀트(불순물)의 개수가 통계적으로 몇 개 차이 나는것만으로도 문턱 전압이 크게 출렁입니다.

(2) BEOL: 배선 지연(RC Delay)의 변동

  • CMP (Deposition & Polishing): 금속 배선을 깔고 평탄화하는 CMP 공정에서, 패턴의 밀도에 따라 어떤 곳은 더 많이 깎이고(Erosion), 어떤 곳은 덜 깎입니다(Dishing).
  • 이로 인해 금속 배선의 단면적이 변하면 저항(R)이 변하고, 절연막 두께가 변하면 커패시턴스(C)가 변합니다. 즉, Interconnect Delay가 예측과 달라집니다.

물리학: 변수(Variation)가 속도를 만든다

RTL 엔지니어에게 중요한 건 “그래서 트랜지스터가 빨라져, 느려져?”입니다. MOSFET의 전류 식을 아주 간단히 봅시다. (Saturation 영역)

전류가 많이 흐른다는 것은, 커패시터를 빨리 충전한다는 뜻이고, 즉 동작 속도가 빠르다(Delay가 적다)는 뜻입니다.

  1. Gate Length 감소: 식각이 과하게 되어 채널 길이가 짧아지면? -> 전류 증가 -> 속도 빨라짐 (Fast)
  2. Threshold Voltage (Vth) 감소: 도핑이 덜 되어 문턱 전압이 낮아지면? -> 전류 증가 -> 속도 빨라짐 (Fast)

반대의 경우는 속도가 느려짐(Slow)을 의미하겠죠.

Corner Case

팹(Fab)에서는 웨이퍼 내의 모든 칩이 정규분포(Gaussian Distribution) 안에 들어오도록 관리합니다. 하지만 통계적으로 양쪽 끝단에 있는 칩들도 분명 존재합니다. 이를 Corner라고 부릅니다.

  • TT (Typical-Typical): NMOS, PMOS 모두 평균적인 속도. (가장 이상적)
  • SS (Slow-Slow): 공정 변수로 인해 NMOS, PMOS 모두 느리게 만들어진 경우.
  • FF (Fast-Fast): 공정 변수로 인해 NMOS, PMOS 모두 빠르게 만들어진 경우.

RTL 타이밍과의 연결: Setup vs Hold

이제 이 물리적 현상이 우리 Timing Report에 어떻게 찍히는지 봅시다.

(1) SS Corner (느린 칩) -> Setup Time Violation

공정 문제로 트랜지스터가 느리게 만들어졌습니다. Data가 Flip-Flop에서 출발해서 combinational logic을 거쳐 다음 Flip-Flop까지 가는데 시간이 너무 오래 걸립니다.

  • 현상: clock이 도착했는데 데이터가 아직 도착을 안 함.
  • 결과: Setup Time Violation. 동작 주파수를 낮추지 않으면 칩이 동작하지 않음.

(2) FF Corner (빠른 칩) -> Hold Time Violation

공정 문제로 트랜지스터가 너무 빠릅니다. Data가 너무 순식간에 다음 Flip-Flop으로 넘어가 버립니다.

  • 현상: 현재 clock에서 잡아야 할 데이터를 잡기도 전에, 다음 데이터가 덮어씌워짐.
  • 결과: Hold Time Violation. Critical Failure 입니다, 주파수를 낮춰도 timing 문제가 해결되지 않기 때문에 buffer를 삽입하는 등 hold fix 과정이 필요합니다.

결론: 엔지니어의 역할

우리가 합성 툴(Design Compiler 등)에서 마진을 주는 이유가 바로 이것입니다.

  • RTL 설계자는 SS Corner에서도 동작할 수 있도록 로직 깊이(Logic Depth)를 줄여 Setup Margin을 확보해야 합니다.
  • 동시에 FF Corner에서도 데이터가 너무 빨리 새지 않도록 버퍼 등을 통해 Hold Margin을 방어해야 합니다.

반도체 공정의 불완전함을 이해하면, 왜 우리가 타이밍 제약(Constraints)을 이렇게 빡빡하게 주는지 이해할 수 있습니다. 결국 좋은 칩(Yield)을 만들기 위해 설계와 공정이 보이지 않는 줄다리기를 하고 있는 셈이죠.

참고: anysilicon

Similar Posts