Parallelized Logic Simulation

얼마전부터 parallel simulation이 큰 이슈가 되었습니다. 몇몇 기사에서는 3세대 simulation 기법이라고 이야기하더군요.

Verilog-XL 처럼 interpreter 형태를 1세대로, 2 세대를 finesim, VCS, NCVerilog 처럼 compiled 형태를 2세대로, 그리고, 다수의 processor를 동시에 쓰는 형태를 3세대로 이야기하는 거죠.

그간 simulation에서 multicore를 사용하는 건 별로 없었죠.  정확히는 wave dump나 assertion/coverage check 같은 걸 병렬로 하는 건 있었지만, simulation core 자체를 multicore로 하는게 별로 없었던 거죠.

제 기억에 남는 건 DAC13의 must see list에 있었던 rocketsim이 처음이었던 것 같습니다. GPU를 사용해서 VCS와 같이 사용했을때 gate level simualtion을 대략 23배 빠르게 해준다는 이야기때문이었죠.

그러다가 조금 조용해졌었는데, Best EDA Tool 2016 #3에 뽑혔을때 조금 더 많은 이야기를 접할 수 있었고, 작년 DVCON2017에서는 Cadence의 Xcelium(Rocketsim을 인수한 다음 이름을 바꾼 거죠.)과 Synopsys의 VCS FGP(위 link의 Cheetah VCS가 이름을 바꾼 겁니다.)가 본격적으로 마케팅하는 것을 볼 수 있었습니다. 이전에 DVCON2017에 대해서 적은 글에도 간략하게 적었습니다만, 두 툴간에 신경전(서로 은근히 까는?)도 있었고요.

Xcelium의 경우 GPU기반에서 출발해서 Multi-core 형태로 발전한 상태였고, 배경에는 simulation의 경우 단순한 연산보다 복잡한 연산이 많아서 GPU보다 processor core를 병렬적으로 사용하는게 좋더라.. 는 담당 엔지니어의 설명이 있었습니다.

사실 VCS FGP에 대해서는 비교적 잘 모르던 상태에서 들었는데, VCS 사용자의 경우 “무료”로 사용할 수 있을 것이고 곧 사용할 수 있을 것이다. 라는 부분이 흥미를 끌었죠. 내부적으로 VCS만 사용하고 있어서 말입니다.

다만, 두 툴 모두 RTL sim 보다는 Gate level sim에서 성능 향상이 크며, RTL sim의 경우는 설계에 따라 큰 차이가 있다… 를 깔고 들어갔고, Xcelium의 경우 3~4배까지는 된다고 이야기했던 반면, 당시 VCS FGP는 설계에 따라 2배 정도는 된다는 이야기를 해서 아주 큰 기대는 하지 않고 있었습니다. 보통 이렇게 이야기하면 생각보다 훨씬 안좋은 경우가 많으니까요.

결론적으로 말하자면, Parallel Simulation 쓰라는 이야기를 하고 싶습니다. 설계에 따라 다를테니 뭐가 좋다고 이야기하기 쉽지 않겠지만, core를 3~4개 정도를 사용하는 수준은 분명히 좋아집니다.

제가 테스트해본 설계에서는 main processor 이외에 3개 정도 core를 더 쓰면 대략 2배 정도 빨라지는 결과를 얻었는데, 4개 정도를 넘어가면 core를 더 사용한다고 더 좋아지지는 않았습니다. 아마도 설계에서 얻을 수 있는 병렬성이 이 정도겠죠.

곁다리로, 요즘에 새로운 프로세서들을 사용할 기회가 있어서 같이 테스트 했는데요. 요건 뭐에 걸릴일은 없을테니..

제가 기존에 쓰던 I7-3770K에서의 simulation  time을 100%라고 했을때, 상대 수행 시간입니다. (아래는 parallel simulation이 아닙니다.) 보시면, 적어도 VCS에 있어서는 intel의 8세대 CPU들이 훨씬 빠릅니다. 같은 세대인 Ryzen Threadripper 1950x와 비교해보면 말이죠. (물론, Threadripper의 경우 multicore에 힘을 실은 프로세서죠.). 사실 parallel로 비교해도 16 core짜리 threadripper보다 6core짜리 i7-8700K가 더빠릅니다. 🙂

rel. perf.
i7-3770K 100%
Ryzen 1950X 85%
i5-8400 68%
i7-8700K 52%

