SYNOPSYS DAY6

진일·2024년 1월 23일
0

SYNOPSYS (PT&ICC)

목록 보기
8/22

8. Constraining Multiple Clock

8.3) 클럭의 3가지 유형

  1. Primary
  2. Generated
  3. Virtual

8.4) Primary Clock

  • primary clock : 실제 FF에 들어가는 클럭. 즉, 오실레이터

    create_clock -period 4 [get_ports Clk] : 주 clock은 tool에다가 알려주는 command

왜냐면 회로 밖에 있기에 PT에 직접 알려줘야 함

위 그림에서는 skew는 CTS 했을 때만 발생함.

8.5,6) Generated Clock

  • network latency : 출력 Q 오른쪽부터 다음 FF까지 회로
  • source latency : 출력 Q 왼쪽부터 clk까지의 회로

PT는 source latency를 계산할 수 있음.
(이유) Generated clock은 회로 안에 포함되어 있어 계산이 가능함.

create_generated_clock -divide_by 2 -name div_clk -source [get_ports Clk] FF3/Q : 2분주 FF을 알려주는 command. 즉, 2분주에 대한 기능을 PT에 알려주었다.

(이유) 2분주로 알려주지 않으면 Tool이 인식을 못하기 때문이다.

8.7) More Clocks

  • outgoing clocks : 출력 포트이지만 클럭의 역할을 함
    즉, output point면서 start point
    //8-14

    check_timing -verbose : 자세하게 레포트 보여줌

경고가 나타남 >> 설정만 잘 해줬다면 무시해도 됨
(이유) 엔드포인트와 스타트 포인트로 역할이 겹쳤기 때문에

8.9) Virtual Clock

설명하기 위한 Design complier 알아야 함

사용 이유
내 디자인밖에 있는 클럭을 사용할 때 설정

virtual clock은 계산할 network latency가 없다
(이유) 회로에 주 clock이 없기때문에

//참고자료


8.12 TCL (tool command language)

  • tool command language : 하나의 언어로 표준화 시킴

8.15 Generate a Timing Report

report_timing -to sd_DQ[0] -path_type full_clock_expanded : source latency를 계산하는 옵션

8.17 Synchronous vs Asynchronous Clocks

  • Asynchronous Clocks : 런치, 캡처 엣지가 흔들림 >> 규칙성X
  • Synchronous Clocks : 런치, 캡처 엣지가 규칙적임

STA에서는 sync clk에서 사용 가능 / async clk 사용 불가

8.18 Interacting Clocks and Multiple STA Runs

(문제) Mux 기능이 PT가 자동으로 인식하지 못 함 >> 모든 경우의 수를 분석함

8.19 Single Analysis with Multiple Clocks

set_clock_groups -logically_exclusive -group CLK1 -group CLK2
: Mux 기능을 PT가 인식할 수 있게 clk1,2를 분류

8.21 Duty Cycle

오실레이터는 실제로 정확하게 듀티사이클 50 : 50으로 나타나지 않음
그래서 듀티사이클 조정 옵션이 필요함

create_clock -period 2 -waveform {0 0.5} -name My_clk [get_ports Clk]
: 50대 50으로 나누는 클럭 생성

8.22,23) Asynchronous Clocks

  • Async clock은 오실레이터 2개 사용 >> 규칙성 X
    clk이 빨라지면 빨라질수록 L,C가 흔들리기에 오류가 더 많이 나타남

set_clock_group -name async_group -asynchronous -group Clk -group Clk2
: async 선언

async clk는 timing 분석 X >> 설계자가 직접 설정해줘야함

8.24) Identify All Clock Crossings

즉, 클럭이 엇갈려있다. timing 분석 못함

check_timing -verbose -override clock_crossing

8.27) Interpret Timing Reports Between Clocks

(문제) clk1-런치엣지와 clk2-캡처엣지 8,9인 이유
clk1과 clk2의 주기는 4와 3임 >> 12ns일 때 동기화
런치엣지 3번째 보낼 때 가장 런치와 캡처의 폭이 짧아 worst case (런치 8ns, 캡처 9ns)
(해답)
timing report에서는 worst case을 내보내야 하기에 8,9로 내보냄

8.30) Timing Reports for Asynchronous Clocks

No contrained paths : async_clk에 대해 timing reports 할 수 없다.

8.31) Reports for Unconstrained Paths

set_app_var timing_report_unconstrained_paths true : data arrival시간을 보고 싶을 때 사용
즉, slack의 정보는 얻지 못하지만 data arrival time을 알 수 있다.

8.32) No paths versus No constrained paths

No paths : endpoint가 아니라서


9. Debugging Constraint Issues

<debugging은 잘못된 곳을 찾아 고치는 행위>

9.3) 제대로 분석이 되는지 확인하는 방법

check_timing

report_analysis_coverage

9.4) A Representative Design

PT는 클럭분주, 먹스등등의 기능을 Command로 알려줘야 함

  • latch와 ff의 차이 : gate pin과 clk pin으로 구분하는 방법을 알아야 함

9.5) No Clock

mux등등 기능을 선언해주지 않으면 clock으로 인식하지 못함

9.8) Key Messages of Job Aid

  • trace paths

    all_fanin, all_fanout

  • Explore cells, ports or pins

    report_cell, report_disable_timing

9.9-13) Start Point 시나리오 찾기

결과적으로 Start Point는 FF_clk, input port 뿐만아니라 latch의 input pin, gate pin도 될 수 있음

9.17) How Does get_attribute Work?

get_attribute [get_pins F2/CLK] clocks {"clk1"} : 포트로 선언

9.18 답 질문하기


profile
디지털 시스템 설계 백엔드 엔지니어를 꿈꾸는

0개의 댓글