2013년 1월 12일 토요일

Plunify : Cloud Accelerated(?) FPGA Compile

이번 글에서는 재미있는 SaaS(Software as a Service) 형태의 Cloud 서비스인 Plunify를 소개하려고 합니다. 언젠가 Cloud9이라는 Cloud 환경하에 있는 IDE(Integrated Development Environment) 서비스에 대한 이야기를 들었을 때, 재미있는 개념이라고 생각하면서도 Cloud9이 지원하는 Javascript나 Ruby 등의 언어는 관심사가 아니었기 때문에 깊이 생각해 보지 않았습니다. 다만 embedded software 분야에서도 비슷한 것을 만들면 어떨까 생각을 해보다가, build는 가능할 지 모르지만 target board에 download하거나 debugger를 연결할 필요가 있으므로 쉽지 않겠다 싶었습니다. 그로부터 몇개월 후에 mbed라고 NXP의 LPC(ARM Cortex를 사용한 MCU) board를 팔면서 C/C++ Cloud IDE를 제공하는 site 소식을 듣게 되면서 내 생각이 짧았다는 것을 알게 되었습니다. Cloud IDE에서 build한 binary를 받아서 USB를 통해 disk drive 형태로 연결된 board에 복사하면 download가 끝나는 형태라고 합니다. 물론 debugger 장비의 연결과 같은 것은 지원하지 않지만, cross compiler 등의 tool setting과 같은 귀찮은 작업 없이 개발을 시작할 수 있다는 것은 상당히 매력적이라 볼 수 있습니다. 또한 online 상에서 작업을 하게 되면 협업을 하기 쉽고 다른 서비스와의 연결도 쉽게 접근할 수 있는 이점도 생깁니다. mbed에 대한 내용을 접하고 나서는 FPGA나 Chip 개발에도 비슷한 서비스를 만든다면 어떤 모습일까 생각을 하게 되었는데, Plunify 라고 그런 것을 표방하는 서비스를 알게 되었습니다.


http://www.plunify.com/

Plunify는 Cloud Accelerated Chip Design이라는 모토를 가지고 있습니다. 하지만 사이트를 살펴본 결과 아직까지는, 다음과 같은 FPGA compile에 관련된 3가지 서비스만을 제공하는 것으로 보입니다.

- FPGAAccel Web
Cloud 위에 있는 머신에서 Altera Quartus II Web Edition을 돌리는 것으로, 사용자는 web browser로 해당 작업을 제어할 수 있게 만든 서비스입니다.

- Explorer++(Beta)
Xilinx ISE의 SmartXplorer의 동작을 cloud 상의 여러 머신에 나누어 돌릴 수 있게 하는 기능입니다. Xilinx ISE가 제공하는 SmartXplorer는 조건(?)을 바꾸어 가며 compile을 여러번 돌려서 좋은(timing/area 등의 측면에서) 결과를 찾는 기능인데, 당연히 여러 머신에 나누어 돌릴 수 있으면 더 빠른 결과를 볼 수 있겠습니다. Plunify는 이 서비스를 위해 별도의 client software를 제공하고, 그 client software가 사용자의 머신에 있는 Xilinx ISE와 연동하여 동작하는 형태를 가집니다.

- FPGAAccel Client
Client software를 통해 shell 환경에서 Altera Quartus II Web Edition을 돌릴 수 있게 하는 서비스입니다. Shell 환경을 web browser 위에서 제공하지 않고 왜 별도의 client software로 처리하는지는 알 수 없지만, SmartXplorer와 마찬가지로 shell 환경으로 option을 바꾸어 가며 compile을 여러번 수행하여, 원하는(좋은) 결과를 찾는 것을 목적으로 하는 것으로 보입니다.

FPGA 설계를 하다 보면 timing이나 area 문제로 인해 고통 받는 경우가 종종 있습니다. 보통의 경우 설계해야 하는 기능이 빡빡하게 들어갈 만한 크기(LUT 갯수)의 FPGA를 선택하게 되므로, area의 여유가 많이 있을 수가 없습니다. 그런데 a
rea의 여유가 줄어들게 되면, 자연스럽게 timing 문제가 생기는 경우가 많습니다. FPGA는 특성상 대부분의 timing delay가 logic cell이 아니라 routing에서 발생하는데, 설계가 커질수록 routing resource가 줄어들어 delay가 커질 가능성이 크기 때문입니다. 아주 이상한 경우에는 critical path에 logic은 두어 단계만 존재하고 routing delay만 매우 커서 해당 부분의 rtl을 변경해도 줄일 수 없는 경우도 있습니다.
위와 같은 문제가 있는 경우 컴파일 옵션을 변경하거나 RTL의 일부를 변경하며 컴파일을 여러번 돌려 해결을 시도하게 됩니다. Plunify는 이런 경우 작업자의 머신이 아니라 cloud위에 있는 머신에서 병렬적으로 돌릴 수 있게 해주는 서비스라고 할 수 있습니다.

그런데 아직까지는 사용하는 데 여러 제한 사항이 있어 보입니다. 우선 Software license 문제로 추측됩니다만, Xilinx ISE에 대한 지원이 Altera Quartus II와는 달리 부족합니다. 그나마 Altera Quartus II 조차도 Web edition 뿐으로 사용할 수 있는 FPGA가 제한 받습니다. 또한 3rd parity IP를 구매하여 사용할 경우, 일반적인 경우 개발 머신의 hostid를 이용하여 license file을 받게 되는데, Plunify에서는 어떻게 할 수 있는지 모르겠습니다.

위와 같은 제한 사항의 해결뿐 아니라, Plunify모토대로 Chip 설계 분야로 진입하기 위해서는 EDA tool vendor(FPGA vendor 포함), IP provider 등과 협상을 해야 할 것 같은데, 쉽지 않을 것 같습니다. EDA tool vendor의 경우에는 오히려 Plunify 경쟁 서비스를 직접 만들 수도 있기 때문입니다. 결국 사용자를 많이 확보하여 협상력을 키우는 수 밖에 없을 텐데, 현재 제공되는 서비스만으로는 뭔가 부족한 느낌입니다. 어떻게든 가치 있는 여러 서비스들을 추가하면서 입소문을 내고 사용자를 모을 필요가 있어 보입니다. 어떻게 할 지 지켜볼 일입니다.



4 개의 댓글:

준세기 :

오늘 블로그 처음 부터 끝까지 정주행 했네요.^^
정말 좋은 글 잘 읽었습니다. FPGA나 반도체 공정에 대해서 정리 된 것들을 찾기가 어려 웠는데, 너무 잘 정리해 놓으셨더군요.

감사합니다!! :)

익명 :

저도 2틀걸려서 정주행 했네요~ FPGA와 칩설계 관련하여 정말 많은 도움을 받았습니다.
블로깅 글쓰시는 스킬이 굉장히 뛰어나신 것 같습니다.
감사합니다~ ; )

Unknown :
블로그 관리자가 댓글을 삭제했습니다.
Unknown :
블로그 관리자가 댓글을 삭제했습니다.

댓글 쓰기