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
pip3 install virtualenv Einfach!!
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
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.
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] >
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] >
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
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] >
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
Ü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