@Override public Map<String, Object> execute( Map<String, Object> inputs, Map<String, String> parameters, IProgressMonitor monitor, String nodeName, Workflow workflow) throws WorkflowException { Map<String, Object> outputs = new HashMap<String, Object>(); Design architecture = (Design) inputs.get("architecture"); SDFGraph algorithm = (SDFGraph) inputs.get("SDF"); PreesmScenario scenario = (PreesmScenario) inputs.get("scenario"); super.execute(inputs, parameters, monitor, nodeName, workflow); PFastAlgoParameters pFastParams = new PFastAlgoParameters(parameters); AbcParameters abcParameters = new AbcParameters(parameters); MapperDAG dag = SdfToDagConverter.convert(algorithm, architecture, scenario, false); // calculates the DAG span length on the architecture main operator (the // tasks that can // not be executed by the main operator are deported without transfer // time to other operator calculateSpan(dag, architecture, scenario, abcParameters); IAbc simu = new InfiniteHomogeneousAbc( abcParameters, dag, architecture, abcParameters.getSimulatorType().getTaskSchedType(), scenario); InitialLists initial = new InitialLists(); if (!initial.constructInitialLists(dag, simu)) return null; TopologicalTaskSched taskSched = new TopologicalTaskSched(simu.getTotalOrder()); simu.resetDAG(); IAbc simu2 = AbstractAbc.getInstance(abcParameters, dag, architecture, scenario); PFastAlgorithm pfastAlgorithm = new PFastAlgorithm(); dag = pfastAlgorithm.map( dag, architecture, scenario, initial, abcParameters, pFastParams, false, 0, pFastParams.isDisplaySolutions(), null, taskSched); simu2.setDAG(dag); // simu2.plotImplementation(); // The transfers are reordered using the best found order during // scheduling simu2.reschedule(pfastAlgorithm.getBestTotalOrder()); TagDAG tagSDF = new TagDAG(); try { tagSDF.tag(dag, architecture, scenario, simu2, abcParameters.getEdgeSchedType()); } catch (InvalidExpressionException e) { e.printStackTrace(); throw (new WorkflowException(e.getMessage())); } outputs.put("DAG", dag); outputs.put("ABC", simu2); super.clean(architecture, scenario); return outputs; }