- STA란? -

 

(Static Timing Analysis)

 - timing violation에 대한 모든 path를 확인하여 logic의 timing을 검증하는 방법입니다.

 

 

 

STA를 하는 이유

 

- Clock이 들어갈 때 즉각적으로 rising이나 falling이 되는 것이 이상적이지만 실제로는 기울어져 들어가게 됩니다.

   → Function 적으로 문제가 없을지라도 timing이 맞지 않으면 불안정한 출력 값이 나오게 됩니다.                            

 

 

 

Timing path

 

- STA 진행 시 logic을 timing path로 나누어 검증

- timing path를 구성하는 요소

  1) Start point 

      : timing path의 시작 지점. start point는 input port나 register의 clock pin 이어야 합니다.

  2) Combinational logic 

      : memory나 register 등이 아닌 buffer, AND, OR로 이루어진 logic입니다.

  3) End point 

      : timing path의 끝 지점. end point는 output port나 register의 input pin 이어야 합니다.

 

PATH1. input port → register input pin

PATH2. register clock pin → register input pin

PATH3. register clock pin → output port

PATH4. input port → output port

 

 

 

Path의 종류

 

- Clock path

    : 하나 이상의 buffer나 inverter를 거치는 path

- Asynchronous path

    : path가 reset에서 시작되거나 다른 종류의 clock을 사용하는 것과 같은 비동기 path

- Multicycle path

    : capture가 2 cycle 이상의 주기에서 걸리도록 설계된 path

- False path

    : timing constraint를 충족하는 데 필요하지 않는 path

       연결된 2개의 mux가 있다고 가정하면 select에 따라 한 개의 mux는 동작하지 않을 수 있습니다.

          하지만 tool에서는 동작하지 않는 mux의 path도 고려하기 때문에

          이러한 path들을 false path 지정하여 timing을 보지 않도록 해야 합니다.

 

  • Maximum delay : 가장 최악의 조건에서의 delay (최장 경로, delay가 큰 cell 통과 등등..)
  • Minimum delay : 가장 최선의 조건에서의 delay (최단 경로, 최적화된 path, delay가 작은 cell 등등..)

 

 

 

Timing violation

 

- Hold violation : data가 input으로 들어온 후 clock이 너무 빠르게 transition 될 경우 발생하는 violation

- Setup violation : clock이 data 보다 빠르게 들어와 data의 진행 시간을 놓쳤을 때 발생하는 violation

 

 

 

반응형

- OCC란? -

 

(On-chip Clock Controllers)

- 외부 장치(ATE)에서 오는 clock을 제어하기 위한 clock controller

- 2개의 clock이 필요한 at-speed test 진행 시 사용됩니다.

 

 

 

At-speed test

 

- Logic을 기능적으로 test 할 때(SCAN, LBIST) 원래 동작하는 clock보다 느린 clock을 사용하여 test 하게 됩니다.

  → 하지만 transition delay fault를 test 할 때는 실제 logic이 동작하는 속도의 clock으로 test를 진행해야 합니다.

  → 실제 logic의 동작 속도로 test 하는 것을 at-speed test라고 합니다.

 

 

느린 clock으로 test를 진행하는 이유

- dynamic power의 손실을 줄이기 위해

 

 

transition delay test에서 at-speed test가 필요한 이유

- stuck at fault를 test 할 때는 delay와 상관없이 값의 고착만 확인하면 되기 때문에 clock의 속도는 의미가 없습니다.

  하지만 transition delay fault는 delay를 test 하기 때문에 실제 logic의 동작 속도로 test를 진행해야 합니다.

 

 

 

PLL clock (Phase-Locked Loop)

 

- Clock의 위상이 흔들리지 않게 고정시켜 줍니다.

  → clock의 위상이 흔들리지 않게 함으로서 clock을 안정화 시켜주고 품질을 높여줍니다.

  → 입력으로 받은 clock의 주파수를 chip에서 사용할 주파수로 바꿔 줄 수 있습니다.

 

 

 

Scan chain

 

- Logic을 test 할 때 test data를 shift 하기 위하여 사용되는 설계 구조

- 여러 개의 Scan flip-flop이 연속적으로 연결되어 형성됩니다.

