Help us understand the problem. What is going on with this article?

Polyphony 誕生:「Hello World」

More than 1 year has passed since last update.

Polyphony 誕生

もともと個人的にも企業としてもコンパイラ技術を生かしてみたいという
気持ちがあった。2007 年頃に携帯電話の仕事をしている時に、「RTOS + Script 言語」で開発効率をアップしようというアイデアがあった。当時は Scheme をベースにして Java Script という考え方だった。本当は Java がよいのだろうけど権利関係で無理だろうなと思っていた。その後、Android にあっさり追い抜かれる。

そして、Polyphony。Python をベースにするというアイデアはメイン開発者の K さんのもので、2015/01/16 の高位合成友の会の Synthesijer に刺激され、その数か月後には Polyphony の最初のバージョンが動いていた。開発秘話というものはない。気が付いたら K さんが作っていたのだ。そして 2015/12/08 の高位合成友の会での発表、2016年1月発売のFPGA マガジン No.12への寄稿と続いていく。

HelloWorld

「Hello World」という言葉は今や開発者でなくても使う言葉になった。組み込みシステムの開発者にとって特別な意味をもつ言葉だったので、ガレージで味わう立ち上げの瞬間の鼓動を共有できずに広まってしまっていることにはちょっとした取り残されを感じてしまう。

Polyphony が生成するコードは Verilog-HDL であり、FPGA 等をターゲットとしたコンパイラなので、組み込みシステムのそれとはちょっと違う。立ち上げ確認に putc も UART も期待できない。ただし、$display を生成する
組み込み関数の print が用意されているので、シミュレーション上では「Hello World」が可能だ。やってみよう。

ソースコードは次のようになる。

hello.py
from polyphony import testbench

def hello():
    print("Hello World.")

@testbench
def test():
    hello()

test()

コンパイルしてみよう。pip3 が入っていれば polyphony をインストールすることが出来る。

$ pip3 install polyphony
$ polyphony -V
polyphony 0.3.2
$ polyphony hello.py
$ ls
hello.py  hello.v  polyphony_out.v  test.v

出来たソースは hello.v polyphony_out.v test.v の3つだ。polyphony_out.v が実機をターゲットにしたトップモジュールになる。test.v はテストベンチ。シミュレータがあれば実行することが出来る。ここでは iverilog を使う。

$ iverilog -o hello polyphony_out.v test.v
$ ./hello
Hello World.
Hello World.
Hello World.
Hello World.
  150:finish
Hello World.

Tutorial はここにある

ここではざくっと Hello World をシミュレーションで実行してみた。
細かいインストールは割愛した。より細かいチュートリアルが必要な人は次の URL を見てほしい。

http://polyphony.sinby.com/tutorial.html

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away