SlideShare a Scribd company logo
1 of 8
CONFIDENTIAL
Lチカからの高位合成挑戦
株式会社システム計画研究所/ISP
2015年12月8日
CONFIDENTIAL
自己紹介
 名前:みつだ けんいちろう
 所属:(株)システム計画研究所/ISP
 ソフトウェア開発専業です。
 入社後、長らく通信装置の組込み開発に従事
RTL設計やFPGAについて、ほぼ知識無し
 2013/11に「画像処理」の部署へ異動
 ZYNQ搭載ボード ZedBoard (AVnet製)と出会う
 目的:自社の画像処理アルゴリズムのアクセラレーション
➡目標:SWから高位合成でアクセラレータを生成してみる
まずは、動けば勝ち!
1
(´-`).。oO(正直、何から手をつければよいのか……?)
CONFIDENTIAL
1ヶ月後、とりあえずZedBoardでLチカ
 DigilintのZedBoardのチュートリアルを改造
2
•ubuntu Linuxが動作
•LED点滅周期をコマンドで設定
•OLEDに弊社ロゴを表示
ISE 14.4でVHDLを書いて作成
CONFIDENTIAL
1年後、ROBUSKEYアルゴリズムを「高位合成」
 2014/8~11月で開発
 担当:私+HW技術者
 InterBEEに参考出品
 実装した機能
 グリーンバック対応
 2K 60fps
 入出力はHDMI
 入力はビデオカメラ
 ZC706で動作
3
ROBUSKEY:独自の高品位クロマキー合成アルゴリズム
CONFIDENTIAL
高位合成へのジャンプアップ
 Xilinxのドキュメントには目を通していたが、何から手を
付けたらいいかイマイチ良くわからなかった。
 Xilinx All Programmable Day 7thでトレーニングを受講
「Cコードベース設計 : Vivado HLS を使用した高位合成」
 高位合成の基礎・基本の理解
 Vivado HLSの使い方を実体験
 HLSで生成されるI/Fについての理解
 貰える教科書はUGよりとっつきやすい!(重要)
4
_人人人人人人人人人人人人人人_
> HLS、すぐにもできそう! <
 ̄ Y^Y^Y^Y^Y^Y^Y^Y^Y^Y ̄
Xilinxのドキュメントを首っ引きしながらいろいろ試した
CONFIDENTIAL
プラットフォームについて
 HDMIの入出力を使えるようにしなければならない!
 評価ボードについているIOが最初から使えるわけではない
➡各種の「リファレンスデザイン」を活用
 HDMI入出力:Avnet FMC-IMAGEONを使用
 付属のリファレンスデザインを改造して対応
 古いVivadoでしか動かない?⇒TLCを修正(IP version関連)
 ZC702/ZedBordにのみ対応⇒制約ファイルをZC702用に修正
 (参考)リファレンスデザインのある場所
 Xilinxのサポートサイト内、XAPPやTutorialの付属ファイル
 ZedBoard.orgのReference Designs/Tutorials
 Digilentの各ボードのDocument/Resource Center
 Analogdevicesのgithub/hdl
5
CONFIDENTIAL
SWエンジニアに難しいこと
 SW向けのアルゴリズムをFPGA向けに修正する
 HLSが対応している文法に修正する
 適宜、指示子を挿入する(UG902を熟読!)
 アルゴリズムの書き直し
 リソースを意識したコードを生成
 最初にHLSのコンパイルが通った!
⇒消費リソースがZedBoardの容量の5倍を超えていた
 アルゴリズムの整理で約3倍⇒とりあえずZC706で動かすことに
 SWの設計・実装スキルとは別物という事に気づく
 SWでいつも使っている書き方が原因で
 HWでは並列化を妨げ、実行速度を低下させる
 消費リソースの増大を招く
➡HW技術者の話を聞く、森岡澄夫氏の本を読んで勉強
6
CONFIDENTIAL
まとめと課題
 まとめ
 HLSでクロマキーアルゴリズムをオフロードできた
 HLSを使うために情報収集が大事
 UGは必読、サポートページの検索も使いましょう
 公式トレーニングは「最初の一歩」にとても良いです
 ユーザ発信の情報を検索(ex.「FPGAの部屋」)
 リファレンスデザインを使ってプラットフォームを作成
 課題
 HLSでも、HW(FPGA)向けの設計に基づいた記述が重要
 実行速度、消費リソース面で大きな隔たりがある
 HLSで作成したIPの検証
 展示会向けのプロトタイプは「動けば勝ち!」品質は未検証
 製品レベルのIPを、HLSで作成することが可能か?
 デザインソリューションフォーラム2015でディスカッション
7

More Related Content

What's hot

Node-RED導入時の効果的な開発を考える
Node-RED導入時の効果的な開発を考えるNode-RED導入時の効果的な開発を考える
Node-RED導入時の効果的な開発を考えるMakoto SAKAI
 
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...74th
 
Infrastructure as Code自身のテストを考える
Infrastructure as Code自身のテストを考えるInfrastructure as Code自身のテストを考える
Infrastructure as Code自身のテストを考える辰徳 斎藤
 
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 - 新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 - Makoto SAKAI
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化Taiji Tsuchiya
 
OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月
OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月
OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月VirtualTech Japan Inc.
 
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択Shingo Kitayama
 
Raspberry PiとWatsonで 音リモコンを開発
Raspberry PiとWatsonで音リモコンを開発Raspberry PiとWatsonで音リモコンを開発
Raspberry PiとWatsonで 音リモコンを開発nodered_ug_jp
 
PYNQ単体でUIを表示してみる(PYNQまつり)
PYNQ単体でUIを表示してみる(PYNQまつり)PYNQ単体でUIを表示してみる(PYNQまつり)
PYNQ単体でUIを表示してみる(PYNQまつり)Kenta IDA
 
PYNQで○○してみた!
PYNQで○○してみた!PYNQで○○してみた!
PYNQで○○してみた!aster_ism
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラLeapMind Inc
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所Hidetoshi Hirokawa
 
20171105 go con2017_lt
20171105 go con2017_lt20171105 go con2017_lt
20171105 go con2017_ltKeigo Suda
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Taiji Tsuchiya
 
OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?Hiroshi Ouchiyama
 
Node-REDで簡単プロトタイピング
Node-REDで簡単プロトタイピングNode-REDで簡単プロトタイピング
Node-REDで簡単プロトタイピングrina0521
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料Naoki Shibata
 
Node-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようNode-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようKota Suizu
 

What's hot (20)

GitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみたGitLabのAutoDevOpsを試してみた
GitLabのAutoDevOpsを試してみた
 
Node-RED導入時の効果的な開発を考える
Node-RED導入時の効果的な開発を考えるNode-RED導入時の効果的な開発を考える
Node-RED導入時の効果的な開発を考える
 
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
Platform io で シュッと arduino 開発を高速化しよう speed up your arduino development with p...
 
Infrastructure as Code自身のテストを考える
Infrastructure as Code自身のテストを考えるInfrastructure as Code自身のテストを考える
Infrastructure as Code自身のテストを考える
 
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 - 新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
新技術で未来の扉を開け! - Node-REDの環境構築と社内導入 -
 
明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化明日からはじめるネットワーク運用自動化
明日からはじめるネットワーク運用自動化
 
OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月
OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月
OPNFV詳細編 – OpenStack最新情報セミナー 2015年4月
 
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
デブサミ2017【17-E-5】エンタープライズにおけるDevOpsの実態!Cloud Native Application Platformの選択
 
Raspberry PiとWatsonで 音リモコンを開発
Raspberry PiとWatsonで音リモコンを開発Raspberry PiとWatsonで音リモコンを開発
Raspberry PiとWatsonで 音リモコンを開発
 
PYNQ単体でUIを表示してみる(PYNQまつり)
PYNQ単体でUIを表示してみる(PYNQまつり)PYNQ単体でUIを表示してみる(PYNQまつり)
PYNQ単体でUIを表示してみる(PYNQまつり)
 
PYNQで○○してみた!
PYNQで○○してみた!PYNQで○○してみた!
PYNQで○○してみた!
 
JUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep LearningコンパイラJUIZ DLK 組込み向けDeep Learningコンパイラ
JUIZ DLK 組込み向けDeep Learningコンパイラ
 
DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所DevOpsにおけるAnsibleの立ち位置と使い所
DevOpsにおけるAnsibleの立ち位置と使い所
 
ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。ニフクラでも できる!Kubernetes。
ニフクラでも できる!Kubernetes。
 
20171105 go con2017_lt
20171105 go con2017_lt20171105 go con2017_lt
20171105 go con2017_lt
 
Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2Introduction to NetOpsCoding#2
Introduction to NetOpsCoding#2
 
OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?OpenVINOとAzure こう連携できるのでは?
OpenVINOとAzure こう連携できるのでは?
 
Node-REDで簡単プロトタイピング
Node-REDで簡単プロトタイピングNode-REDで簡単プロトタイピング
Node-REDで簡単プロトタイピング
 
第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料第4回 SoftLayer勉強会 資料
第4回 SoftLayer勉強会 資料
 
Node-REDのフローをバックアップしよう
Node-REDのフローをバックアップしようNode-REDのフローをバックアップしよう
Node-REDのフローをバックアップしよう
 

Similar to Lチカからの高位合成

第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議Kaoru NAKAMURA
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭りKaoru NAKAMURA
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンスKaoru NAKAMURA
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBMToshiki Tsuboi
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0umisuzume
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングRyohei Kamiya
 
Python用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたPython用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたHirofumi Watanabe
 
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割Tier_IV
 
M5Stackでプロトタイプしてデモ製品を試作した話
M5Stackでプロトタイプしてデモ製品を試作した話M5Stackでプロトタイプしてデモ製品を試作した話
M5Stackでプロトタイプしてデモ製品を試作した話Dan Imagineer
 
Unityでこんなことができる KLab×博多Tech塾
Unityでこんなことができる KLab×博多Tech塾Unityでこんなことができる KLab×博多Tech塾
Unityでこんなことができる KLab×博多Tech塾KLab Inc. / Tech
 
TouchDesigner Beginners' Workshop vol.002
TouchDesigner Beginners' Workshop vol.002TouchDesigner Beginners' Workshop vol.002
TouchDesigner Beginners' Workshop vol.002Imagineers Guild
 
TouchDesigenr Beginners' workshop vol.002 2017/07/17
TouchDesigenr Beginners'  workshop vol.002 2017/07/17TouchDesigenr Beginners'  workshop vol.002 2017/07/17
TouchDesigenr Beginners' workshop vol.002 2017/07/17Dan Imagineer
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介Mori Shingo
 
.NET Micro Framework の基礎
.NET Micro Framework の基礎.NET Micro Framework の基礎
.NET Micro Framework の基礎Yoshitaka Seo
 
SoftBank MR Intel Simulator(仮)の体験について
SoftBank MR Intel Simulator(仮)の体験についてSoftBank MR Intel Simulator(仮)の体験について
SoftBank MR Intel Simulator(仮)の体験について貴文 湯浅
 
Android & Nui & Physical Computing
Android & Nui & Physical ComputingAndroid & Nui & Physical Computing
Android & Nui & Physical ComputingTakahiro KUREBAYASHI
 

Similar to Lチカからの高位合成 (20)

第5回業開中心会議
第5回業開中心会議第5回業開中心会議
第5回業開中心会議
 
Dev(ice)love デバイス祭り
Dev(ice)love デバイス祭りDev(ice)love デバイス祭り
Dev(ice)love デバイス祭り
 
Windows 8 Developers カンファレンス
Windows 8 Developers カンファレンスWindows 8 Developers カンファレンス
Windows 8 Developers カンファレンス
 
160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM160531 IoT LT #15 @ 日本IBM
160531 IoT LT #15 @ 日本IBM
 
01 idea table3.0
01 idea table3.001 idea table3.0
01 idea table3.0
 
ソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティングソニーのディープラーニングツールで簡単エッジコンピューティング
ソニーのディープラーニングツールで簡単エッジコンピューティング
 
Python用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみたPython用ゲームエンジンPyxelで遊んでみた
Python用ゲームエンジンPyxelで遊んでみた
 
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
Unity x 自動運転シミュレーション、自動運転におけるGame Engineの役割
 
M5Stackでプロトタイプしてデモ製品を試作した話
M5Stackでプロトタイプしてデモ製品を試作した話M5Stackでプロトタイプしてデモ製品を試作した話
M5Stackでプロトタイプしてデモ製品を試作した話
 
2018/06/22 Neural Network Console Tutorial
2018/06/22 Neural Network Console Tutorial2018/06/22 Neural Network Console Tutorial
2018/06/22 Neural Network Console Tutorial
 
Unityでこんなことができる KLab×博多Tech塾
Unityでこんなことができる KLab×博多Tech塾Unityでこんなことができる KLab×博多Tech塾
Unityでこんなことができる KLab×博多Tech塾
 
TouchDesigner Beginners' Workshop vol.002
TouchDesigner Beginners' Workshop vol.002TouchDesigner Beginners' Workshop vol.002
TouchDesigner Beginners' Workshop vol.002
 
Pokelabo android web
Pokelabo android webPokelabo android web
Pokelabo android web
 
AutoTVM紹介
AutoTVM紹介AutoTVM紹介
AutoTVM紹介
 
PreadNet
PreadNetPreadNet
PreadNet
 
TouchDesigenr Beginners' workshop vol.002 2017/07/17
TouchDesigenr Beginners'  workshop vol.002 2017/07/17TouchDesigenr Beginners'  workshop vol.002 2017/07/17
TouchDesigenr Beginners' workshop vol.002 2017/07/17
 
福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介福井スマートフォンハッカソン Titanium Mobileの紹介
福井スマートフォンハッカソン Titanium Mobileの紹介
 
.NET Micro Framework の基礎
.NET Micro Framework の基礎.NET Micro Framework の基礎
.NET Micro Framework の基礎
 
SoftBank MR Intel Simulator(仮)の体験について
SoftBank MR Intel Simulator(仮)の体験についてSoftBank MR Intel Simulator(仮)の体験について
SoftBank MR Intel Simulator(仮)の体験について
 
Android & Nui & Physical Computing
Android & Nui & Physical ComputingAndroid & Nui & Physical Computing
Android & Nui & Physical Computing
 

Lチカからの高位合成