- 처음 flip-flop의 input은 data를 받고 마지막 flip-flop의 output은 data를 추출하는 데 사용됩니다.

 

 

 

OCC구조

Digital Test Architectures - ppt download (slideplayer.com)

- SE에 1을 주면 register에 0 shift

- SE에 0을 주면 register에 1 shift

 

  Q3 Q2 Q1  
SE = 1 0 0 0  
SE = 0 1 0 0  = PLL clock
  1 1 0  = PLL clock
  1 1 1  
SE = 1 0 1 1  

1. SE에 1을 주고 flip flop을 모두 0으로 채웁니다.

2. flip flop에 0이 모두 채워졌을 때 SE에 0을 주게 되면 PLL clock이 딱 2번만 들어가게 되는 구조입니다. (capture)

 

 

반응형

- LEC -

 

(Logic Equivalance Check)

- 기존 netlist와 logic 추가 이후 변경된 netlist의 function이 동일한지 검증하는 단계입니다.

 

 

 

LEC를 하는 이유

 

- chip 설계 중 기능이 변경되면 chip 전체가 쓸모 없어지기 때문에  LEC를 통해 function 적인 부분을 test 해야 합니다.

  * RTL code 합성 시 진행하는 optimization이나 DFT logic 삽입, PnR 등을 진행하다 보면 function 적으로 바뀌어 버릴 수 있습니다. 

- 기술이 발전으로 logic의 복잡성이 증가함에 따라 LEC는 logic의 function 적인 부분에 있어서 중요한 역할을 합니다.

 

 

 

LEC 방법

 

- Logic을 test 하기 위해 gate simulation을 하게 되면 많은 test vector가 필요합니다.

  → Test vector는 입력이 될 수 있는 모든 경우의 수를 포함시켜 만들 가능성이 매우 적습니다.

  따라서 Logic Equivalance Check는 전체 logic을 simulation 하는 것이 아닌

      key point를 이용하여 해당 부분의 출력을 비교합니다.

 

 

 

 

LEC의 3가지 단계

 

- Setup

- Mapping

- Compare

 

 

Setup

 

- 원래 logic과 수정된 logic을 지정하여 어떤 design들을 비교할 것인지 결정

   (ex) Gate Level Netlist vs PnR Netlist)

- blackbox의 specification 지정

- design의 clock info, power info 등을 지정

- 만약 DFT netlist와의 LEC라면 DFT mode를 제어하는 port들의 constraint도 추가해야 합니다. 

setup

 

 

Mapping

 

- 각 logic에서 비교할 point를 mapping(연결)해 주는 단계입니다.

  * 두 design 중 하나의 design에만 존재할 경우 mapping 하지 않습니다. (unmatched)

 

 

Verify

 

- mapping 된 point(key point)에서의 equivalent를 확인하는 단계입니다.

 

verify

 

 

 

LEC report

 

- Non-equivalence report

- Unmated report

- mapping report

 

 

 

언제 LEC를 해야 하나?

 

- RTL vs Gate level Netlist

- Gate Level Netlist vs DFT Netlist

- DFT Netlist vs PnR Netlist

 

 

 

LEC를 했을 때 Gate Simulation 보다 좋은 점

 

- 비교적 빠르게 확인하여 수정 가능 (Run time 감소)

- Simulation에 대한 의존도 감소

- Test vector가 필요 없음

- key point를 통해 정확한 검증 가능

- PnR 진행 시 생긴 버그의 누락 방지

 

 

 

 

 

 

반응형

- SCAN -

 

- LBIST라고도 하며 MBIST가 memory test를 위한 logic 이였다면 sacn은 logic test를 위한 logic입니다.

- Logic test는 Stuck-at Faults와 Transition Delay를 test 하기 위한 방법입니다.

  → Test pattern을 사용하여 나오는 결괏값을 golden output이랑 비교하며 진행합니다.

 

 

 

SCAN의 구성요소

 

 

Scan Flip-Flop

 

- Flip-Flop 앞에 MUX를 연결하여 scan enable 신호를 control 할 수 있게 만든 Flip-Flop

 

 

Scan chain

 

- Scan Flip-Flop를 shift register처럼 serial로 묶어 놓은 것

 

 

