LoginSignup
9
4

More than 5 years have passed since last update.

PYNQ に Polyphony をインストールして使ってみる

Posted at

PYNQ が IPython あらため Jupyter をつかっているとのことで、ここは Python つながりで、Polyphony をつかって Python のコードを verilog に変換してみます。
ついでに Zybo とかその後 i386 の docker でのチャレンジも

Polyphony のインストール

pip3 で簡単にインストールできます。

$ pip3 install polyphony

Jupyter へアクセス

PYNQ は Samba を使っているので pynq:9090 で Windows からアクセスできたりします。
Juypter

Folder をつくる

New のメニュから Folder を選択して Folder を作ります。ここでは Polyphony という名称に変えました。
create folder

list11.py を入力

New で Text File を選び(Python 3 は選ばない) 下の Python ソースを打ち込みます。できたソースは untitled.txt なので rename して list11.py にしておきます。

list11.py
from polyphony import testbench


def sum(l1:list):
    def sub_sum(l2:list):
        def sub_sub_sum(l2:list):
            s = 0
            for l in l2:
                s += l
            return s
        return sub_sub_sum(l2)
    return sub_sum(l1)

def list11(x):
    data1 = [x, 1, 2]
    data2 = [x, 1, 2, 3, 4, 5]
    s1 = sum(data1)
    s2 = sum(data2)
    return s1 + s2 + x

@testbench
def test():
    assert 18 == list11(0)
    assert 21 == list11(1)
    assert 24 == list11(2)

test()

手元にソースがある場合は upload もできます。

コンパイル

今度は New で Python3 を選びます。これで、jupyter の UI が使えます(マスマティカ風の UI)。
まずは必要なモジュールの import

import polyphony
import subprocess

polyphony がインストールされていれば import がうまくいきます。続いて polyphony でコンパイル

subprocess.check_output(["polyphony", "list11.py"])

これで list11.py がコンパイルされ Folder に戻ってみると polyphony_out.v が生成されています。

2016-10-15 (7).png

え?それだけ!?

そう、それだけです。ここでは verilog の中身は見ません。興味のある人は次の記事を参考にしてください。

フィボナッチを求める回路をPolyphonyとMessagePack-RPCでFPGAに実装してみた
Pythonベースの高位合成コンパイラPolyphonyを試してみた

いろんな意味で今後に期待ということで許してください。

Docker でもやってみた。

docker run -d -p 8888:8888 -v `pwd`/notebooks:/home/jovyan/work -e GRANT_SUDO=yes --user root mokemokechicken/jupyter-tensorflow 

jupyter の初期画面でパスワードを必要とするなら -e PASSWORD="ぱすわーど" も必要。後は同じなので割愛。

DockerでJupyter Notebook環境をお手軽に準備する(TensorflowやGraphvizもあるよ)
をつかうと graphviz も入っているみたい。こっち使えばよかった、、、

Zybo でできるか?

素の jupyter なら Zynq でもできるんじゃないかな?と思って試してみました。
大事なことは /etc/rc.local の /root/4_boot_leds.sh をコメントアウトしておくこと。その他、fpga をさわりにいくようなことをしたらだめ。(Zybo 用の fpga.bit がこの時点でないから)

PYNQ の image に boot.bin u-boot.img uEnv.txt zybo-zynq7.dtb を入れ替える。uImage と partition2 の rootfs はそのまま。すると、Linux としてはとりあえず立ち上がる。

おーすると jupyter だけはとりあえず立ち上がる。その先は同じだから割愛。

9
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
4