Zen+ Archtiecture는 이미 설계가 끝나서 출시 예정이고, Zen2 architecture 기반의 CPU들이 올해 나온다니, 그때는 single thread performance가 얼마나 비교가 될지 궁금하긴 하네요. (사실 meltdown bug 때문에 intel cpu performance가 떨어지긴 하겠습니다만,  그래도 위의 격차를 채우긴 쉽지 않을 것입니다. ) 잡설입니다만, 제 생각에 TLB에 PCIDs를 적용하고 있는 최신 processor들의 경우 약간의 트릭으로 이 버그를 피해나갈 수 있지 않을까 싶은 생각이 드는데요..  프로그램 컴파일을 다시 요구할 수 있는 embedded라면 compiler workaround로 피할 수 있을 것 같은데(예전에 요런 짓을 많이 해봐서..), PC/workstation용으로는 이게 불가능하니 대신 뭔가 해야겠죠? 안그래도 CES에서 비슷한 이야기가 나온 걸로 봐서는 뭐가 있겠죠.

원래 내용으로 돌아와서, simulation이 목적이라면 아직은 intel CPU를 사용하시라는 점. 할 수 있으면 parallel simulation을 사용하시라는 것. 이 두 가지만 기억하시면 되겠습니다. 🙂

DAC2017 간략 리뷰

자세한 리뷰는 회사 report로 열심히 제출했기 때문에 다시 한번 다른 언어로 적을 힘이 남아 있지는 않네요. 그래서, 이번에도 (2달이나 지나서..) 간략 리뷰. 🙂

원래대로라면 올해 DVCON에 갔으니, DAC에는 갈 차례가 아닌데 회사에서 DAC exhibition hall에 부스를 만들었고, 살짝 기술 지원이 필요할 수도 있으며, 한창 바쁜 이 시점에서 잠시 사라져도 크게 무리없고, 잘 떠들어대는 사람을 찾다보니 제가 간택된 것 같습니다. 출장이 힘들어도 배울꺼리가 있는 건 기회가 되면 참석하겠다는 주의라(요즘에 이런 기회가 아니면 공부를 잘 안하기도 하고..) 저 역시 기쁜 마음 + 부스를 지켜야 한다는 부담감을 가지고 참석했습니다.

부스는 IP pavilion 옆에 Design&Reuse 부스를 공유했습니다.

DAC는 DVCON과 비교하면 워낙 다루는 분야가 넓어서 힘들기도 합니다만(미리 논문을 대충이라도 읽고 어떤 걸 들어갈지 결정하는 것부터 어렵죠.), 반대로 크게 관심을 가지지 않았던 분야에 대한 최신 정보를 얻게 된다는 장점도 있습니다. 짧게만 살펴보죠.

일단 올해 Keynote는 모두 IoT 관련 내용이 차지했습니다.

짧게 이야기하자면, IoT라는 부분이 단순하게 인터넷과 연결된 장치들이라 치부하기 쉬운데, 네트웍을 통해 데이터를 전송하고 이걸 잘 처리한 후 제어해서 사람이 별로 “이질감 없게” 받아들일 수 있도록 해야 한다는 것, 그래서, IoT에서 중요한 건 데이터를 잘 처리하는 것(Machine Learning을 포함해서)이 중요하다는 점을 많이 강조하더군요. 더불어, 이런 부분에 대해서 경쟁력을 갖추기 위해서 SoC에 주목하는 시스템 회사들도 많다는 것 등에 대한 이야기가 나왔습니다. 공통적으로 4차 산업 혁명으로 불리는 IoT 분야가 어마 어마한 기회라고 인식하고 있다는 점과 이 부분에 제대로 대응하지 못하면 기업이 힘들어질 것이라 여기는 점도 흥미로웠습니다.

재미있었던 건 emotional computing이란 부분이었는데요. 심박, 얼굴 인식 등을 통해서 현재 기분을 인식할 수 있는데(사진에서 어떤 기분이 얼마나 포함되어 있는지 분석하는 앱을 보신적 있을 겁니다.), 사람이 표정만으로 감정을 느끼는 것보다 이 인식의 정확도가 높은 경우가 많다고 합니다. 게다가 간단한 머신 러닝을 이용해서 그 동안 측정된 감정에 대한 로그에서부터 감정 예보가 가능하며 이게 비교적 정확하다고 합니다. 이를 통해서 감정 조절(특히 자살) 문제에 적극적으로 대응할 수 있다는 것도 의미있는 분야였던것 같습니다.

