[PYTHON] Installieren Sie mehrere Versionen von Polyphony mit venv

Eine virtuelle Python-Umgebung namens venv

Mit venv können Sie mehrere Python-Umgebungen erstellen. Detaillierte Geschichten werden an verschiedenen Stellen geschrieben. Bitte suchen Sie danach. ich Über VIRTUALENV War leicht zu lesen.

Es scheint, dass auch verschiedene Versionen von Python erstellt werden können. Hier werde ich mehrere Polyphony (High-Level-Synthese von Python) installieren, eine der Python-Anwendungen.

Meine Umgebung ist cygwin + Python 3.4 + tcsh

Installieren Sie venv

pip3 install virtualenv Einfach!!

Erstellen einer virtuellen Umgebung

Erstellen Sie mit dem Befehl pyvenv3. Das Verzeichnis wird automatisch erstellt.

> pyvenv
pyvenv3    pyvenv-3.4
> pyvenv3 polyphony-0.2.2
> ls
polyphony-0.2.2

[Addition] pyvenv ist veraltet

Verwenden Sie venv, da pyvenv veraltet ist.

> python3.6 -m venv polyphony-0.2.2
> ls
polyphony-0.2.2/

Der Rest ist wahrscheinlich der gleiche.

Ausführen einer virtuellen Umgebung

Unter bin befindet sich activ.csh. Führen Sie es aus. Bash-Leute werden wahrscheinlich bin / enable ausführen.

> source polyphony-0.2.2/bin/activate.csh
[polyphony-0.2.2] >

Installation von Polyphony-0.2.2

Es kann mit pip3 installiert werden. Das Installationsziel ist eine virtuelle Umgebung.

[polyphony-0.2.2] > pip3 install polyphony
Collecting polyphony
  Using cached polyphony-0.2.2.tar.gz
Installing collected packages: polyphony
  Running setup.py install for polyphony ... done
Successfully installed polyphony-0.2.2
You are using pip version 8.1.1, however version 9.0.1 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
[polyphony-0.2.2] >

Mach ein bisschen Polyphonie

Hier ist der Quellcode für Python.

c_xor.py


from polyphony import testbench

class BitOp:
    def __init__(self, w0, w1, b):
        self.w0 = w0
        self.w1 = w1
        self.b = b

    def eval(self, x0, x1):
        tmp0 = self.w0 * x0
        tmp1 = self.w1 * x1
        tmp = tmp0 + tmp1 + self.b
        if tmp <= 0:
            return 0
        else:
            return 1

def AND(x1, x2):
    op = BitOp(5, 5, -7)
    return op.eval(x1, x2)

def OR(x1, x2):
    op = BitOp(5, 5, -2)
    return op.eval(x1, x2)

def NAND(x1, x2):
    op = BitOp(-5, -5, 7)
    return op.eval(x1, x2)

def XOR(x1, x2):
    AND = BitOp(5, 5, -7)
    OR = BitOp(5, 5, -2)
    NAND = BitOp(-5, -5, 7)
    s1 = NAND.eval(x1, x2)
    s2 = OR.eval(x1, x2)
    y = AND.eval(s1, s2)
    return y

@testbench
def test():
    print(XOR(0, 0))
    print(XOR(1, 0))
    print(XOR(0, 1))
    print(XOR(1, 1))

test()

Tun Sie dies zuerst mit python3

[polyphony-0.2.2] Persimmon:works> python c_xor.py
0
1
1
0

Es hat gut funktioniert. Lassen Sie es uns mit Polyphonie ausführen. Sie haben den Verilog-Code erfolgreich erstellt.

> polyphony c_xor.py
[polyphony-0.2.2] > ls
c_xor.py  polyphony_out.v  polyphony_out_test.v  polyphony_out_XOR.v

Alles was Sie tun müssen, ist es mit iverilog zu kompilieren und auszuführen. Es scheint gut zu funktionieren.

> iverilog -I . -W all -o test -s test polyphony_out.v polyphony_out_test.v
> ./test
    0:XOR_0_in_x1=   x, XOR_0_in_x2=   x, XOR_0_out_0=   x
  110:XOR_0_in_x1=   0, XOR_0_in_x2=   0, XOR_0_out_0=   x
  280:XOR_0_in_x1=   0, XOR_0_in_x2=   0, XOR_0_out_0=   0
0
  290:XOR_0_in_x1=   1, XOR_0_in_x2=   0, XOR_0_out_0=   0
  460:XOR_0_in_x1=   1, XOR_0_in_x2=   0, XOR_0_out_0=   1
