ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Clock 명령어 및 예제 정리(.sdc)
    전공/Design Compiler 2021. 3. 31. 14:54

    1. create_clock

    : Clock을 생성해주는 명령어이다.

     

     

    명령어 옵션

     

    -name clock_name

    -add
    -period period_value
    -waveform edge_list

    source_objects

     

    명령어 예제

     

    (1) 실제 존재하는 포트 A에 주기 10ns, 상승하는 시간 5.0ns, 하강하는 시간 9.5ns인 Clock을 생성하고 싶을 때

     

    create_clock -period 10 -waveform {5.0 9.5} "A"

    -> 옵션은 먼저 나와도 되고, 뒤에 나와도 된다.

     

    (2) 실제 존재하는 포트 A를 clk으로 이름 짓고, 주기 10ns, Duty cycle이 50%인 Clcok을 생성하고 싶을 때

     

    create_clock -period 10 -name "clk" "A"

    -> waveform 옵션을 사용하지 않으면, 기본 값으로 주기의 절반이 하강시간에 들어간다.

    -waveform {0 5} 옵션이 생략되어 있다고 생각하면 편하다.

     

    (3) 실제 존재하는 포트를 사용하는 것이 아니라 가상의 clk인 "B"를 (1)과 같은 조건으로 넣어주고 싶을 때

     

    create_clock -period 10 -waveform {5.0 9.5} -name "B"

     

     

     

     

     

     

     

     

     

    2. create_generated_clock

    : Clock을 이용하여 다른 Clock을 만들어 내는 명령어이다.

     

     

    명령어 옵션

     

    -divide_by number

    -source source_name

    -name clock_name

     

    명령어 예제

     

    Clock을 1/2배로 분할하여 새로운 Clock을 넣어주고 싶을 때

     

    D flip flop을 이용한 주파수 분주

    create-generated_clock -divide 2 -source [get_ports {clk}] -name clkdiv [get_pins {DIV/q}]

     

     

     

     

     

     

     

    3. set_clock_latency

    : Clock을 정의한 Point와 실제 Clock의 Latency를 표현하는 명령어이다.

     

    latency의 분류

    명령어 옵션

     

    -source

    -late

    -early

    -rise

    -fall

     

    명령어 예제

     


    (1) 사용자가 clk으로 설정한 Port와 실제 Source clk와의 Delay가 3ns 인 조건을 넣어주고 싶을 때

     

    create_clock -name SYSCLK -period 10.0 [get_ports CLK]

    set_clock_latency -source 3.000 [get_clocks SYSCLK]

    -> -source 옵션을 사용하지 않으면 기본적으로 Network latency 값을 지정해주는 것이 된다.

    (2) "CLK1" 이라는 clk이 Source에서 부터 빠르면 0.8ns, 늦어도 0.9ns에 도달하게 하고 싶을 때

     

    set_clock_latency 0.8 -source -early [get_clocks CLK1]

    set_clock_latency 0.9 -source -late [get_clocks CLK1]

     

     

     

     

     

     

     

    4. set_clock_uncertainty

    : Clock skew를 조건으로 지정해 주는 명령어

     

     

    명령어 옵션

     

    -from from_clock
    -rise_from rise_from_clock
    -fall_from fall_from_clock
    -to to_clock
    -rise_to rise_to_clock
    -fall_to fall_to_clock
    -rise
    -fall
    -setup
    -hold

     

    명령어 예제

     

    (1) Clock에 연결된 모든 포트에 setup time 0.65ns, hold time 0.45ns 만큼의 Skew Margin을 주고 싶은 경우

     

    set_clock_uncertainty -setup 0.65 [get_clocks CLK]

    set_clock_uncertainty -hold 0.45 [get_clocks CLK]

     

    (2) "A"와 "B" 각각의 Skew는 0.4ns, "A"에서 "B"로 가는 Skew는 1.1ns만큼의 Margin을 주고 싶은 경우

     

     set_clock_uncertainty 0.4 -from A -to A
     set_clock_uncertainty 0.4 -from B -to B
     set_clock_uncertainty 1.1 -from A -to B
     set_clock_uncertainty 1.1 -from B -to A

     

     

     

     

     

    5. set_clock_transition

    : clock에 transition time을 지정해주고 싶을 때 사용하는 명령어

     

    명령어 옵션

     

    -rise

    -fall

    -min

    -max

     

    명령어 예제

     

    clk의 fall transition time을 0.64ns로 지정해주고 싶은 경우

     

    set_clock_transition 0.64 -fall [get_clocks clk]

     

     

     

     

     

     

    댓글

Designed by Tistory.