Clock
일단 create clock과 genetate clock의 차이를 알아보도록 한다.
Reference clock signal이 없는 clock signal을 선언할 경우 사용된다. 예를 들어 port의 입력으로 받는 clock signal이나 library의 output, clock이 아닌 두 signal이 combinational logic을 거쳐 만들어지는 clock의 경우 등이 이에 해당한다.
Genetate clock
Reference clock signal이 있는 clock signal을 선언할 경우 사용된다. 즉, 어떠한 reference를 dividing하거나 이 reference를 clock으로 사용하는 F/F을 통해 만들어지는 clock signal의 경우 generate clock으로 선언해주어야 한다.
1. myCreateClockPort
Port로부터 시작되는 clock signal을 선언해주는 function이다.
용도: 합성하고자 하는 top module의 input으로 받는 clock의 속성을 선언한다.
create_clock -name $clock_name -p $clock_period -w [list 0 $half_period] [get_ports $clock_pin]
set_clock_uncertainty -setup $clock_uncertainty [get_ports $clock_pin]
set_clock_uncertainty -hold $clock_skew [get_ports $clock_pin]
set_clock_transition 0 $clock_name
#infinite drive strength clock signal
# set_dirve 0 [get_ports $clock_pin]
#zero load clock signal
# set_load 0 [get_ports $clock_pin]
set_dont_touch_network [find clock $clock_name]
}
2. myCreateClock
Port가 아닌 pin이 아닌 library 또는 clock이 아닌 signal로부터 새로운 clock을 선언하였을 경우 사용하는 function이다.
용도: Port로부터 받는 clock이 아닌 top module 내의 library로부터 출력된 clock(ex. PLL의 output) 또는 clock이 아닌 signal로부터 새로운 clock을 선언하였을 경우 사용한다.
create_clock -name $clock_name -p $clock_period -w [list 0 $half_period] [get_pins $clock_pin]
set_clock_uncertainty -setup $clock_uncertainty [get_pins $clock_pin]
set_clock_uncertainty -hold $clock_skew [get_pins $clock_pin]
set_clock_transition 0 $clock_name
#infinite drive strength clock signal
# set_dirve 0 [get_pins $clock_pin]
#zero load clock signal
# set_load 0 [get_pins $clock_pin]
set_dont_touch_network [find clock $clock_name]
}
3. myGenerateClockPort
Port로부터 시작되는 clock signal을 통해 새로운 clock을 만들 경우 사용하는 function이다.
용도: Port로부터 시작되는 clock signal을 reference로 사용하여 새로운 clock을 생성하는 경우 사용한다.
create_generated_clock -name $clock_name -source [get_ports $mclock_name] -divided_by $div [get_pins $clock_pin]
set_clock_uncertainty -setup $clock_uncertainty [find clock $clock_name]
set_clock_uncertainty -hold $clock_skew [find clock $clock_name]
#infinite drive strength clock signal
# set_dirve 0 [get_pins $clock_pin]
#zero load clock signal
# set_load 0 [get_pins $clock_pin]
set_dont_touch_network [find clock $clock_name]
}
4. myGenerateClock
Port가 아닌 어떠한 clock signal을 통해 새로운 clock을 만들 경우 사용하는 function이다.
용도: Top modul의 port가 아닌 다른 clock signal을 reference로 사용하여 새로운 clock을 생성하는 경우 사용한다.
create_generated_clock -name $clock_name -source [get_pins $mclock_name] -divided_by $div [get_pins $clock_pin]
set_clock_uncertainty -setup $clock_uncertainty [find clock $clock_name]
set_clock_uncertainty -hold $clock_skew [find clock $clock_name]
#infinite drive strength clock signal
# set_dirve 0 [get_pins $clock_pin]
#zero load clock signal
# set_load 0 [get_pins $clock_pin]
set_dont_touch_network [find clock $clock_name]
Reset
1. myCreateResetPort
Top module의 port로부터 주어지는 reset을 선언할 경우 사용한다.
용도: Top module의 port로 받는 input을 선언할 때 사용한다.
set_disable_timing [get_ports $reset_name]
set_ideal_network [get_ports $reset_name]
set_dont_touch_network [get_ports $reset_name]
}
2. myCreateReset
Port로 받지 않고 top module의 안에서 생성되는 reset을 선언해주는 function이다.
용도: Port로부터 받는 reset이 아닌 CRG또는 IP내부에서 생성한 reset을 선언해줄 때 사용한다.
set_disable_timing [get_pins $reset_name]
set_ideal_network [get_pins $reset_name]
set_dont_touch_network [get_pins $reset_name]
}
'Tools' 카테고리의 다른 글
[Design Compiler] Synthesis 수행 과정 (1) | 2011.09.20 |
---|---|
[Design Compiler] Setup File (.synopsys_dc.setup) 설정 (1) | 2011.09.19 |
Rdisp (YUV player) (0) | 2011.03.07 |
Image Converter (ImageMagicK) (0) | 2011.03.07 |
[Cadence ICCR] RTL Coverage Verification Tool (0) | 2010.04.29 |