create_clock -period 4 [get_ports Clk] : 주 clock은 tool에다가 알려주는 command
왜냐면 회로 밖에 있기에 PT에 직접 알려줘야 함
위 그림에서는 skew는 CTS 했을 때만 발생함.
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이 인식을 못하기 때문이다.
check_timing -verbose : 자세하게 레포트 보여줌
경고가 나타남 >> 설정만 잘 해줬다면 무시해도 됨
(이유) 엔드포인트와 스타트 포인트로 역할이 겹쳤기 때문에
설명하기 위한 Design complier 알아야 함
사용 이유
내 디자인밖에 있는 클럭을 사용할 때 설정
virtual clock은 계산할 network latency가 없다
(이유) 회로에 주 clock이 없기때문에
//참고자료
report_timing -to sd_DQ[0] -path_type full_clock_expanded : source latency를 계산하는 옵션
STA에서는 sync clk에서 사용 가능 / async clk 사용 불가
(문제) Mux 기능이 PT가 자동으로 인식하지 못 함 >> 모든 경우의 수를 분석함
set_clock_groups -logically_exclusive -group CLK1 -group CLK2
: Mux 기능을 PT가 인식할 수 있게 clk1,2를 분류
오실레이터는 실제로 정확하게 듀티사이클 50 : 50으로 나타나지 않음
그래서 듀티사이클 조정 옵션이 필요함
create_clock -period 2 -waveform {0 0.5} -name My_clk [get_ports Clk]
: 50대 50으로 나누는 클럭 생성
set_clock_group -name async_group -asynchronous -group Clk -group Clk2
: async 선언
async clk는 timing 분석 X >> 설계자가 직접 설정해줘야함
즉, 클럭이 엇갈려있다. timing 분석 못함
check_timing -verbose -override clock_crossing
(문제) clk1-런치엣지와 clk2-캡처엣지 8,9인 이유
clk1과 clk2의 주기는 4와 3임 >> 12ns일 때 동기화
런치엣지 3번째 보낼 때 가장 런치와 캡처의 폭이 짧아 worst case (런치 8ns, 캡처 9ns)
(해답)
timing report에서는 worst case을 내보내야 하기에 8,9로 내보냄
No contrained paths : async_clk에 대해 timing reports 할 수 없다.
set_app_var timing_report_unconstrained_paths true : data arrival시간을 보고 싶을 때 사용
즉, slack의 정보는 얻지 못하지만 data arrival time을 알 수 있다.
No paths : endpoint가 아니라서
<debugging은 잘못된 곳을 찾아 고치는 행위>
check_timing
report_analysis_coverage
PT는 클럭분주, 먹스등등의 기능을 Command로 알려줘야 함
mux등등 기능을 선언해주지 않으면 clock으로 인식하지 못함
trace paths
all_fanin, all_fanout
Explore cells, ports or pins
report_cell, report_disable_timing
결과적으로 Start Point는 FF_clk, input port 뿐만아니라 latch의 input pin, gate pin도 될 수 있음
get_attribute [get_pins F2/CLK] clocks {"clk1"} : 포트로 선언
9.18 답 질문하기