Sunny Day
CDC & Metastability 본문
설계 시 빠지지 않는 이슈 중 하나인 CDC에 대해 알아보겠다.
CDC(Clock Domain Crossing)은 서로 다른 Clock domain간의 데이터 처리 시 사용되며 반드시 고려해야 한다.
Clock source 하나를 분주하여 사용한다면 CDC를 고려하지 않지만
업계에서는 시스템 설계 시 다양한 속도의 IP 들에 대해 저전력 설계 및 최적화를 위해서 여러 개의 Clock source를 사용한다. (PNR 과정에서 clock tree 최적화에도 도움이 되지 않을까 추측해본다.)
Clock source가 다르면 같은 속도라고 해도 skew가 다를 수 있기 때문에 Metastability에 의해 값을 보장할 수 없다.
Metastability란 값이 0인지 1인지 보장할 수 없는 상태로 시스템에 큰 결함이 생길 위험이 있다.
많이 사용하는 CDC 방법은 Flip flop synchronizer와 handshake synchronizer이다.
보통은 위 그림과 같이 2 flip flop으로도 충분히 Metastability를 피할 수 있지만 고속 시스템에서는 2개로는 margin이 부족하여 3 flip flop를 사용한다.
위 그림은 ack, requset만 Flip flop으로 delay를 줘서 Metastability를 피하는 handshake 기법이다.
주로 level signal들은 3 flip flop을 사용하고 Multi bit signal이나 One pulse signal 은 handshake CDC 기법을 사용한다.
이외에도 다양한 CDC 방법이 있지만 대표적인 2가지에 대해 알아보았다.
* 합성 시 EDA tool에게 Async path에 대해서 sdc(synopsys design constraints)로 알려주지 않으면 제대로 분석을 할 수 없다고 한다.
Async path에 destination 쪽의 clock에 set_max_delay를 맞추고 hold 대해서 set_false_path 처리를 해줘야한다.
- setup은 다음 clock edge를 참조하는데 hold는 같은 edge를 참조해서 set_false_path를 안해주면 tool이 쓸데없는 작업을 해준다고 한다.
ex)
set_max_delay [expr $clk2 * 0.6] -from [get_clocks clk1] -to [get_clocks clk2]
set_false_path -hold -from [get_clocks clk1] -to [get_clocks clk2]
Reference
* http://www.sunburst-design.com/papers/CummingsSNUG2008Boston_CDC.pdf
* http://www.pldworld.com/_altera/html/tip/wp-01082-quartus-ii-metastability.pdf
'Digital Design' 카테고리의 다른 글
FSM State Encoding - One hot vs gray vs binary (0) | 2022.07.02 |
---|---|
Reset Recovery & Removal time (0) | 2022.07.02 |
Sync vs Async Reset (0) | 2022.07.02 |