Scan compressor

 

- Scan chain을 짧게 병렬로 연결한 것

  → Scan chain에 비해 cell을 짧게 연결하여 test에 필요한 pattern을 줄일 수 있습니다.

  Scan chain에 비해 cell을 많이 연결할 수 있습니다.

 

 

 

SCAN 진행

 

 

PLL

 

- Input과 output의 주파수의 위상을 동일하게 유지시키고 주파수 증폭시켜주는 역할을 합니다.

 

 

OCC

 

- OCC란 ATE에서 clock을 제어하기 위해 삽입된 logic입니다.

 

* ATE : 외부 테스트 장치

 

 

ATPG

 

- Logic을 test 할 때 사용 되는 pattern을 자동으로 만들어 주는 것

  → Logic을 test 할 때 input을 넣어 결괏값을 비교합니다.

  → 이때 test pattern 또는 test vector를 input으로 사용합니다.

  → 이 test vector를 자동으로 만드는 것이 ATPG입니다.

 

 

At speed test

 

- 실제 logic의 동작 속도와 같은 clock으로 test 하는 것을 의미합니다.

  → Test를 할 때 느린 clock으로 test를 하기 때문에

      combinational logic을 테스트하는 순간에만(capture) at speed clock을 넣어줍니다.

      (Transition Delay를 test 할 때 사용)

 

 

느린 clock으로 test 하는 이유

 

- 고성능 ATE는 비용이 많이 들기 때문에 느린 ATE를 사용합니다.

 

 

 

SA & TD

 

 

Stuck-at Faults

 

- Input이 output에 영향을 미치지 못하고 출력이 고정되는 오류입니다.

 

 

Transition Delay

 

- 전환 지연 오류, 즉 clock이 밀려서(필요보다 늦게) 뜨는 경우입니다.

 

 

Transition delay test

 

- 전환 지연 오류 테스트 방법

  → Scan enable의 값에 1을 넣어 test pattern을 넣어줍니다.

  → Pattern이 모두 들어가면 scan enable에 0을 넣어 at-speed로 만들어 줍니다. (capture)

  → Capture를 하게 되면 scan F/F에 쌓이던 pattern이 combination logic으로 들어가게 됩니다.

  → 이 후 다시 scan enable에1을 넣어 combination logic에 있던 결과 값을 output으로 얻어냅니다.

 

 

 

 

 

 

반응형

- Leakage power -

 

- leakage power란 logic의 off mode에서 소비되는 전력입니다.

  → logic이 off mode인데 누설되는 전력이 왜 생기는 것인지 알아보았습니다.

 

 

 

Leakage power가 생기는 이유

 

- 다이오드 역 바이어스 전류 (Diode reverse bias current)

- 하위 임계 값 누설 전류 (Sub-threshold leakage current)

- Gate 산화물 누출 (Gate oxide leakage)

 

 

 

다이오드 역 바이어스 전류 (Diode reverse bias current)

 

- 역 바이어스를 걸어줄 경우 barrier가 높아져 전류가 통하지 않아야 하지만 미세하게 통합니다.

  * 역 바이어스 : N형 반도체 쪽에는 양극(+), P형 반도체 쪽에는 음극(-)를 연결해 주는 것

 

 

역 바이어스를 걸어줄 때 미세하게 전류가 흐르는 이유

 

- PN 접합 시 전기장(E-field)가 생성됩니다.

- 이 전기장은 bias 여부와 상관없이 정공과 자유전하가 이동 가능 하기 때문에 전류가 발생하게 됩니다.

 

* P : 정공 (hole) : (+)

* N : 자유전하 (election) : (-)

* PN 접합 : 정공과 자유전하를 접합 시키면 diffusion이 일어나게 된다.

* diffusion : 고밀도에서 저밀도로 정공과 전하가 이동하는 것을 의미

* E-field (Electric field) : 전하를 가진 물체 사이에 작용하는 힘, 전기력을 발생시키는 공간

PN 접합

 

- PN 접합에서 역 바이어스를 걸어줄 경우 공핍 정공과 전하가 더 모이게 되어 공핍 영역이 넓어집니다.

역 바이어스

 

 

