
In the previous column, “Semiconductor Design Complexity and Cost,” I discussed that complexity directly correlates with cost.
Since overall complexity is ultimately determined by the complexity of the most complex step, the complexity of semiconductor design becomes O(n²), which is the complexity of the most expensive software.
However, there’s something I haven’t discussed.
This is the SOC System Design area, which affects all stages: Architecture, IP Design, Integration, Layout, and Software.
Interestingly, system design isn’t discussed much.
System design is connected to all areas of semiconductor design, as shown in the figure above.
1. It must receive and implement the input of the architecture, and
2. This corresponds to the resource allocation of IP. No matter how good the specifications of the IP are, if it is not allocated the appropriate resources, its performance will inevitably be reduced.
3. The integration stage provides the design that serves as the foundation of the chip, such as the clock and power controller. The chip will not operate without the clock or power controller.
4. The layout stage provides the information required for the physical design, including the P&R (Place & Route).
5. The overall control method for how the software should operate is determined by the system design.
In this way, the overall complexity of the chip design varies depending on how the system design is designed and how it is managed.
If the system design is good, the overall complexity
O(System Design) = O(max (2ⁿ, n log n, n, n², n²)) = O(2ⁿ)
added at each stage, but it will eventually become O(n²), which is the complexity of software with the highest complexity in actual semiconductor design.
On the other hand, if the system design is not done properly, the complexity at each stage will accumulate and amplify, and in the worst case,it may explode to
O(System Design) = O(2ⁿ × n log n × n × n² × n²) = O(2ⁿ × n⁶ × log n)
However, the n used here is a different variable for each stage, but it is expressed conceptually in a simplified manner.
It is difficult to quantify the cost of direct system design,
but system design can be said to be the key that organically connects the overall complexity and cost.
이전 컬럼 “반도체 복잡도와 Cost” 에서 복잡도는 곧 비용이라는 얘기를 했습니다.
전체 복잡도는 결국 가장 복잡한 단계의 복잡도로 결정 되기 때문에, 반도체 설계의 복잡도는 가장 비용이 많이 드는 소프트웨어의 복잡도인 O(n²)이 됩니다.
근데, 얘기하지 않은 부분이 있습니다.
Architecture, IP Design, Integration, Layout, Software 모든 단계에 영향을 주는 Clock, Power, DFT, Bus등의 SOC System Design 영역입니다.
그런데 신기하게도, 시스템 설계 대해서 이야기를 잘 하지 않습니다.
시스템 설계는 아래의 그림에서 보는 것처럼 반도체 설계의 모든 영역과 연결되어 있습니다.
1. Architecture의 input을 받아서 구현해야 하고,
2. 이는 IP의 리소스 할당에 해당합니다. IP가 아무리 Specification이 좋아도, 적절한 리소스를 할당 받지 못하면 성능이 떨어질 수 밖에 없습니다.
3. Integration단계에는 Clock이나 Power Controller 같은 칩의 근간이 되는 설계를 제공합니다. Clock이나 Power Controller가 없으면 칩은 동작하지 않습니다.
4. Layout에는 P&R(Place & Route)을 포함한 Physical 설계에 필요한 정보를 제공합니다.
5. 소프트웨어가 어떻게 동작해야하는지에 대한 전반적인 컨트롤 방식은 System Design에 의해서 결정됩니다.
이처럼 시스템 설계가 어떻게 설계 되느냐, 이를 어떻게 관리하느냐에 따라 칩 설계의 전체 복잡도가 달라집니다.
시스템 설계가 잘 된다면, 각 단계에서 불필요한 복잡도가 거의 추가되지 않아 전체 복잡도는,
O(System Design) = O(max ( 2ⁿ, n log n, n, n², n²)) = O(2ⁿ)
으로 수렴하게 되지만, 결국 실제 반도체 설계에서 복잡도가 가장 높은 소프트웨어의 복잡도인 O(n²)이 될 겁니다.
반대로 시스템 설계가 제대로 되지 않는다면, 각 단계에서의 복잡도가 누적되고 증폭되어 최악에는
O(System Design) = O(2ⁿ × n log n × n × n² × n²) = O(2ⁿ × n⁶ × log n)
으로 폭발할 수도 있습니다.
단, 여기서 사용된 n은 각 단계별로 다른 변수들인데, 단순화하여 개념적으로 표현한 것입니다.
직접적인 시스템 설계의 비용을 정량화하기 어렵지만,
시스템 설계는 전체 복잡도와 Cost를 유기적으로 연결하는 핵심이라고 할 수 있습니다.