brunch

You can make anything
by writing

C.S.Lewis

by wangane Dec 02. 2021

인문학적 반도체_3. 반도체 설계(3)_칩 설계

3장. 반도체는 어떻게 만들어지나?

칩설계 _ Front-end Design


2. 칩 설계 단계 (Front-end Design)


두 번째 단계는 기획단계에서 세운 spec을 바탕으로 실제 chip을 설계하는 단계입니다.

이를 흔히 Front-end Design이라고 합니다.

SoC는 설계의 복잡성 때문에 흔히들 Top-down설계 방식이라고 전체적인 구조 설계를 진행한 후 Top Block 설계를 진행하고 각각의 Sub Module에 대한 설계를 진행하는 방식을 사용합니다.

[ 칩설계 순서_Front end design ]


먼저 사람이 작성하기 쉬운 언어로 동작 수준 설계를 기술하여 점점 제조공정에 사용하는 게이트 수준으로 설계하여 물리적 설계 수준인 레이아웃 순서로 설계가 진행됩니다.


반도체 설계는 크게 Front-end design단계와 Back-end design단계로 구분합니다.


상위 수준 언어로 동작을 기술하고 RTL 즉 레지스터 전송 수준을 거쳐 Gate level netlist라는 게이트 수준 설계 데이터를 생성하고 검증합니다. 여기까지를 전반부 설계 즉 Front-end design이라고 합니다.

RTL이라고 하는 레지스터 전송 수준은 게이트 수준과 비교하여 검증 시간이 짧은 반면에 검증의 정확도는 낮습니다.

Gate-Level Netlist 가 완성되면 후반부 설계 즉 Back-end design이라는 레이아웃 데이터를 생성하는 단계를 거치는데 이는 좀 더 제조 기술에 의존적입니다. 이후는 실제 칩을 제조하는 단계로 넘어가는데 Mask를 만들어 FAB에서 칩을 제조하는 단계를 의미합니다.


상위 수준 기술, High Level Description이란 컴퓨터 언어상의 상위 언어(High level Language)로 기술한다는 의미입니다. 즉 기계어나 어셈블리어가 아닌 FORTRAN이나 C언어 같은 상위 수준 언어를 말합니다.

자신이 설계하고자 하는 칩의 기능에 대한 알고리즘이 맞는지를 C 모델을 사용하여 프로그램을 짜서 실행시켜 빠른 시간 안에 검증합니다.


RTL Description이란 HDL(Hardware Description Language)이라는 하드웨어 언어를 사용하여 설계하는 것을 말합니다. 많이 사용하는 언어는 VHDLVerilog가 있습니다.

RTL은 C언어에 비해 동작에 필요한 비트(bit) 수나 클록의 개수를 정확하게 알 수 있습니다.

예를 들어 High Level Language인 시스템 C언어로 A값과 B값을 더하여 S라는 값으로 하라는 프로그램을 짜면 S=(A+B); 와 같습니다.

이를 verilog로 기술하면 아래와 같습니다.

[ 출처: 반도체 제대로 이해하기_강구창 ]


꽤 길어지고 @표시등 다른 기호들도 있습니다.

여기서 줄 3의 경우 S라는 출력은 S [0], S [1], S [2], S [3], S [4], S [5] 해서 모두 6bit를 의미합니다.

그리고 줄 9는 덧셈 동작이 1 clock안에 끝난다는 의미입니다.


RTL설계가 끝나면 설계가 올바로 되었는지 검증을 해야 합니다.

이를 Functional Verification and Testing이라고 합니다.

보통의 경우 chip 전체를 simulation 하기 전에, 각 block 별로 test bench를 만들어 simulation을 하여 검증하고, chip 전체의 simulation은 각 block이 잘 연결되었고 간단한 작업이 잘 동작하는지 정도를 검증합니다.

[ Test bench를 이용한 RTL 검증 환경 ]


Test bench에서 mismatches 가 나왔으면 Waveform이라는 tool을 이용하여 검증을 합니다.

또는 FPGA(Field Programmable Gate Array)를 사용하여 prototype을 만들어서 Function을 검증하는 경우도 많이 있습니다. 대개 외부 도입 IP에 대해 FPGA를 이용해서 검증하는 경우가 대부분입니다.

[ FPGA를 이용한 검증 환경 ]


