티스토리 뷰

목차



    반응형

    + 생각나는 대로 정리해보는 Synthesis +

     

    우선 Synthesis란 무엇일까요?

     

    - high level의 RTL을 구현 가능한 low level의 netlist로 바꾸는 과정입니다.

    - ASIC 설계에서 가장 중요한 PPA (Power, Performance, Area)를 최적화하는 프로세스입니다.

     

    - Input : RTL, Technology libraries, Constraints (Environment, clocks, IO delays 등), UPF(Power intent for power aware synthesis) 가 있음

    - Output : Netlist, SDC, Reports, UPF(Unified Power Format) 등

     

    - Synthesis할 때 쓰는 대표적인 tool : Cadence의 RTL Compiler , Synopsys의 Design Compiler

    - Synthesis = Translation + Logic Optimization + Mapping

    - translation은 file을 읽는 동안 실행되고, logic optimization과 mapping은 command를 compile하는 것에 의해서 실행 됨.

     

    Synthesis 목표

    • Gate-level Netlist를 얻기 위함.
    • Clock Gates를 inserting
    • Logic Optimization
    • DFT Logic을 inserting
    • RTL과 Netlist 사이의 Logic Equivalence를 유지 시키기 위함.

     

    - HDL file generation & library setup

    • HDL input file은 VHDL이나 Verilog나 SystemVerilog에서 작성 됨.
    • HDL partitioning 및 코딩 스타일은 synthesis와 최적화 과정에 직접적인 영향을 미침.
    • Libraries는 사용된 반도체 기술을 기반으로 함.
    • 정의가 다른 여러가지 유형의 library가 있음.
      • link library
      • target library
      • symbol library
      • synthetic library
      • etc.

     

    - DC로 파일을 읽는 방법에는 두 가지가 있음 ->  elaborate 명령이랑 read_file

    1) elaborate command는 design을 GTECH 표현으로 변환하고 코드의 HDL 산술 연산자를 design ware 구성 요소로 변환합니다. 또한, link를 자동으로 수행하고, source code에 정의된 매개변수 값을 변경할 수 있습니다.

    2) read_file command는 VHDL에 대한 중간 파일을 저장합니다.

     

    • Design environment Constraints
      • 디자인을 읽은 후에는 디자인 환경과 constraint를 정의해야 합니다.
      • design environment : operating conditions, Wire Load Models, Interface requirements
        • operating conditions: process, coltage, temperature requirements로 구성이 되며, 이것들 각각이 칩에 미칠 수 있는 영향은 합성 및 타이밍 분석 중에 고려해야 합니다.
          • set_operating_condition 명령을 사용하여 작동 조건을 명시적으로 지정할 수도 있습니다. 작동 조건은 set_operating_condition 명령을 사용하여 dc_setip.tcl 파일에 저장됩니다.
        • wire load models: DC는 와이어 길이와 팬아웃이 저항, 커패시턴스 및 네트 면적에 미치는 영향을 추정할 수 있습니다. DC는 이러한 값을 사용하여 와이어 delay를 계산합니다. DC를 이용하여 합성을 마치면 0WLM을 사용합니다.
        • system interface: 외부 논리 구동 및 ASIC에서 신호 수신에 관한 정보는 이러한 constraint를 통해 캡쳐됩니다. input drive strength (set_driving_cell), capactive load (set_load), output fan out load 등으로 구성됩니다.
        • report_lib, report_design은 load된 environment constraints를 확인하는 몇 가지 command입니다.

     

    • Timing Paths
      • timing analysis tool은 디자인의 모든 timing path를 찾고 분석합니다. 각 timing path에는 startpoint와 endpoint이 있습니다.
      • path의 startpoint는 sequential element의 clock pin 또는 디자인의 input port입니다.

    static timing analysis는 worst-case condition에서 timing violation에 대한 가능한 모든 path를 확인하여 디자인의 timing 성능을 검증하는 방법입니다. setup 및 hold는 수행되는 가장 중요한 timing check입니다.

    • setup : clock의 active edge 전에 데이터가 안정되어야 하는 시간을 setup time이라 합니다.
    • hold : clock의 active edge 후에 데이터가 안정되어야 하는 시간을 hold time이라 합니다.
    • 모든 timing path에 대해 setup 및 hold timing check를 수행하는 동안 slack이 계산됩니다.

     

    Design Compiler의 목표는 모든 constraints를 충족하는 것입니다.

     

    • Timing Constraints
      • Clocks, IO Timing requirements, combinational path delay requirements, timing exceptions를 지정해야 합니다.
      • create_clock : clock를 정의함.
      • create_generated_clock : 내부적으로 생성된 clock을 정의함.
      • clock networt effects: 정의된 clock에 대해 지정해야 합니다. clock latency, uncertainty, transition time은 clock networt effects의 일부입니다.
      • clock latency: latency는 clock signal이 원래 clock source에서 design의 순차 요소로 전파되는 데 걸리는 시간입니다. source latency과 network latency의 두 가지 구성됩니다. source latency는 원래 clock source에서 design의 clock definition point까지의 delay입니다. network latency는 clock definition point에서 register clock pin 까지의delay입니다.
    • uncertainty: register에 clock signal이 도착하는 것 사이의 최대 차이입니다. 이건 skew라고도 부릅니다. skew가 클수록 timing constraint를 충족하기 어렵습니다.
    • transition time: signal이 logic low(하강 시간)로 변경되는 데 걸리는 시간입니다. cell의 입력에서 signal의 transition time은 cell의 output에 대한 delay와 output signal의 transition time에 영향을 줍니다.
    • get_clock : current design에 정의된 clock 목록을 제공합니다.
    • report_clocks : current design에 정의된 clock의 세부 정보를 제공합니다.
    반응형