하위 임계 값 누설 전류 (Sub-threshold leakage current)

 

- 임계값 보다 낮은 전류이지만 생기는 leakage power

 

 

소자의 on/off 조건

 

- Gate 전압(Vg)이 문턱 전압(Vth) (threshold voltage)보다 높으면 on, 낮으면 off 

- Vg < Vth인 경우, 즉 off인 경우에는 전류가 흐르지 않아야 합니다.

 

 

Vg < Vth 일 때 전류가 미세하게 흐르는 이유

 

- 작은 전기장 성분(E-field)으로 인해 미세하게 전류가 발생하기 때문입니다.

 

 

 

Gate 산화물 누출 (Gate oxide leakage)

 

- Gate oxide란 전압을 이용하기 위해 전자의 이동을 막아주는 절연층을 의미합니다.

  (즉 전자의 이동을 차단하는 역할)

- Gate oxide는 실리콘 layer 전체에 높은 전기장을 발생시킵니다.

  → 이 상태에서 gate 단자가 바이어스 되면 정공과 전자들이 실리콘을 통과하면서 전류를 발생시킵니다.

 

 

 

반응형

- Low power techniques -

 

- dynamic power와 leakage power를 줄이기 위한 기법으로

  비용 절감을 위해 동작 시 필요한 전력을 줄이는 기술입니다.

 

* dynamic power (동적 전력) : 입력이 활성화 (회로가 동작 될 때) 될 때 사용되는 전력

     ≒ switching power : capacitor, inductor를 충, 방전 할 때 소모되는 전력

* static power (정전 전력) : 입력이 비활성화 (회로가 동작되지 않을 때) 될 때 사용되는 전력

    ≒ leakage power (누설 전력) : off mode에서 소비되는 전력

 

 

Low power techniques 기법

 

- Clock gating

- Power gating

- Multi voltage design (Level shifter)

- Isolation cell

- Voltage/Frequency scaling

- Retention register

 

 

 

Clock gating

 

- 사용하지 않는 logic의 clock 공급을 멈추는 방법입니다.

  → Logic의 clock과 clock enable 신호를 AND gate로 연결하면 

      clock enable 신호에 따라 logic의 clock 공급을 control 할 수 있습니다.

 

 

Clock gating이 low power tech인 이유

 

- 사용하지 않는 logic에 clock을 끊으면 회로의 일부가 비활성화되어 Flip-Flop이 상태를 전환할 필요가 없고

  이로 인해 switching power의 소비가 0이 되어 Dynamic power가 감소하기 때문입니다.

 

clock gating

 

 

 

Power gating

 

- 사용하지 않는 logic의 power 공급을 중단하는 방법입니다.

  → Power switch를 사용하여 사용하지 않는 logic을 off 시켜 줍니다.

 

 

Power gating이 low power tech인 이유

 

- Logic이 사용되지 않을 때도 power가 공급되고 있다면 leakage power가 존재합니다.

  → 하지만 power switch를 사용하여 leakage power를 감소시킬 수 있습니다.

 

 

 

Multi voltage design

 

- Chip 내부에도 domain의 성능에 따라 필요한 voltage가 다릅니다.

  → 가장 높은 voltage를 필요로 하는 domain의 voltage로 맞추는 것이 아닌

      각 domain마다 필요한 voltage를 공급받을 수 있게 설계하는 방법입니다.

- Level shift를 사용하여 voltage가 다른 두 domain의 input과 output을 연결시킬 수 있습니다.

 

* domain : 동일한 전력을 필요로 하는 logic들을 묶어준 것 (VDD, VSS 공유)

 

 

Level shift cell

 

- 서로 다른 voltage를 가진 domain들 사이에 level shift cell을 넣으면 전압을 맞춰줄 수 있습니다.

- 아래 사진과 같이 domain1에서 나온 1.0v의 출력이

  level shift를 거치게 되면 0.75v로 바뀌어 domain2로 들어가게 됩니다.

level shift

 

 

Block(domain)마다 voltage가 다른 이유

 

- Clock의 입력 속도가 다르기 때문입니다.

 

 

Level shift cell이 low power tech인 이유

 

- 만약 전압을 통일시키면 필요 이상의 전압이 들어가는 domain이 생길 수 있는데,

  Level shift cell을 사용하면 각 domain에 맞는 전압을 줄 수 있기 때문입니다.

 

 

 

Isolation cell

 

- On logic과 (동작 중인 회로) off logic (동작하지 않는 회로)이 있을 때

  두 개의 domain 간의 신호를 control 하는 방법입니다.

- Off logic의 출력의 값이 없거나 unknown signal이 나오게 되면 on logic에 영향을 줄 수 있기 떄문에 사용됩니다.

- 두 domain 사이에 isolation cell을 넣어 on logic에 들어가는 신호를 일정하게 유지할 수 있습니다.

 

 

Isolation cell의 종류에 따른 출력 값

 

- AND gate : 0

- OR gate : 1

 

 

Isolation cell을 사용하는 이유

 

- Power switch 사용 시 off logic이 의도하지 않은 신호를 전달하는 것을 방지하기 위해 사용됩니다.

isolation cell

 

 

 

Voltage/Frequency scaling

 

- Design의 성능에 따라 clock의 주파수를 낮추어 공급 전압을 줄이는 방법입니다.

 

 

 

Retention register

 

- Block이 on 또는 off 될 때 이전 상태를 유지할 수 있도록 해주는 방법입니다.

  → Power가 off 되기 전에 shadow register에 data를 저장하여 off 상태일 동안 data를 저장해줍니다.

  → Power가 on 될 때 main register로 data가 restore됩니다.

 

 

 

 

 

 

 

 

 

반응형

- MBIST -

 

- 반도체 기술이 발전할수록 chip의 memory와 logic의 수가 증가하고 있습니다.  

  → 이로 인해 memory test를 진행하는 데 있어서 많은 시간과 비용이 들어가게 됩니다.

  → 이러한 문제를 해결하기 위해 내장 test 방법인 BIST를 사용합니다.

  → 그중 memory를 test 하는 것이 MBIST입니다.

 

 

 

MBIST(Memory Built-In Self-Test)?

 

- Built-in이라는 단어를 보면 유추할 수 있듯 chip 내부에 memory를 test 하기 위한 test logic을 삽입하는 방법으로

 현재 할 수 있는 memory test 방법 중 가장 효율이 높은 방법입니다.

 

 

 

MBIST 장점

 

- 실제 동작 속도와 같은 속도의 clock으로 test 할 수 있습니다.

- 외부 장치를 이용한 test 보다 비용이 저렴합니다.

- Test 시간을 줄일 수 있습니다.

- Memory를 병렬로 test 할 수 있습니다.

- 필드 (실제 chip을 사용하는 곳)에서도 사용이 가능합니다.

 

 

 

MBIST logic 구성 요소

 

- Test pattern을 생성할 수 있는 logic

- Test pattern의 input에 대한 결과와 결함이 없을 경우 나와야 하는 결과가 일치하는지 판단하는 logic

  → 즉, memory의 결함 여부를 스스로 판단할 수 있는 기능이 있어야 합니다.

MBIST logic

 

Test Controller

 

- MBIST 검사를 제어하는 logic

 

 

Pattern Generator

 

- Test 모드일 때, MBIST 검사에 사용할 test pattern

 

 

Comparator

 

- Test를 위해 나온 output(read data)과 결함이 없을 경우 나오는 output(golden data)이 같은 지 확인하는 logic

 

 

CUT (Circuit under test)

 

- Test 중인 memory

 

 

Generator

 

-  pattern generator는 두 가지로 구성됩니다.

  • Address generator : Test 할 memory의 address를 지정해 줍니다.
  • Data generator : 0과 1로 이루어진 test pattern을 만들어 줍니다.

pattern generator

 

 

- BIRA & BISR -

 

- BIST가 결함 여부만을 알려주었다면 결함을 고칠 수 있는지에 대한 여부와

  실제로 해당 cell을 고쳐주는 BIRA, BISR가 있습니다.

 

 

 

Memory를 고쳐서 사용하는 이유?

 

- 몇 개의 cell 때문에 memory를 버리게 되면 비용적인 문제가 발생하기 때문입니다.

 

 

 

