
Having previously defined integration, I’ll now define why this part is so difficult.
Many people assume integration is difficult simply because there are too many connections.
Therefore, the first solution that comes to mind is automation.
I’ve used many automation solutions.
I’ve wired things up in Verilog, one by one, and I’ve also used TCL and Perl scripts.
I’ve tried it with a plugin called autoverilog, which uses a unique LISP syntax,
and I’ve also tried it with the IPXACT format.
But the act of making connections itself cannot truly be automated.
Because integration is a 1:1 mapping of meaning.
No matter what language you use,
no matter what tool you adopt,
the amount of meaning that must be mapped does not decrease.
Integration is difficult not because of quantity, but because of meaning.
Every connection must align perfectly with its intended meaning.
Many connections carry physical or architectural implications.
No matter how simple, if you don’t know the reset structure of the entire chip,
the probability of a reset connection functioning properly is low.
The same goes for clocks.
If you connect a clock without understanding the clock architecture, the chip will not operate correctly.
Similarly, if an interrupt isn’t plugged into the correct port, the software won’t be able to use it.
Integration is difficult because implicit architectural intent must be translated into explicit connection decisions.
You don’t need to master every domain like a power architect or a clock architect.
But you must understand the overall structure of the chip broadly enough to make the right choices.
That is why integration work is often outsourced.
However, the more it is outsourced, the higher the chance that overall design time increases.
For engineers who have worked on a chip for years, its structure feels intuitive.
But for new engineers, understanding that structure within a limited schedule is itself a major task.
The person giving guidance becomes exhausted.
The person receiving guidance becomes exhausted.
Schedules begin to slip.
Integration may look like a simple task.
But without understanding the intent behind it, it becomes one of the most difficult tasks in chip design.
기존에 인테그레이션을 정의했다면,
이제 이 부분이 왜 어려운지를 정의해보려고 합니다.
많은 경우 Integration이 어렵다고 하면 커넥션이 많아서라고 생각합니다.
그래서 가장 먼저 떠올리는 해법이 자동화 입니다.
저는 꽤 많은 자동화 솔루션을 써봤습니다.
한땀 한땀 verilog로 wiring을 했었고,
tcl 스크립트나 perl 스크립트를 통해서 wiring을 했던 시절도 있었습니다.
autoverilog라는 특이한 LISP문법을 가지는 plugin을 통해서도 해봤고,
IPXACT포맷을 통해서도 해봤습니다.
근데, 커넥션이라는 행위 자체는 뭘해도 자동화가 되지 않습니다.
왜냐하면, Integration은 정보의 1:1 매핑이기 때문입니다.
언어가 무엇이 됐건, 툴이 무엇이든
결국 매핑 해야하는 일의 양은 줄어들지 않습니다.
Integration이 어려운 이유는 양이 아니라 의미입니다.
모든 커넥션이 의미와 완벽하게 맞아야하고,
많은 수의 커넥션이 물리적 혹은 설계적 의미를 가지기 때문입니다.
아무리 간단 하더라도, 전체 칩의 리셋 구조를 모른다면, 리셋 커넥션이 제대로 동작할 확률은 떨어집니다.
클럭도 마찬가지 입니다. 클럭 구조를 모르는 상황에서 연결한다면, 칩은 정상 동작하지 않습니다.
인터럽트 하나 역시, 정확한 포트에 꽂히지 않으면, 소프트웨어가 사용할 수 없습니다.
Integration이 어려운 이유는
이렇게 암묵적인 설계 의도를 커넥션이라는 구체적인 선택으로 변환해야 하기 때문입니다.
파워 아키텍트나 클럭 아키텍트처럼 특정 분야를 완벽하게 이해할 필요는 없지만,
칩 전반의 구조를 넓게 이해하고 있어야 해서 어려운 일입니다.
그래서 커넥션을 외주화 하는 일이 많은데,
외주를 많이 할수록 오히려 칩의 설계 시간이 늘어날 가능성이 커집니다.
오랫동안 한 칩을 설계해온 엔지니어들에게는 너무 익숙한 구조가,
새로운 인력들에게는 주어진 시간 안에 구조를 이해 하는 것 자체가 큰 작업입니다.
그래서 가이드를 주는 사람도 지치고, 가이드를 받는 사람도 지치고,
일정은 밀리기 시작합니다.
매우 단순한 작업인지만, 그 안에 숨은 뜻을 알지 못한다면,
매우 어려운 작업이 되는 것이 Integration 입니다.