1
  470:XOR_0_in_x1=   0, XOR_0_in_x2=   1, XOR_0_out_0=   1
1
  650:XOR_0_in_x1=   1, XOR_0_in_x2=   1, XOR_0_out_0=   1
  820:XOR_0_in_x1=   1, XOR_0_in_x2=   1, XOR_0_out_0=   0
0

Installieren Sie polyphony-0.3.0 in einer anderen Umgebung

Erstellen Sie zunächst eine virtuelle Umgebung und führen Sie sie aus

> pyvenv3 polyphony-0.3.0
> source polyphony-0.3.0/bin/activate.csh
[polyphony-0.3.0] > cd polyphony-0.3.0/
[polyphony-0.3.0] >

Installation von Polyphony-0.3.0

Da es sich um eine in der Entwicklung befindliche Version handelt, geben Sie einen Zweig von github an und klonen Sie ihn.

[polyphony-0.3.0] > git clone -b 0.3.0 https://github.com/ktok07b6/polyphony/
Cloning into 'polyphony'...
remote: Counting objects: 2202, done.
remote: Compressing objects: 100% (230/230), done.
remote: Total 2202 (delta 121), reused 0 (delta 0), pack-reused 1972
Receiving objects: 100% (2202/2202), 954.49 KiB | 371.00 KiB/s, done.
Resolving deltas: 100% (1512/1512), done.
Checking connectivity... done.
[polyphony-0.3.0] > cd polyphony/
[polyphony-0.3.0] > git branch
* 0.3.0
[polyphony-0.3.0] > ls -l setup.py
-rw-r--r--1 ryos Keine 481 25. März 17:01 setup.py
[polyphony-0.3.0] > python3 setup.py install
Grobe Erfassung

danach

python3 setup.py install

Wenn Sie glauben, dass es funktionieren wird, werden die Informationen in der URL von setup.py angezeigt. Schreiben Sie also setup.py neu. Der nach @ hinzugefügte Teil.

setup.py


 url='https://github.com/ktok07b6/[email protected]',

Und

[polyphony-0.3.0] > python3 setup.py install

Versuche zu rennen

Überprüfen Sie, ob die neue Funktion io von 0.3.0 verwendet werden kann.

[polyphony-0.3.0] > ./simu.py tests/io/
port01.py      port03.py      protocol01.py  protocol03.py
port02.py      port04.py      protocol02.py
[polyphony-0.3.0] > ./simu.py tests/io/port01.py
    0:p01_start=x, p01_in_valid=x, p01_out_valid=x, p01_out0=   x, p01_in0=   x
   10:p01_start=0, p01_in_valid=0, p01_out_valid=0, p01_out0=   0, p01_in0=   0
  110:p01_start=1, p01_in_valid=0, p01_out_valid=0, p01_out0=   0, p01_in0=   0
wait_rising out_valid
  120:p01_start=1, p01_in_valid=1, p01_out_valid=0, p01_out0=   0, p01_in0=   2
  140:p01_start=1, p01_in_valid=1, p01_out_valid=0, p01_out0=   4, p01_in0=   2
  150:p01_start=1, p01_in_valid=1, p01_out_valid=1, p01_out0=   4, p01_in0=   2
4
  200:finish

Ich habe das Gefühl, ich kann es benutzen. Damit haben wir mehrere Umgebungen erstellt.

Polyphonie kann auch eine 64-Bit-Ganzzahl generieren, indem env.py geändert wird. Es ist ein wenig mühsam, aber es ist auch möglich, eine 64-Bit-Umgebung zu erstellen.

Recommended Posts

Installieren Sie mehrere Versionen von Polyphony mit venv
Verwenden mehrerer Versionen von Python unter Mac OS X (2) Verwendung
Koexistenz mehrerer Versionen mit Node.js n
Verwenden mehrerer Versionen von Python unter Mac OS X (1) Installation von Multiple Ver
Verwalten Sie mehrere Ausführungsumgebungen mit Python venv
So erstellen Sie eine Umgebung für die Verwendung mehrerer Python-Versionen auf einem Mac
Verwenden Sie mit pyenv mehrere Versionen der Python-Umgebung
[Java] So wechseln Sie zwischen mehreren Java-Versionen
Mehrfachvererbung von Klassen
Kopie mehrerer Listen
Beispiel für die Verwendung von Lambda
Wechseln Sie die Version, wenn mehrere Versionen von Java in Linux enthalten sind
Liste der zu installierenden Bibliotheken bei der Installation von Python mit Pyenv