
Let’s organize the difficulties of clock system design again.
1. Asynchronous design
2. CDC issue
3. System configuration reference (difficult to change)
4. DFT configuration
5. Chip complexity
Of course, there are more difficulties in designing a clock system, but I have extracted only the difficulties in SOC system configuration and organized them into 5.
So how can we solve these problems?
1. The problem with asynchronous design occurs because multiple clocks must be used in complex SOCs.
The problem is that it is difficult to clearly understand where the numerous clocks are applied and where the synchronizers should be located. This problem can be solved by visualizing the clock structure in a tree form. If all engineers involved in chip design understand the clock system in one picture and collaborate, communication errors can be reduced and design completeness can be improved.
2. CDC (Cross Domain Clock) issues are an unavoidable problem in asynchronous design.
Although CDC tools provide information about errors and solutions, they are not easy to solve. This is because as the system becomes more complex, there are too many clocks, and you need to understand the CDC issues between these numerous clock domains and know how to solve each. At this time, it can be much easier if you create a waive file that automatically informs you about the intended CDC designs. In particular, if the clock structure is clearly expressed for not only the clock system inside the chip, but also the CDC points that occur in the interfaces or IP connections outside the chip, it is much easier to understand and respond to them. In the end, the CDC problem is that the ‘invisible connection’ is the core of the problem, and if you change this to a ‘visible structure’, the problem can be easily solved.
3. Since it is a reference for the system configuration,
the difficulty due to change can be solved by making it so that it does not change, or by making a clock so that the entire system operates stably even if it is changed. Making a stable clock means that there should be no problem in generating the corresponding Verilog regardless of the clock combination.
4. The difficulty due to having to make a separate Test Clock for the circuit added for the DFT (Design For Test) configuration
can be solved by making the Function path usable in the same way as the DFT path, so that a separate Test Clock is not created. The Function path is controlled by the SFR, and the DFT path is controlled by the IEEE1687 controller, so that only the control path is different. If you make it this way, the infinite loop itself that occurs when an Implementation stage engineer who does not know the Function mode properly configures the DFT will not be created. This is because the DFT configuration is completed in the design.
5. The difficulty due to the increased complexity of the chip cannot be reduced in today’s SOC chips that perform more functions.
Therefore, we need to solve it by handling complexity properly, not by eliminating complexity. If we can automatically make all the information related to the design consistent with each other, we can handle complexity efficiently.
Just like Power Canvas, Clock Canvas also thought about solving these complex problems at once, and Clock Canvas solved all of these problems at once.
Clock Canvas
1. Designs the clock system design as a tree-structured diagram and generates RTL and SDC.
2. Automatically creates a waive file for the intended CDC.
3. Generates the corresponding Verilog for any combination of clocks.
4. Automatically configures DFT with the same path as Function mode in the design stage.
5. All engineers involved in the design share information consistently in a single diagram.
Just like Power Canvas, Clock Canvas can be used by anyone after a few days.
In addition to RTL and SDC, it also generates all the files necessary for verification, such as test bench, DFT, CDC, and LINT, and drastically reduces the design period.
Clock 시스템 설계의 어려움을 다시 한번 정리해볼까요?
1. Asynchronous설계
2. CDC 이슈
3. 시스템 구성의 레퍼런스 (변경이 어려움)
4. DFT 구성
5. 칩의 복잡도
물론 Clock 시스템을 설계하는데 더 많은 어려움들이 있지만, SOC시스템 구성상의 어려움들만 뽑아서 5가지로 정리해봤습니다.
그럼 이런 문제들을 어떻게 풀수 있을까요?
1. Asynchronous 설계의 문제는
복잡한 SOC에서는 여러개의 clock을 써야하기 때문에 발생합니다. 수많은 clock 들이 어디에 적용이되는지, synchronizer가 어디에 있어야하는지를 명확하게 파악하기 어려운 것이 문제입니다. 이 문제는 clock 구조를 트리 형태로 시각화하여 표현하여 해결 할 수 있습니다. 칩 설계에 참여하는 모든 엔지니어들이 다 같이 하나의 그림으로 Clock 시스템을 이해하고 협업을 하게 되면, 커뮤니케이션 오류도 줄일 수 있고, 설계 완성도도 높일 수 있을 것입니다.
2. CDC (Cross Domain Clock) 이슈는
Asynchronous 설계라면 피할 수 없는 문제입니다. CDC 툴들이 오류와 해결방법에 대해 알려주고 있지만, 해결이 간단하지가 않습니다.
시스템이 복잡해짐에 따라 너무 많은 clock들이 있고, 이 수많은 clock domain간의 CDC 이슈들을 파악해서 각각의 해결방법까지 다 알아야하기 때문입니다. 이때 의도된 CDC 디자인들에 대해서 자동으로 알려주는 waive 파일을 만든다면 훨씬 쉬워질 수 있습니다.
특히 chip 내부의 Clock 시스템 뿐 아니라, chip 외부의 인터페이스나 IP 간 연결에서 발생하는 CDC 포인트들에 대해서도 clock 구조가 명확하게 표현되어 있다면 훨씬 쉽게 파악하고 대응할 수 있습니다. 결국 CDC 문제는 ‘보이지 않는 연결’이 문제의 핵심이고, 이것을 ‘보이는 구조’로 바꿔준다면 문제는 쉽게 풀수 있게됩니다.
3. 시스템 구성의 레퍼런스여서 변경으로 인한 어려움은
변경을 하지 않도록 만들거나 변경을 했어도 시스템 전체가 안정적으로 동작하도록 clock을 만들 수 있으면 됩니다.
안정적인 clock을 만든다는 것은, clock을 어떤 형태로 조합해도 그에 맞는 verilog 생성에 문제가 없어야 한다는 얘기입니다.
4. DFT (Design For Test) 구성을 위해 추가한 회로를 위해 별도의 Test Clock을 만들어야 해서 어려워지는 것은
Function path를 DFT path와 동일하게 활용 수 있도록 만들어서 별도의 Test Clock을 만들지 않으면 됩니다. Function path는 SFR로 제어하고, DFT path는 IEEE1687 컨트롤러로 제어하여, 컨트롤 path만 다르게 하는 것입니다. 이렇게 만들면, Function mode를 제대로 모르는 Implementationa stage 엔지니어가 DFT를 구성하면서 발생하는 무한반복 loop 자체가 생성이 되지 않습니다. 설계에서 DFT 구성을 끝내기 때문입니다.
5. 칩의 복잡도 증가로 인한 어려움은
더 많은 기능을 수행하는 요즘의 SOC 칩에서는 복잡도를 줄일 수는 없습니다. 따라서 복잡도를 제거하는 것이 아니라, 복잡도를 제대로 다루는 것으로 풀어야 합니다. 설계에 관련된 모든 정보를 서로 일관되게 자동으로 만들 수 있다면, 복잡도를 효율적으로 다룰 수 있습니다.
Power Canvas와 마찬가지로 Clock Canvas도 이 복잡한 문제들을 한번에 풀기 위해 고민했고, Clock Canvas도 이 모든 문제를 한번에 풀었습니다.
Clock Canvas는
1. Clock 시스템 설계를 트리구조의 그림으로 디자인하여, RTL와 SDC를 생성해줍니다.
2. 의도된 CDC에 대해 waive 파일을 자동으로 만들어줍니다.
3. 어떤 형태로 clock을 조합해도 그에 맞는 verilog를 생성해줍니다.
4. DFT를 설계 stage에서 Function mode와 동일한 path로 자동으로 구성해줍니다.
5. 설계에 관련된 모든 엔지니어가 하나의 그림으로 정보를 일관되게 공유합니다.
Power Canvas와 마찬가지로, Clock Canvas도 며칠 사용해보면 누구나 사용할 수 있습니다.
RTL과 SDC 외에 테스트 벤치, DFT, CDC, LINT 등 검증에 필요한 파일들도 다 생성해주고, 설계기간을 극단적으로 줄여줍니다.