Fix PR #507: Merged last run in the pool

Signed-off-by: Mehdi Khairy <mehdi.khairy@more-magic.org>
This commit is contained in:
Mehdi Khairy 2019-01-12 12:27:35 +01:00
parent 0168578b5a
commit 0906e734b9
1 changed files with 22 additions and 12 deletions

View File

@ -4,10 +4,19 @@ import sys
import subprocess
import signal
from multiprocessing import Pool
from itertools import chain
# Can be used to redirect vivado tons of output
# stdout=DEVNULL in subprocess.check_call
#try:
# from subprocess import DEVNULL
#except ImportError:
# import os
# DEVNULL = open(os.devnull, 'wb')
# Worker function called from threads
def start_vivado(argList):
print(argList)
blockID, start, stop = argList
print("Running instance :" + str(blockID))
subprocess.check_call(
@ -16,8 +25,9 @@ def start_vivado(argList):
shell=True)
# Function called once to get the total numbers of pips to list
def get_nb_pips():
print("Fetching nb pips")
print("Fetching total number of pips")
subprocess.check_call(
"${XRAY_VIVADO} -mode batch -source $FUZDIR/get_pipscount.tcl",
shell=True)
@ -31,12 +41,14 @@ def main(argv):
pipscount = get_nb_pips()
blocksize = int(pipscount / nbBlocks)
intPipsCount = blocksize * nbBlocks
# We handle the case of not integer multiple of pips
lastRun = False
modBlocks = pipscount % nbBlocks
if modBlocks != 0:
lastRun = True
nbBlocks = nbBlocks + 1
if not os.path.exists("wires"):
os.mkdir("wires")
@ -48,22 +60,20 @@ def main(argv):
str(modBlocks))
blockId = range(0, nbBlocks)
startI = range(0, pipscount, blocksize)
stopI = range(blocksize, pipscount + 1, blocksize)
startI = range(0, intPipsCount, blocksize)
stopI = range(blocksize, intPipsCount + 1, blocksize)
# In case we have a last incomplete block we add it as a last
# element in the arguments list
if lastRun == True:
startI = chain(startI, [intPipsCount])
stopI = chain(stopI, [pipscount])
argList = zip(blockId, startI, stopI)
with Pool(processes=nbParBlock) as pool:
pool.map(start_vivado, argList)
if modBlocks != 0:
print("Caculate extra block")
start = nbBlocks * blocksize
stop = pipscount
bID = nbBlocks
start_vivado((bID, start, stop))
nbBlocks = nbBlocks + 1
print("Generating final files")
with open("uphill_wires.txt", "w") as wfd: