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 ..

 

 

 

 

 

반응형

+ Recent posts