BIRA(Built-In Redundancy Analysis)?

- BIST에서 얻은 결함 정보를 통해 다음을 판단합니다.

  → Redundancy cell로 교체가 가능한지

  → 고장 난 cell의 address가 어딘지

  → 교체가 가능하다면 어떻게 Redundancy cell을 배치할 것인지

 

Redundancy cell : 직역하면 여분 cell로, memory를 고칠 수 있게 내장되어 있는 여분의 cell

 

 

 

BISR(Built-In Self-Repair)?

 

- BIRA를 통해 얻은 재배치 정보를 이용하여 고장 난 cell을 Redundancy cell로 대체 하는 것.

  → Built-In Self-Repair결함 정보를 OTP(One Time Programing)에 저장한 후

      전원이 켜지면 OTP가 고장 난 cell을 수리합니다.

 

 

 

 

반응형

- Back End Flow -

 

Back End Flow는 Layout Flow라고도 합니다.

BE flow

 

 

 

Floorplan

 

- Layout 이전에 cell, memory 등의 위치를 설정하는 단계입니다.

  → Port의 위치, route, timing 등을 고려하여 배치해야 합니다.

  → Hierarchys, block의 위치 등도 고려하여 배치해야 합니다.

- Floorplan이 제대로 이루어 지지 않으면 chip의 면적, 전력, IC 비용 증가 등의

  문제가 발생할 수 있기 때문에 가장 중요한 단계입니다.

 

 

 

Place

 

- Floorpanning이 끝난 후 DRC 및 Error를 확인하는 단계입니다.

  → Place에서 Standard cell을 배치하고, power를 연결시켜줍니다.

  → Routing이 가능하도록 area를 최적화하고 cell의 density를 최소화해야 합니다.

- Placement는 timing, congetion, power 기준에 따라 결정됩니다.

- Placement는 routing이 가능한지 결정합니다.

 

Standard cell : IC 설계 시 속도를 높이기 위해 미리 만들어 놓은 논리소자

 

 

 

CTS

 

- PnR 에서 가장 중요한 단계로 clock을 분배하고 부하를 분산 시키기 위한 단계입니다.

  → Skew를 최대한 줄이기 위해 buffer, latch 등을 이용합니다.

      → 길이가 다른 path들에 delay를 줘서 path들의 길이를 서로 맞춰주거나,

          buffer를 이용하여 clock 공급 path 나눠줌으로써 부하를 줄여줍니다.

 

 

 

Route

 

- 금속 layer를 사용하여 신호 핀 간의 물리적 연결을 routing 이라고 합니다.

  → Cts와 place가 완료된 cell들을 wire로 연결하는 단계입니다.

 

via : Layer를 이어주는 구멍

 

 

 

Sign off

 

- Layout이 설계된 대로 동작하는지 확인하기 위한 검사 단계입니다.

  → LVS : Layout vs Schematic

  → DRC : 반도체 제조 공정에 따른 Layout의 조건 충족 여부를 검사

 

 

 

Timing closure

 

- Timing이 지정한 조건에 맞도록 설정해 주는 프로세스입니다.

 

 

 

반응형

synthesis ?

 

- Synthesis : 합성

- RTL(VHDL, Verilog source)을 gate level의 netlist로 변환하는 단계입니다.

  → 비교적 간단한 RTL 설계를 power, timing과 같은 constraint를 고려하여

      gate로 이루어진 netlist로 바꿔주는 중요한 작업입니다.

 

 

 

synthesis를 하는 이유?

 

1. Gate Level Netlist 얻기 위해

    → Verilog와 같이 글로 설계되어 있는 RTL을 실제 사용하는 gate를 이용하여

        gate level netlist로 변환해야 실제 chip 구현(layout)이 가능하기 때문입니다.

synthesis

 

2. DFT logic 삽입

    → chip을 test 할 때 외부 test 장치를 사용하면 비용이 많이 들게됩니다. 

        → 따라서 비용 절감을 위해 비교적 느린 속도로 logic을 test 해야 합니다.

        → 내부에 test logic을 넣어 비교적 싸고 빠르게 test 할 수 있습니다.

 

 

 

synthesis flow

 