Logic SynthesisRTL 코드를 Gate level netlist로 바꾸어 주는 과정을 의미합니다.

합성 툴은 대부분 Synopsys의 Design Compiler라는 tool을 많이 사용합니다.

[ Logic Synthesis 과정 ]


삼성 등 FAB 공정에서 제공하는 library와 설계자의 RTL, 그리고 timing constraint라고 하는 SDC을 입력해 주고 tool을 돌리면 gate level netlist가 나오게 됩니다.

FAB에서 주는 design kit에는 합성에 사용될 gate 들의 동작 및 속도 등이 들어 있습니다.

이를 Software의 compile과 비유를 하면 반도체 공정에서 주는 design kit은 각 CPU 마다 존재하는 ISA(instruction set architecture)라고 보면 되고 RTL은 C source code라고 생각하면 됩니다.

 C source code를 compile 하게 되면 instruction sequence, 즉 기계어가 나오게 되는데 그것이 합성에서는 gate들의 연결로 결과가 나타나게 됩니다.


전체 Synthesis 과정을 한 번 더 도식화해서 보면, RTL description, Verilog 또는 VHDL로 기술된 언어가 RTL 코드입니다. 이 RTL description 자체가 Gate level description(netlist)으로 바뀌는 과정을 Synthesis 과정이라고 할 수 있습니다.

즉 RTL 코드가 팹 공정에서 제공하는 라이브러리에 매핑돼서 최종적으로 netlist가 나오는 과정이라고 할 수 있습니다.

[ Logic Synthesis 과정 ]


Synthesis를 하는 데 있어서 인풋과 아웃풋 파일을 보시면, 먼저 Synthesis를 할 때 인풋 파일은 가장 중요한 파일인 Verilog 혹은 VHDL로 설계한 HDL의 코드가 있어야 합니다. 그다음에는 TSMC 혹은 삼성에서 제공하는 셀 라이브러리가 필요합니다. 그다음에는 SDC라는 파일이 필요합니다.

SDCSynopsys Design Constraints의 약자로 이 디자인이 어떤 조건에서, 어떤 Clock frequency에서 동작해야 하는지, 그러한 timing Constraints 파일입니다.

이 3가지, HDL 코드와 라이브러리 그리고 SDC를 입력으로 넣어서 Synthesis 툴을 동작시키면 Synthesis 결과를 얻을 수 있습니다.


Synthesis를 마치면 아웃풋 파일은 Synthesized netlist 혹은 Gate level netlist file이 나옵니다. 또한 SDF라고 Standard delay format의 약자인데 딜레이를 고려해서 시뮬레이션을 돌리기 위한 파일이 나옵니다. 세 번째 아웃풋 파일은 Reports입니다. Synthesis 합성이 되고 나면  칩의 면적이나 전체 설계 크기가 어느 정도인지 알 수 있습니다. 그리고 회로가 동작할 때 타이밍적으로 문제가 없는지 등을 나타내는 Timing정보power consumption정보를 알 수 있습니다.


• Synthesis Input files
  - HDL (Verilog)
  - Cell Library (eg. Samsung 28nm library)
  - SDC (Synopsys Design Constraints)
• Synthesis Output files
  - Gate level netlist (Gate level Verilog file)
  - SDF(Standard Delay Format)
  - Reports (area, timming, power)


합성 후 Gate level Netlist를 가지고 여러 가지 신호를 입력하여 Simulation 하는 Gate level Simulation을 진행합니다. 이런 simulation을 보통 Pre-sim이라고 부릅니다.

게이트 수준의 netlist를 가지고 시뮬레이션을 하면 셀의 크기, 동작속도, 동작 시간 등을 알 수 있어 RTL 코드로 시뮬레이션하는 것보다 더 정확한 결과를 얻을 수 있습니다.


물론 시뮬레이션하는데 걸리는 시간은 RTL 코드에서보다 훨씬 오래 걸립니다.

검증은 Synopsys의 Formality라는 tool을 많이 사용하고 있습니다.


이상이 주로 Fabless회사에서 진행하는 Front-end Design 과정입니다.

이를 다시 순서도로 설명하면 아래와 같습니다.












이전 14화 인문학적 반도체_3. 반도체 설계(2)_Planning
브런치는 최신 브라우저에 최적화 되어있습니다. IE chrome safari