Notice
Recent Posts
Recent Comments
Link
«   2025/03   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31
Archives
Today
Total
관리 메뉴

Sunny Day

CDC & Metastability 본문

Digital Design

CDC & Metastability

wanabi 2022. 5. 17. 17:37

 

설계 시 빠지지 않는 이슈 중 하나인 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 Synchronizer

 

보통은 위 그림과 같이 2 flip flop으로도 충분히 Metastability를 피할 수 있지만 고속 시스템에서는 2개로는 margin이 부족하여 3 flip flop를 사용한다.

 

Handshake Synchronizer

위 그림은 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