- synthesis flow는 크게 6가지 단계로 나눌 수 있습니다.

synthesis flow

 

 

Load lib

 

- logic을 구성하는 데에 있어 필요한 standard cell, memory, IP 등의 정보가 담겨있는 library를 불러오는 단계입니다.

  → 예를 들어 AND gate를 사용해야 할 때 사용할 AND gate의 size, in/output의 개수 등의 정보가 필요합니다.

  → 하지만 RTL 에서는 logic의 connect 정보와 같이 비교적 간단한 정보만이 기술되어 있기 때문에

      해당 정보가 기술되어 있는 library를 불러오는 단계가 필요합니다.

 

 

Set constraint

 

- clock, timing, power의 정보와 같은 block의 constraint를 setting 해주는 단계입니다.

  → 글로 작성되어 있는 RTL code를 layout을 위해 gate 단위로 바꾸는 것이기 때문에

      register, net 등의 delay나 power에 대해 setting이 필요합니다.

  → 예를 들어 어떤 memory가 사용될 때 이 memory가 '어떤 clock을 사용하는지' '어느 정도의 power가 필요한지' 등을

      setting 해주는 단계입니다.

 

 

Load RTL

 

- RTL(verilog, hdl) code를 불러오는 단계입니다.

 

 

Translate

 

- Gate level로 변환하는 단계입니다.

  → RTL code를 읽어온 후 바로 합성을 진행하는 것이 아닌 

      gate의 정보나 종류 등을 고려하지 않고 gate level로 변환합니다.

  → ‘어떻게 연결되어 있는지’ ‘어떤 port가 연결되어 있는지’ 등을 광범위하게 확인하기 위함입니다.

  → 실수를 줄이고 정확하고 정교한 합성을 하기 위한 단계입니다.

 

 

Optimize

 

- Logic을 최대한 간단하게 만드는 단계입니다.

  → synthesis를 진행하다 보면 function 적으로 필요 없거나 간단하게 나타낼 수 있는 부분이 존재합니다.

  → 원래도 복잡한 반도체 logic을 필요 이상으로 복잡하게 구성할 필요가 없기 때문에 Optimize 단계를 꼭 거쳐야합니다.

optimize

 

 

Mapping

 

- 제조 공정 제약에 맞게 logic(gate, memory 등)을 place 하는 단계입니다.

  → 삼성, TSMC와 같이 반도체 제조 업체의 공정에 맞게 구성하여야 합니다.

  → 예를 들어 OR gate를 사용할 때 어떤 공정은 정사각형 모양을 사용할 수도 있고

      어떤 공정은 동그라미 모양을 사용할 수도 있습니다.

      따라서 공정 제약에 맞는 library와 place가 필요합니다.

 

 

Check the report

 

- 합성이 잘 진행되었는지 확인하는 단계이다.

  → congestion과 timing 확인

  → memory, cell, IP 등이 각각 block 내에서 차지하는 area는 어느 정도인지

  → power 소모량은 얼마나 되는지 등을 확인할 수 있습니다.

 

 

 

synthesis의 종류

 

- 최근에는 공정이 복잡해짐에 따라 layout까지 고려하여 (gate들의 배치, net delay 등등..)

   synthesis를 진행하는 경우도 있습니다.

   → synthesis 방법에 따라 physical library도 필요한 경우가 있습니다.

  •  DC : pysical적인 wire만 고려하여 synthesis 진행
  •  ZWLM : wire의 delay가 0이라고 가정하고 synthesis 진행
  •  DCT : 가상의 배치를 통해 synthesis 진행
  •  DCG : 실제적인 배치를 고려하여 synthesis 진행 

 

 

 

synthesis를 할 때 사용되는 대표적인 tool

 

- Synopsys의 Design compiler

- Cadence의 RTL Compiler

- Simens의 EDA

 

 

 

synthesis flow 정리

 

synthesis input (synthesis 진행 시 필요한 정보(파일))

 

- RTL code

- Libraries

- Constraints (UPF (power 정보), SDC (clock 정보))

- etc ..

 

 

synthesis output

(synthesis 완료 시 얻는 정보)

 

- Gate Level Netlist

- Timing report, Area report

- UPF

- SDC

- etc ..

