ExamplesJaCoP
Class FilterBenchmark

java.lang.Object
  extended by ExamplesJaCoP.FilterBenchmark

public class FilterBenchmark
extends java.lang.Object

This is a set of filter scheduling examples, commonly used in High-Level Synthesis.

Version:
3.0
Author:
Krzysztof Kuchcinski and Radoslaw Szymanek

Constructor Summary
FilterBenchmark()
           
 
Method Summary
static void chainingSchedule()
          It solves available filters for different scenario consisting of different number of resources.
static void experiment1(Store store, Filter filter, int addNum, int mulNum)
          It optimizes scheduling of filter operations.
static void experiment1C(Store store, Filter filter, int addNum, int mulNum, int clock)
          It optimizes scheduling of filter operation in fashion allowing chaining of operations within one clock cycle.
static void experiment1P(Store store, Filter filter, int addNum, int mulNum)
          It optimizes scheduling of filter operations.
static void experiment1PM(Store store, Filter filter, int addNum, int mulNum)
          It optimizes scheduling of filter operations in a fashion allowing pipelining of multiplication operations.
static void experiment2(Store store, Filter filter, int addNum, int mulNum)
          It optimizes scheduling of filter operations.
static void experiment2C(Store store, Filter filter, int addNum, int mulNum, int clock)
          It optimizes scheduling of filter operation in fashion allowing chaining of operations within one clock cycle.
static void experiment2P(Store store, Filter filter, int addNum, int mulNum)
          It optimizes scheduling of filter operations.
static void experiment2PM(Store store, Filter filter, int addNum, int mulNum)
          It optimizes scheduling of filter operation in fashion allowing pipelining of multiplication operations.
static void main(java.lang.String[] args)
          It executes the program for number of filters, number of resources (adders, multipliers) and number of different synthesis techniques ( algorithmic pipelining, multiplier pipelining, chaining, no special techniques).
static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraints(Store store, Filter filter, int addNum, int mulNum)
          It creates constraint model for scheduling of filter operations.
static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraintsChain(Store store, Filter filter, int addNum, int mulNum, int clk)
          It creates constraint model for scheduling of filter operation in fashion allowing chaining of operations within one clock cycle.
static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraintsPipeline(Store store, Filter filter, int addNum, int mulNum)
          It creates a model for optimization of scheduling of operations of a given filter.
static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraintsPipeMultiplier(Store store, Filter filter, int addNum, int mulNum)
          It creates constraint model for scheduling of filter operation in fashion allowing pipelining of multiplication operations.
static java.util.ArrayList<java.util.ArrayList<IntVar>> makeLabelingList(IntVar[] T, IntVar[] R)
          It creates an array of arrays using two arrays.
static void pipelineSchedule()
          It solves available filters for different scenario consisting of different number of resources.
static void pipeMulSchedule()
          It solves available filters for different scenario consisting of different number of resources.
static void schedule()
          It solves available filters for different scenario consisting of different number of resources.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

FilterBenchmark

public FilterBenchmark()
Method Detail

main

public static void main(java.lang.String[] args)
It executes the program for number of filters, number of resources (adders, multipliers) and number of different synthesis techniques ( algorithmic pipelining, multiplier pipelining, chaining, no special techniques).

Parameters:
args -

schedule

public static void schedule()
It solves available filters for different scenario consisting of different number of resources.


pipeMulSchedule

public static void pipeMulSchedule()
It solves available filters for different scenario consisting of different number of resources. It performs pipelining of multiplier operations.


chainingSchedule

public static void chainingSchedule()
It solves available filters for different scenario consisting of different number of resources. It performs chaining of operations.


pipelineSchedule

public static void pipelineSchedule()
It solves available filters for different scenario consisting of different number of resources. It performs algorithmic pipelining.


experiment1

public static void experiment1(Store store,
                               Filter filter,
                               int addNum,
                               int mulNum)
It optimizes scheduling of filter operations.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.

experiment1C

public static void experiment1C(Store store,
                                Filter filter,
                                int addNum,
                                int mulNum,
                                int clock)
It optimizes scheduling of filter operation in fashion allowing chaining of operations within one clock cycle.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.
clock - number of time units within a clock.

experiment1PM

public static void experiment1PM(Store store,
                                 Filter filter,
                                 int addNum,
                                 int mulNum)
It optimizes scheduling of filter operations in a fashion allowing pipelining of multiplication operations.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.

experiment2PM

public static void experiment2PM(Store store,
                                 Filter filter,
                                 int addNum,
                                 int mulNum)
It optimizes scheduling of filter operation in fashion allowing pipelining of multiplication operations.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.

experiment1P

public static void experiment1P(Store store,
                                Filter filter,
                                int addNum,
                                int mulNum)
It optimizes scheduling of filter operations. It performs algorithmic pipelining.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.

experiment2P

public static void experiment2P(Store store,
                                Filter filter,
                                int addNum,
                                int mulNum)
It optimizes scheduling of filter operations. It performs algorithmic pipelining three times.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.

experiment2

public static void experiment2(Store store,
                               Filter filter,
                               int addNum,
                               int mulNum)
It optimizes scheduling of filter operations.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.

experiment2C

public static void experiment2C(Store store,
                                Filter filter,
                                int addNum,
                                int mulNum,
                                int clock)
It optimizes scheduling of filter operation in fashion allowing chaining of operations within one clock cycle.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.
clock - number of time units within a clock.

makeConstraints

public static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraints(Store store,
                                                                               Filter filter,
                                                                               int addNum,
                                                                               int mulNum)
It creates constraint model for scheduling of filter operations.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.
Returns:
start time and resource assignment variables describing the scheduling problem.

makeConstraintsPipeMultiplier

public static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraintsPipeMultiplier(Store store,
                                                                                             Filter filter,
                                                                                             int addNum,
                                                                                             int mulNum)
It creates constraint model for scheduling of filter operation in fashion allowing pipelining of multiplication operations.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.
Returns:
start time and resource assignment variables describing the scheduling problem.

makeConstraintsChain

public static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraintsChain(Store store,
                                                                                    Filter filter,
                                                                                    int addNum,
                                                                                    int mulNum,
                                                                                    int clk)
It creates constraint model for scheduling of filter operation in fashion allowing chaining of operations within one clock cycle.

Parameters:
store - the constraint store in which the constraints are imposed.
filter - the filter being scheduled.
addNum - number of adders available.
mulNum - number of multipliers available.
clk - number of time units within a clock.
Returns:
start time and resource assignment variables describing the scheduling problem.

makeConstraintsPipeline

public static java.util.ArrayList<java.util.ArrayList<IntVar>> makeConstraintsPipeline(Store store,
                                                                                       Filter filter,
                                                                                       int addNum,
                                                                                       int mulNum)
It creates a model for optimization of scheduling of operations of a given filter. The pipelined model assumes that the filter is unrolled three times.

Parameters:
store - constraint store in which the constraints are imposed.
filter - filter for which pipelined execution is optimized.
addNum - number of available adders
mulNum - number of available multipliers.
Returns:
variables corresponding to start time and resource assignment of the filter operations.

makeLabelingList

public static java.util.ArrayList<java.util.ArrayList<IntVar>> makeLabelingList(IntVar[] T,
                                                                                IntVar[] R)
It creates an array of arrays using two arrays.

Parameters:
T - an array of variables corresponding to start time of an operation.
R - an array of variables corresponding to resource of an operation.
Returns:
an array of arrays, each array containing one starttime and one resource assignment variable.