Vous pouvez utiliser venv pour créer plusieurs environnements Python. Des histoires détaillées sont écrites à divers endroits, veuillez donc les rechercher. je À propos de VIRTUALENV C'était facile à lire.
Il semble que différentes versions de Python puissent également être construites. Ici, je vais installer plusieurs Polyphony (synthèse de haut niveau par Python), qui est l'une des applications Python.
Mon environnement est cygwin + Python 3.4 + tcsh
pip3 install virtualenv Facile!!
Créez avec la commande pyvenv3. Le répertoire sera créé automatiquement.
> pyvenv
pyvenv3 pyvenv-3.4
> pyvenv3 polyphony-0.2.2
> ls
polyphony-0.2.2
Puisque pyvenv est obsolète, utilisez venv.
> python3.6 -m venv polyphony-0.2.2
> ls
polyphony-0.2.2/
Le reste est probablement le même.
Il y a activate.csh sous bin, alors lancez-le. Les gens Bash exécuteront probablement bin / activate.
> source polyphony-0.2.2/bin/activate.csh
[polyphony-0.2.2] >
Il peut être installé avec pip3. La destination de l'installation est un environnement virtuel.
[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] >
Voici le code source de 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()
Faites-le d'abord avec python3
[polyphony-0.2.2] Persimmon:works> python c_xor.py
0
1
1
0
Cela a bien fonctionné. Lançons-le avec la polyphonie. Vous avez créé avec succès le code verilog.
> polyphony c_xor.py
[polyphony-0.2.2] > ls
c_xor.py polyphony_out.v polyphony_out_test.v polyphony_out_XOR.v
Tout ce que vous avez à faire est de le compiler et de l'exécuter avec iverilog. Cela semble bien fonctionner.
> 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
Tout d'abord, créez et exécutez un environnement virtuel
> 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] >
Puisqu'il s'agit d'une version en cours de développement, spécifiez une branche depuis github et clonez-la.
[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 Aucun 481 25 mars 17:01 setup.py
[polyphony-0.3.0] > python3 setup.py install
Capture approximative
ensuite
python3 setup.py install
Si vous pensez que cela fonctionnera, il semble regarder les informations dans l'URL de setup.py. Réécrivez donc setup.py. La partie ajoutée après @.
setup.py
url='https://github.com/ktok07b6/[email protected]',
Et
[polyphony-0.3.0] > python3 setup.py install
Vérifiez si la nouvelle fonction io de 0.3.0 peut être utilisée.
[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
Je sens que je peux l'utiliser. Avec cela, nous avons créé plusieurs environnements.
la polyphonie peut également générer un entier 64 bits en modifiant env.py. C'est un peu gênant, mais il est également possible de créer un environnement 64 bits.
Recommended Posts