synthesis in(out)put

 

synthesis report

 

- congestion report

- timing report

- power report

- area report

- etc ..

 

 

 

 

 

반응형

- Front-End Flow -

 

- ASIC design flow는 DFT를 담당하는 Front End와 Layout을 하는 Back End가 있습니다. 

  그중 Front End Flow에서는 test logic을 삽입하고 회로 검증을 진행합니다.

 

FE flow

 

 

 

synthesis 

 

- Gate-Level (buffer, latch, and gate 등)로 바꿔주는 단계입니다.

- 처음 팹리스 업체에서의 chip 설계는 verilog와 같은 RTL(Register-Transfer Level) code로 이루어져 있지만

  chip을 만들기 위해서는 Layout이 가능한 Gate-Level netlist로 바꿔줘야 합니다.

  (글로 설계되어 있는 logic을 실제 회로의 모양으로 바꿔주는 단계입니다.)

 

- Synthesis 중 중요한 점은 최대한 회로를 간단하게 표현하는 optimization과

  파운드리 공정에 맞는 library로 mapping 시킨다는 점입니다.

 

* gate-level netlist : gate로 표현 된 netlist 

* library : 해당 공정에서 정해 놓은 소자들의 모양이 있는데, 그것들을 모아 놓은 것.

  (예를 들어, and gate는 네모 모양의 3개의 input이 있는 and gate는 A and gate를 써라 등등..) 

* mapping : 회로에 있는 소자와 library에 있는 모양을 연결시켜주는 것

 

 

 

Rule check 

 

- Synthesis 이후, 설계된 회로에 기능적인 결함이 없는지 확인하는 단계입니다.

- Logic의 rule을 check하는 LDRC, power issue를 check하는 LPRC가 있습니다.

  • LDRC : floating net, tie 등 회로가 동작하는 데에 있어 문제가 발생할 수 있는 부분이 있는지 확인하는 단계입니다.
  • LPRC : power가 정해진 조건에 맞게 공급되고 있는지 확인하는 단계입니다.

 

 

 

DFT 

 

- Chip을 만든 후 chip 전체를 외부 장치를 이용하여 test 하려면 많은 비용과 시간이 필요합니다.

  → 따라서 logic 내부에 logic을 test 할 수 있는 DFT logic를 넣게 되면 비교적 적은 비용과 시간으로 test 할 수 있습니다.

- DFT에는 Memory를 test 할 수 있는 MBIST, logic을 test 할 수 있는 SCAN(LMIBST)이 있습니다.

 

 

 

Verification

 

- Synthesis 이후 또는 DFT logic 삽입 후 회로가 function 적으로 문제가 없는지 test 하는 단계입니다.

 

 

 

Power analysis 

 

- Logic을 test 하는 것에 있어서 가장 중요한 것은 최상의 조건이 아닌 최악의 조건으로 test 하는 것입니다.

- chip이 만들어진 후 어떤 조건에서도 목적에 맞게 동작이 되어야 하기 때문에

  최악의 조건에서도 동작할 수 있도록 test 하는 것입니다. 

- Power analysis는 여러 가지 조건에서의 power 소모량을 분석하는 단계입니다.

 

 

 

LEC

- Synthesis 이후 RTL netlist와 gate level netlist가  function 적으로 달라진 것이 있는지 확인하는 단계입니다.

- 또한 DFT 단계를 거치면서 test logic이 추가됐기 때문에 logic이 달라지게 됩니다.

  → 하지만 test logic은 function 적인 부분에서 영향을 끼치면 안됩니다.

      따라서 test logic을 넣기 전과 후를 비교하여 function 적으로 달라진 것이 있는지 test 해야 합니다.

 

 

 

GLS

 

- Memory와 logic을 simulation을 하는 단계입니다.

  → Input에 test pattern을 넣어 output을 추출합니다.

  → Test pattern을 이용한 output의 결괏값과 실제 동작 결괏값(golden output)이 같은 지 비교합니다.

 

 

 

STA 

 

- Clock이 register나 net 등을 거치게 되면 delay가 발생합니다.

- 이러한 delay 때문에 violation이 발생하는지 확인하는 단계입니다.

반응형

+ Recent posts