지난 글에 대하여 방명록에 문의를 주신 분이 계셔서 간단히 적어봅니다.
지난 글에서 Tansaction Level Modeling(이후 TLM)이라는 것이 각광받고 있었지만, 설계에 있어서는 그리 쉽지 않고 tool의 지원이 미비해서 검증 분야에서 잘 되고 있다고 말씀 드렸었습니다.
이 부분에 대하여 kal9님께서 NoC의 경우 TLM이 더 쉽지 않겠는지에 대한 문의가 있으셨습니다.
일단, TLM의 장점은 추상화 정도(level of abstraction)가 높기 때문에 동작을 모델링하기 쉽고, 시뮬레이션이 빠르다는 장점을 가지고 있습니다. 따라서, multi-million gate를 지니는 SoC의 설계가 필요한 시점에서 각광을 받은 것이지요.
그런데, 문제는 TLM이 H/W로 직접적인 mapping할 수 있는 방법이 존재하지 않는데 있습니다. 즉, Transaction level 에서 설계된 모델은 어느 순간 H/W를 만들기 위하여 RT level model화 되어야 하는데, 이는 설계자에게 있어서 이중 부담이 됩니다. (지난 글에서도 언급하였듯, 어느 순간 TL Model to RTL Model(이후 RTLM)이 가능한 synthesys툴이 만들어진다면 — 예전에 behaviroal synthesis 이론과 비슷하겠지요? — 모르겠습니다만..)
따라서, 현재로서는 SoC 전반의 설계를 위하여 혹은 이를 RTL 검증을 위하여 사용하는 경우가 많습니다. 물론, SoC에서 원하는 동작이나 bandwidth가 보장되는지는 확인하기 위하여 TLM을 사용하는 것이 결코 “별일도 아니다”라고 생각하지는 않습니다. 아주 중요한 일이지요. 하지만, SoC 설계 시에 대부분 이런 정량적인 분석 이외에도 educated guess와 추가적인 margin을 적용하는 경향이 두드러지므로(특히 SoC를 만들때 정량적인 측정을 수행한 이후에 향후 application을 위하여 margin을 항상 두는 것을 고려해 볼때..), TLM을 사용하여 정량 분석을 하는 것이 그리 의미가 있는지는 아직 미지수 입니다. 물론 margin을 고려하기 어렵고, 상당히 tight한 application이 돌아가는 SoC라면 아주 큰 의미가 있겠습니다만…
여하튼.. 이러한 이유로 인하여 TLM을 이용한 SoC설계가 학계에서 인정받는 것 만큼 회사에서 폭넓게 받아들여지지는 않고 있는 것으로 파악됩니다. TLM에서 RTLM으로의 자동화된 이전 방법이나, TLM과 RTLM간의 등가성을 확보할 수 있는 방법이 존재하지 않는 단계에서는 TLM에서 SoC검증이 되었다 하더라도, RTLM에서 다시 검증을 해야 하는 운명인 것이지요.
단지, TLM을 이용한 SoC modeling이 있는 경우 이를 reference model로 삼을 수 있으므로, 검증을 위한 모델로서 사용하는 경향은 점점 확대되어 가는 것이겠지요. (이 과정에서 위에 이야기한 SoC에 대한 performance estimation도 가능하구요..)
NoC의 경우 말씀하신 것과 같이 TLM에 대한 요구가 더 절실해 질것으로 보입니다. NoC라는 것이 packet generation/passing overhead를 감수하고 bus로 인한 timing 문제나 loading의 문제를 해결하고자 하는 것이므로, 그 정도의 이득을 얻을 수 있는 용량의 SoC에서 적용될 것이니까요. 이때는 버스를 채용했을 때 보다 traffic이나 networking에 대한 분석이 당연히 어려울 것이므로 educated guess를 통해서 추정해 내는 것도 한계가 있지 않을까요 ^^;
그 정도의 복잡도가 된다면, 아마도 IP사들도, RTLM과 더불어 TLM을 만들어 제공해야 겠지요. 요즘에는 transactor를 이용하여 속은 RTL, 밖은 TL로 만드는 경우도 많습니다만 ^^; 이는 내부의 추상화 수준을 올린 것이 아니라 단지 TLM과 같이 검증하기 위한 방법이므로, TLM이 가질 수 있는 많은 장점을 포기할 수 밖에 없는 것이지요.
아.. 결과적으로 말씀드리자면, TLM은 언제가는 다가올 미래라고 생각합니다.
단지, 위에 말씀드린 TLM to RTLM간의 synthesis 방법의 정립과 TLM/RTLM간의 등가성 검증 방법의 정립이 선행되어야 전반적으로 이 설계 방법론이 폭넓게 받아들여 질 수 있겠지요. (학계에서 열심히 하고 있으니 좋은 결과가 있지 않을까요?) 혹은, 이런것이 없더라도, multi-million gate SoC가 너무나도 일반화된다면, IP 제공 업체들에게 TLM과 RTLM을 모두 제공하라는 전방위적인 압박이 오겠지요 ^^; (이것이 더 현실적일지도 모르겠네요..^^;)
babyworm님글 잘 읽고 있습니다. 바쁘신 가운데도 이렇게 좋은 글들 올리시는 걸 보면 부럽습니다.
저는 TLM을 주로 테스트 벤치에 활용하고 있어요. 말씀하신 것처럼 아직 TLM은 design보다는 verification에 활용도가 높은 것 같습니다.
TLM에 대해서 잘 읽었습니다. behavioral synthesis에 대해서 추가로 하나 덧붙이면, 외국에선, 그 abstraction level에 대해선 다시 생각해봐야겠지만, SystemC나 ANSI C/C++을 합성하여 RTL을 만드는 툴을 제한적으로나마 수년전부터 사용하고 있습니다.^^
systemC나 ANSI C를 이용한 혹은 모델링 언어와 툴을 이용한 시도가 많지요. matlab도 적극적으로 일조하고 있구요. ^^;
대부분 signal processing쪽이나 data flow control과 같이 제한적인 분야에서 사용되고 있습니다만, 설계의 질이 특정 경우가 아니고서는 잘 안나오는듯합니다. 점점나아가겠지요 ^^;
이거 예전에 제가 올린 질문인데…이제야 답변 보았네요.
사실 아직도 하시는 말씀을 잘 이해가 안되네요 ㅠㅠ
저는 대학때 그나마 8bit MCU APP에만 집중해서 경험도 없을 뿐더러
아직도 신입사원이라 힘드네요 ㅎㅎ
정말, 답변 주셔서 감사합니다.
얼마전에 케이던스에서도 시드니(?)라는 Behavioral 관련툴이 공식 발표되고 있는것 보면,
아무래도 SystemC가 뭔가 해줄것 같긴한데…^^