SystemCoDesigner is a software tool for automatic design space exploration at the system level.
The goal is to optimally allocate resources and bind a task graph onto these allocated resources.
Hence, the underlying optimization problem is a selection and assignment problem.
The input is the so called specification graph.
An example is given below:
As you can see, parameters are associated with the vertices in the architecture graph as well as with the mapping edges. You can define your own parameters if you like. For the evaluation, two kinds of evaluators can be used: 1) A list scheduler to determine a static schedule from the delay parameters at the mapping edges and 2) a sumevaluator that sums up all parameters with a specific name. Three predefined problem instances are included in this package. But as you will find out, there are many possibilities to configure SystemCoDesigner, including the number of objectives as well as the complexity of the optimization problems.
The designer has to specify the task graph, the architecture template (as a graph), as well as all possible bindings of the nodes in the task graph onto the resources in the architecture template. We provide the script start_generator.pl which helps to generate problem instances of arbitrary complexities. SystemCoDesigner also provides a graphical user interface, including a front end for specification of the architecture template and bindings as well as a visualization of the design space exploration and optimal implementations. The GUI is available at the SystemCoDesigner website. Moreover, a tutorial for SystemCoDesigern is available which explains many of the parameters in detail.
Download & Installation Guide
To install the SystemCoDesigner, you just have to download and unpack the binaries.
Once you have unpacked the archive, you should have obtained a folder called scd-0.1 containing these files and directories:
Buddy_license.txt | File containing license for buddy |
Environment/ | Directory containing the runtime environment |
LICENSE | File containing license for the SystemCoDesigner |
README | File Containing a short getting started |
bin/ | Directory containing start scripts |
lib/ | Directory containing libraries |
libexec/ | Directory containing executables |
share/ | Directory containing some auxiliary programs |
xerces_license.txt | File containing license for Xerces |
User's Guide
Usage: | |
cd bin | |
modes_variator PARAMETER_FILE /PATH_TO/PISA_ 0.1 |
To generate different problem instances, please use the following command:
Usage: | |
cd bin | |
start_generator.pl GENERATOR_PARAMETER_FILE SGX_FILENAME [MODES_PARAMETER_FILE] |
The generator can be used to automatically create problem graphs and additionally an appropriate standard parameter file for the SystemCoDesigner. Hence, it also copies the "specgraph.dtd" that is needed into the destination directory of the generated problem graph.
Three examples of a GENERATOR_PARAMETER_FILE can be found in "/share/generator". These are
Examples of specification graphs can be found in "/share/Examples" containing three, with the GENERATOR_PARAMETER_FILEs automatically generated graphs as well as one real world example "h264.sgx".
Parameters
Note that the parameters must be in the correct order!
This is a standard example:
seed none
max_gen 1000
coverage_gen 50
p_mutationrate 0.00408163265306122
p_compositemutationrate 0.0
p_compositecrossoverrate 0.0
p_allocationrate 1
xml_file /PATH_TO/graph.sgx
init_file none
sync_generations 1
view_sync_file /PATH_TO/quality.loc
quality_set_file /PATH_TO/quality.qsx
non_dominated_file /PATH_TO/nd.txt
no_of_evaluators 2
evaluator sum-area sumevaluator.so area NOBINDING
evaluator sum-power sumevaluator.so power
scheduler_lib listscheduler.so
decoder_lib simpledecoder.so
no_of_checkers 1
checker area objectiveboundschecker.so
upper_constraint 100
lower_constraint 50
Short explanation of the parameters:
seed | Specifies the seed for the random-number-generator. |
max_gen | Specifies the maximum number of generation to be evaluated. |
coverage | Specifies a termination criterion. The criterion is fulfilled, if the set of non-dominated individuals of a population does not improve over the number of generations, specified by the coverage. The termination criterion can also be deactivated. |
mutationrate | Specifies the used mutation rate, 1 / (#Processes + #Resources + 2) is recommended. |
p_compositemutationrate and p_compositecrossoverrate | deprecated and should be 0! |
p_allocationrate | Specifies the rate of initially allocated resources. |
xml_file | Specifies the specification graph to explore. |
init_file | Specifies the initial population that is used to explore the specification graph. |
sync_generations | Specifies the interval (in generations) for the Qualityset-File to be written. |
view_sync_file and quality_set_file and non_dominated_file | Specifies the files for the results to be stored. |
no_of_evaluators | Specifies the number of evaluators to follow with: "evaluator NAME EVALUATOR OBJECTIVE ADDITIONALATTRIBUTE" |
scheduler_lib | Specifies the scheduler to be used if needed. |
decoder_lib | Specifies the used decoder. |
no_of_checkers | Specifies the number of checkers to follow with: "checker OBJETIVE objectiveboundchecker.so upper_constraint UPPER_BOUND lower_constraint LOWER_BOUND" |
Contact
To learn more about SystemCoDesigner or for further questions, please contact us:
Address
Hardware-Software-Co-Design
University of Erlangen-Nuremberg
Am Weichselgarten 3
D-91058 Erlangen
Germany