Technical Session의 경우 워낙 많은 분야라서 한정적으로 이야기할 수 밖에 없을 것 같은데요. 느낌만 단편적으로 적죠.

  • RISC-V 인상적이다. 한번 보자. 내가 아직 프로세서 회사 다니고 있었다면 RISC-V에서 기회를 봤을 것 같다.
  • Python을 사용하는 건 대세다. 간단한 스크립팅에서 데이터 분석에 이르기까지..
  • Machine Learning은 EDA에서도 많이 적용되어 테스트 되고 있다. 특히 RTL단계에서 P&R 이후의 PPA를 추정하는데 사용하면 정확성이 높아져서 TAT가 줄어드는 예가 있다고 한다.
  • (EDA업계 발표의 경우..) 검증 관련 tool과 기술에 대한 부분은 대부분 DVCON에서 이미 발표된 것을 약간 추가해서 재탕했다. 다만 사용자의 use case는 다른 것들이 있었다.
  • EDA 업계/사용자 모두 Cloud에 대한 관심이 있지만, 아직 매우 제한적이며, 특히 라이센스 이슈는 아직 해결하기 쉽지 않을 것으로 보인다.
  • Design data를 취합하고 가공하는 것에 비교적 시간을 많이 사용한단다. (우리만 그런줄 알았는데..) 이거 자동화하려는 시도들이 있다. (우리도 하고 있는데..)
  • IP 설계가 쉽지 않아지고 있다 – 설계 자체에 대한 문제보다는 customization에 대한 요구가 워낙 다양해서..

DAC를 다녀온지 벌써 2달쯤 되었는데, DAC에서 이야기를 들으면서 이런 저런 것을 시도해봐야겠다는 생각을 하지만, 돌아와서 작업을 하다보면 어느 틈에 시간이 훌쩍 지나가 있네요. 하려고 했던거 해야겠습니다.

Getting Started with UVM

오랜만에 책 소개입니다.

https://www.amazon.com/Getting-Started-UVM-Beginners-Guide/dp/0615819974

지난 연휴때 읽어볼 요량으로 샀는데, 이곳 저곳 다니다가 이번 연휴 때 읽게 되었습니다. 특이하게 스타벅스에서 읽었네요. (음.. 제 생활 패턴으로 봤을 때 안 특이한건가.. 싶기도 하네요..)

이 책은 사진을 보시면 아시겠지만 엄청나게 얇습니다. 솔직하게 이야기하면, 받고나서 좀 아까웠습니다. (뭐 두꺼운게 좋은 책이란 말은 아닙니다만, 이렇게까지 얇으면 본전 생각이 살짝… 어흠 어흠)

얇은 만큼 미덕이 있습니다. 바로 금방 읽을 수 있다는 점이죠. (딸래미와 같이 스타벅스 2번 갔다오니 다 읽었더라… 정도로..)
다른 미덕은 아주 간단한 예제 하나로 UVM에서 사용되는 주요 구성요소를 한번 후루룩 보여준다는 점, 그리고 깊이 들어가지는 않지만 코드를 전반적으로 문단별로 설명해서 어떤 동작을 하는지 설명해 주는 점 역시 장점으로 생각하고 있습니다.

따라서, SystemVerilog는 대충 알지만, 내일부터 UVM을 써야 하는데 어디서부터 해야 할지 모르겠다는 생각이 든다면, 이 책이 시작점 정도는 될 수 있습니다.

단점은 중요한 개념들 중에 몇 가지가 좀 많이 빠져 있습니다. 사실 두께로 봤을 때 당연히 많은 내용이 생략될 수 밖에 없으며, 이런 것들은 나중에 reference manual을 보면 될 것으로 생각합니다. 다만, port/export 관계 같은 건 제대로 설명하는게 좋지 않았을까 싶습니다.

사실 책을 읽으면서 이것 저것에 대한 배경 지식이 없어도 내가 이걸 쉽게 이해할 수 있었을까… 라는 생각도 듭니다. 아마도 Verilab의 교육 프로그램의 교재로 사용되면서 강사가 중간 중간 개념을 설명해주는 경우라면 문제가 없을 것이지만, 아닌 경우에는 약간 혼란스러울 수 있었을 것 같습니다.

하지만, 대충 article 하나 정도의 두께(뒷 부분은 소스코드로 장수를 채운거라.. 실제 내용은 대충 70 page 남짓)로 대략적인 개념을 훓은 건 잘했다고 봅니다.

권장대상: SystemVerilog는 알지만 UVM은 처음이고, “내일”부터 뭔가 해 볼 예정인 사람.

비권장 대상: 논리적으로 이야기가 명확히 통해야하고, 중간 중간 설명이 생략된 상태에서 그냥 따라하라고 하면 화딱지가 나는 사람.

참고로, verilab에 가면 이 책에서 사용된 예제의 source를 받을 수 있네요. 참고하시면 될 것 같습니다.