아무래도 ASIC의 존재 이유가 월등한 성능이라는 측면보다는 비용과 전력소모라는 쪽으로 이동하고 있는 시대이다 보니, 저전력 설계라는 것이 중요한 이슈가 되고 있습니다.
저도 예전에 석사시절에 저전력 CAD도구를 주제로 논문을 썼었는데, 그때 제가 잠정적으로 내린 결론은 이미 만들어진 아키텍쳐에서 RTL수준에서 해낼 수 있는 저전력 설계란 제한적이다.. 라는 사실입니다.
즉, 설계 엔지니어가 항상 염두에 두어야 하는 사항은 이제 얼마나 저전력을 고려해서 아키텍쳐를 만들것인가.. 라는 질문입니다.
이때, 아키텍쳐를 만드는 사람은 CAD tool에서 어떤 형태의 모듈에 대하여 저전력화 시킬 수 있는지를 반드시 고려해서 아키텍쳐를 만들고, 이를 구현해야 한다는 점입니다.
아키텍트를 포함해서 front-end쪽 엔지니어가 아무리 circuit의 저전력을 고려해도 이를 합성툴을 비롯한 CAD툴에서 지원해주지 못하면 한마디로 말짱 꽝입니다.
아키텍트는
1) 전체적인 signal transition을 줄일 수 있는 아키텍쳐를 만들어야 하고,
2) 가능하다면, transition이 많은 신호들을 구분하여 따로 특정 지을 수 있어야 하며,
3) 각 모듈의 enable조건을 필수적으로 고려해야합니다.
이를 위해서는 우선, 각 동작에 따라 어떤 모듈이 어느정도 활성화될 것인지(다시 말하면, 전력소모를 할 것인지)에 대한 감이 있어야 합니다.
이러한 감은 많이 디자인해보면 쉽게 잡을 수 있습니다.
디자인 경험이 쌓이면 그림을 그리면서, 대략적으로 이 유닛은 몇 게이트 정도에 무슨 공정에서 몇 ns정도 나올것인지 하는 대략적인 감이 있습니다. 그리고, 해당 유닛이 어느정도 동작할 것인지에 대한 느낌도 오죠..
(물론, 이런 느낌을 얻으려면, 그 전에 설계와 분석을 몇번정도 철저히 해 봐야 합니다. 특히 분석이 중요하죠..)
이후에는 CAD툴에서 지원하는 automatic RTL clock gating기법을 위한 코드를 잘 생각해 보아야 합니다.
synopsys를 사용한다면 HDL compiler (design compiler가 아니고, 그 앞단에 있는 툴이죠.. 보통은 통합되어 있어서 잘 못느끼지만요..)에서 어떤 코딩 스타일을 어떻게 변환하는지에 대하여 잘 이해하고 있어야 합니다.
코딩이란 결국 (GTECH) gate level로 mapping되고, 이후에 tech library로 변환되는데, 초기에 gate level mapping이 잘되면 합성의 결과가 좋을 수 밖에 없겠죠..
저전력에서 사용하는 power compiler도 마찬가지 입니다.
좋은 gate level netlist가 있어야 좋은 결과가 나옵니다. (특히 HDL compiler단계는 중요합니다.)
따라서, 좋은 아키텍트 또는 ASIC designer가 되고 싶으시다면, 전반적인 기술에 대한 이해, 경험, 그리고, CAD툴에 대한 이해가 필요합니다.