45
Constraint Programming in Embedded System Design Constraint Programming in Embedded System Design Krzysztof Kuchcinski [email protected] Department of Computer Science Lund University Sweden Kris Kuchcinski 1(32)

Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

  • Upload
    lelien

  • View
    249

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Constraint Programming in Embedded System Design

Krzysztof [email protected]

Department of Computer ScienceLund University

Sweden

Kris Kuchcinski 1(32)

Page 2: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Outline

1 Introduction to CPSudoku Example

2 ExamplesGeometrical ConstraintsSchedulingSet Constraints

3 Graph Constraints in Emendded System DesignConnected Componnets(Sub-)graph Isomorphism

Kris Kuchcinski 2(32)

Page 3: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Programming with Constraints

Eugene C. FreuderCONSTRAINTS, April 1997“Constraint programming represents one of the closestapproaches computer science has yet made to the HolyGrail of programming: the user states the problem, thecomputer solves it.”

Jean-François Puget, ILOG/IBMConstraint Programming is Software Engineering applied toOperations Research

Kris Kuchcinski 3(32)

Page 4: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Programming with Constraints

Eugene C. FreuderCONSTRAINTS, April 1997“Constraint programming represents one of the closestapproaches computer science has yet made to the HolyGrail of programming: the user states the problem, thecomputer solves it.”

Jean-François Puget, ILOG/IBMConstraint Programming is Software Engineering applied toOperations Research

Kris Kuchcinski 3(32)

Page 5: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

A simple definition

Constraint programming is the study of computational systemsbased on constraints.The idea of constraint programming is to solve problems byexploring constraints which must be satisfied by the solution.

Kris Kuchcinski 4(32)

Page 6: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Example– SUDOKU

2 6 35 7

1 46 5 2

4 8 15 9

7 34 1 6

Helmut Simonis, IC-PARC, Imperial College LondonConstraints programming has finally reached the masses,thousands of newspaper readers are solving their dailyconstraint problem.

Kris Kuchcinski 5(32)

Page 7: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Example– SUDOKU

2 6 35 7

1 46 5 2

4 8 15 9

7 34 1 6

Helmut Simonis, IC-PARC, Imperial College LondonConstraints programming has finally reached the masses,thousands of newspaper readers are solving their dailyconstraint problem.

Kris Kuchcinski 5(32)

Page 8: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Solution Method

2 6 35 7

1 46 5 2

4 8 15 9

7 34 1 6

Variables

v[i,j] :: {1..9}

Constraints

// Rowsv[1,1] 6= v[1,2], ...// Columnsv[1,1] 6= v[2,1], ...// Squaresv[1,1] 6= v[2,2], ...

Kris Kuchcinski 6(32)

Page 9: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Solution Method

2 6 35 7

1 46 5 2

4 8 15 9

7 34 1 6

Variables

v[i,j] :: {1..9}

Constraints

// Rowsv[1,1] 6= v[1,2], ...// Columnsv[1,1] 6= v[2,1], ...// Squaresv[1,1] 6= v[2,2], ...

Kris Kuchcinski 6(32)

Page 10: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Solution Method

2 6 35 7

1 46 5 2

4 8 15 9

7 34 1 6

Values for first row after “simple” consistency

2 6 {1, 8..9} 3 {4..5, 7..9} {5, 7, 9}{1, 5, 8..9} {5, 8..9} {5, 8..9}

Kris Kuchcinski 7(32)

Page 11: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

More advanced consistency

Values

2 6 {1, 8..9} 3 {4..5, 7..9} {5, 7, 9}{1, 5, 8..9} {5, 8..9} {5, 8..9}

values 1, 5, 8 and 9 need to be assigned to variables v[1,3],v[1,7], v[1,8], and v[1,9],values 1, 5, 8 and 9 can be removed from other variables inthis row.

New values

2 6 {1, 8..9} 3 4 7{1, 5, 8..9} {5, 8..9} {5, 8..9}

Kris Kuchcinski 8(32)

Page 12: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

More advanced consistency

Values

2 6 {1, 8..9} 3 {4..5, 7..9} {5, 7, 9}{1, 5, 8..9} {5, 8..9} {5, 8..9}

values 1, 5, 8 and 9 need to be assigned to variables v[1,3],v[1,7], v[1,8], and v[1,9],values 1, 5, 8 and 9 can be removed from other variables inthis row.

New values

2 6 {1, 8..9} 3 4 7{1, 5, 8..9} {5, 8..9} {5, 8..9}

Kris Kuchcinski 8(32)

Page 13: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Solution

2 6 39 4 7 1 8 55 74 1 8 9 6 3 2

1 48 7 3 2 5 6 96 5 21 8 7 3 9 43 2 5 4 1 9 8 6 7

4 8 17 9 6 2 3 55 91 6 3 2 4 7 8

7 34 8 1 6 5 9 24 1 69 3 2 7 8 5 1 6

Kris Kuchcinski 9(32)

Page 14: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

SUDOKU in MiniZincinclude "globals.mzn";

array [1..9, 1..9] of var 1..9: v;

predicate row_diff(int: r) =all_different ([v[r, c] | c in 1..9]);

predicate col_diff(int: c) =all_different ([v[r, c] | r in 1..9]);

predicate subgrid_diff(int: r, int: c) =all_different ([v[r + i, c + j] | i, j in 0..2]);

constraint forall (r in 1..9) (row_diff(r));constraint forall (c in 1..9) (col_diff(c));constraint forall (r, c in {1, 4, 7}) (subgrid_diff(r, c));

solve satisfy;

output ["v = ", show(v), "\n"];

v = [| 2, 6, _, 3, _, _, _, _, _| 5, _, _, _, _, _, 7, _, _| _, _, _, _, _, 1, _, 4, _| 6, _, _, 5, _, _, 2, _, _| _, _, _, _, _, _, _, _, _| _, _, 4, _, _, 8, _, _, 1| _, 5, _, 9, _, _, _, _, _| _, _, 7, _, _, _, _, _, 3| _, _, _, _, _, 4, _, 1, 6 |];

Kris Kuchcinski 10(32)

Page 15: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Another SUDOKU example

6 8 4 1 78 5 3

2 6 8 9 4 77 9

5 1 6 324 6 13 2 7 6 9

= 1 != 1

= 4 != 4

= 5

= 2

= 1 != 1

= 4 != 4

v[1,1]::{1, 4..5, 7, 9}

v[1,1]::{4..5, 7, 9}

FAIL v[1,1]::{5, 7, 9}

v[2,1]::{2, 5, 9}

v[3,3]::{1, 4, 7, 9}

FAIL v[3,3]::{4, 7, 9}

FAIL Solution

FAIL

Kris Kuchcinski 11(32)

Page 16: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Another SUDOKU example

6 8 4 1 78 5 3

2 6 8 9 4 77 9

5 1 6 324 6 13 2 7 6 9

= 1 != 1

= 4 != 4

= 5

= 2

= 1 != 1

= 4 != 4

v[1,1]::{1, 4..5, 7, 9}

v[1,1]::{4..5, 7, 9}

FAIL v[1,1]::{5, 7, 9}

v[2,1]::{2, 5, 9}

v[3,3]::{1, 4, 7, 9}

FAIL v[3,3]::{4, 7, 9}

FAIL Solution

FAIL

Kris Kuchcinski 11(32)

Page 17: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Pure JaCoP model:

Store store = new Store();

IntVar[] elements = new IntVar[noRows * noColumns][noRows * noColumns];

// Creating variables.for (int i = 0; i < noRows * noColumns; i++)

for (int j = 0; j < noRows * noColumns; j++)if (description[i][j] == 0)

elements[i][j] = new IntVar(store, "f" + i + j, 1, 9);else

elements[i][j] = new IntVar(store, "f" + i + j, description[i][j], description[i][j]);

// Creating constraints for rows.for (int i = 0; i < 9; i++)

store.impose(new Alldistinct(elements[i]));

// Creating constraints for columns.:

// Creating constraints for blocks.:

Kris Kuchcinski 12(32)

Page 18: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Constraint programming summary

Declarative programming styleDifferent domains (finite, set, interval, real, etc.)Primitive and global constraints (encapsulate complex pruningalgorithms)Program has two parts:

variable and constraintssearch

Complete and heuristic search methods

Kris Kuchcinski 13(32)

Page 19: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Global Constraints- Diff2

0 1 2 3 4 5 6 7 8

0

1

2

3Y

X

i

j

diff2([[x1, y1, dx1, dy1], [x2, y2, dx2, dy2]], ...)

Kris Kuchcinski 14(32)

Page 20: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Perfect Square Example

include "diff2.mzn";

int: n; % number squaresint: size; % size of the square to fill with n squaresarray[1..n] of int: squares; % dimension of the squares

array[1..n] of var 0..size: x; % x position of squaresarray[1..n] of var 0..size: y; % y position of squares

constraintforall(i in 1..n) (

x[i] <= size - squares[i] /\y[i] <= size - squares[i] ) /\diff2(x, y, squares, squares);

solve :: seq_search([int_search(x, smallest, indomain_min, complete),int_search(y, smallest, indomain_min, complete)

]) satisfy;

output[show(x),show(y)];

n=21;size=112;squares = [2,4,6,7,8,9,11,15,16,17,18,19,24,25,27,29,33,35,37,42,50];

Kris Kuchcinski 15(32)

Page 21: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

ResultExample 0

0

1

2

3

4

5

6

7

8

9

10

1112

13

14

1516

17

18

19

20

Run time: 380 ms

Kris Kuchcinski 16(32)

Page 22: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Scheduling

Jobshop schedulingSet of n jobs and m machines,Each job i has m ordered tasksEach task has constant duration and a machine for itsexecution,Find a shortest schedule.

Kris Kuchcinski 17(32)

Page 23: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Cumulative constraintResource

Time

Resource limit

cumulative([s1, . . . sn], [d1, . . . dn], [r1, . . . rn], Limit)

Kris Kuchcinski 18(32)

Page 24: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Jobshop modelinclude "globals.mzn";

int: n;int: m;array [1..n, 1..2*m] of int: job;array [1..n, 1..m] of var 0..1000: t :: is_output;array [1..n] of int: one = [ 1 | i in 1..n];var 0..1000: end :: is_output;

constraintforall(i in 1..n, j in 1..m-1) ( t[i,j] + job[i, 2*j] <= t[i, j+1] );

constraintforall(k in 1..m) (let {

array[1..n] of int: d = [ job[i, 2*j] | i in 1..n, j in 1..m where job[i,2*j-1] = k-1],array[1..n] of var 0..1000: s = [ t[i,j] | i in 1..n, j in 1..m where job[i,2*j-1] = k-1]

}in

cumulative(s, d, one, 1));

constraintend = max(i in 1..n) (t[i, m] + job[i, 2*m]);

solve :: int_search([ t[i,j] | i in 1..n, j in 1..m], smallest, indomain_min, complete) minimize end;

Kris Kuchcinski 19(32)

Page 25: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Jobshop Scheduling

012345

0 10 20 30 40 50 60

1 234 56

12 34 56

1 23 45 6

1 23 4 56

12 345 6

123 456

machine

time

Gantt diagram for job-shop scheduling.

Kris Kuchcinski 20(32)

Page 26: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Set Constraints

Set variables, e.g. s :: {{}..{1..5}}

Set operations, such as intersection, union, etc.

Social golfers problemA club has a number of golfers that play rounds in groups (thenumber of golfers is a multiple of the number of groups). Eachround, a golfer plays with a group of different people, such that thesame pair of golfers never play together twice.

Kris Kuchcinski 21(32)

Page 27: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Set Constraints

Set variables, e.g. s :: {{}..{1..5}}

Set operations, such as intersection, union, etc.

Social golfers problemA club has a number of golfers that play rounds in groups (thenumber of golfers is a multiple of the number of groups). Eachround, a golfer plays with a group of different people, such that thesame pair of golfers never play together twice.

Kris Kuchcinski 21(32)

Page 28: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Social golfers modelinclude "globals.mzn";

int: n_groups; % The number of groups.int: n_per_group; % The size of each group.int: n_rounds; % The number of rounds.int: n_golfers = n_groups * n_per_group;

set of int: groups = 1..n_groups;set of int: group = 1..n_per_group;set of int: rounds = 1..n_rounds;set of int: golfers = 1..n_golfers;

array [rounds, groups] of var set of golfers: round_group_golfers :: is_output;

constraint % Each group has to have the right size.forall (r in rounds, g in groups) (

card(round_group_golfers[r, g]) = n_per_group );

constraint % Each group in each round has to be disjoint.forall (r in rounds) (

all_disjoint (g in groups) (round_group_golfers[r, g]) );

constraint % Each pair may play together at most once.forall (a, b in golfers where a < b) (

sum (r in rounds, g in groups) (bool2int({a, b} subset round_group_golfers[r, g]) ) <= 1 );

solve satisfy;

Kris Kuchcinski 22(32)

Page 29: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

A Solution

Groups = 4, Size = 4, Round = 5

{1..4}, {5..8}, {9..12}, {13..16},{1, 5, 9, 13}, {2, 6, 10, 14}, {3, 7, 11, 15}, {4, 8, 12, 16},{1, 6, 11, 16}, {2, 5, 12, 15}, {3, 8..9, 14}, {4, 7, 10, 13},{1, 7, 12, 14}, {2, 8, 11, 13}, {3, 5, 10, 16}, {4, 6, 9, 15},{1, 8, 10, 15}, {2, 7, 9, 16}, {3, 6, 12..13}, {4..5, 11, 14}

Kris Kuchcinski 23(32)

Page 30: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Project

Reg1 Reg2 RegN

InterconnectionsData-path

Processor core

Reconfigurablecell

in

x

in

xin

+

in

+

+ x x out

out out out

x

in

out

x

in

out

in

+

in

out

+

in

out

in

out

. . .

ASIP

Reconfigurablecell

m

m

*

+

in

out

+

*

in

+

in

in ctrl 0

ctrl 1

0

10 2

1

/* Sample C code */

void fir(const int x[], const int h[], int y[]) {

int i, j, sum;

for (j = 0; j < 100; j=j+1) {

sum = 0;

for (i = 0; i < 8; i=i+1)

sum += x[i + j] * h[i];

sum = sum >> 15;

y[j] = sum;

}

}

? ? ExtensionGenerationCompilation

C Code

Applications

Kris Kuchcinski 24(32)

Page 31: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Idea: Compilation PrincipleDSP Data Path

+

x

in

ACC.

DFG “Pattern” of MAC

*

+

in

out

in

DSP Instruction Set

*

+

in

out

in

*

out

in in

shr

out

in in

OneCycle

DFG of the FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Covered DFG

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Kris Kuchcinski 25(32)

Page 32: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Idea: Compilation PrincipleDSP Data Path

+

x

in

ACC.

DFG “Pattern” of MAC

*

+

in

out

in

DSP Instruction Set

*

+

in

out

in

*

out

in in

shr

out

in in

OneCycle

DFG of the FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Covered DFG

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Kris Kuchcinski 25(32)

Page 33: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Idea: Compilation PrincipleDSP Data Path

+

x

in

ACC.

DFG “Pattern” of MAC

*

+

in

out

in

DSP Instruction Set

*

+

in

out

in

*

out

in in

shr

out

in in

OneCycle

DFG of the FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Covered DFG

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Kris Kuchcinski 25(32)

Page 34: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Idea: Compilation PrincipleDSP Data Path

+

x

in

ACC.

DFG “Pattern” of MAC

*

+

in

out

in

DSP Instruction Set

*

+

in

out

in

*

out

in in

shr

out

in in

OneCycle

DFG of the FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Covered DFG

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Kris Kuchcinski 25(32)

Page 35: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Idea: Compilation PrincipleDSP Data Path

+

x

in

ACC.

DFG “Pattern” of MAC

*

+

in

out

in

DSP Instruction Set

*

+

in

out

in

*

out

in in

shr

out

in in

OneCycle

DFG of the FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Covered DFG

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

Kris Kuchcinski 25(32)

Page 36: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Design Flow

*0

in

+8

*1

in

*2

in

+9

*3

in

*4

in

+10

*5

in

*6

in

+11

*7

in

+26

+12 +13

+27

*14 *16 *17*15

+18 +19

*22 *20 *21*23

+24+25

outout

Pattern Generator

Application Graph Step 1ConstraintsClock = 25MHz, Critical path = 7 nodes

Set of Patterns

+

out

+

in *

in

+

in *

in

+

out

+

*

in

+

in*

in

+

out *

*

out

*

in+

out

in

+

* *

*

in

out

*

in

out +

* out

in *

out

+

out

+

in

*

+

in

out

*

in

*

out

in

+

out

in

+

out

in

+

out

in

Exploration Model Generattion

Scheduling ConstraintsArchitecture Model

Recongurable Cell

Interconnections

Reg. 1 Reg. 2

Data-path

Processor core

CP Specication

Solver

• Selected Set of Patterns• Binding Information• Scheduling Information

*0

+8

in

*1

in

*2

+9

in

*3

in

*4

+10

in

*5

in

*6

+11

in

*7

in

+26

+12 +13

+27

*14 *16 *15 *17

+18 +19

*22 *20 *23 *21

+24+25

outout

0

1

2

3

4

5

P3 P3

P4 P4

P2 P2

P1 P1

in in

out

in in

out

in inin in

+

out

+

*

in

+

in*

in

+

* *

*

in

out

*

in

out

*

+

in

out

*

in

+

out

in

Step 2

Step 3

• Parallel execution• Deadline = 5 cycles

Kris Kuchcinski 26(32)

Page 37: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Idea: Pattern Generation Principle

N0

N1

N2

NsN3

N4

N5

N6

N7

N8

Pattern 4 inputs4 outputs

Seed node

Generate patterns for all ns ∈ NApplicationGraph

Connected component for node ns

Additional constraintsnumber of inputs ≤ PatternInputsnumber of outputs ≤ PatternOutputscritical path ≤ PatternCriticalPathnumber of nodes ≤ PatternNumberOfNodespower consumption ≤PatternPowerConsumption...

Reduce number of patterns (remove isomorphicpatterns, add most frequent patterns, etc.)

Kris Kuchcinski 27(32)

Page 38: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

(Sub-)graph isomorphism

GraphMatch(GraphTarget ,GraphPattern)

Kris Kuchcinski 28(32)

Page 39: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Scheduling Example - FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

add

in

out

mul

in in

mul

in in

out

Integer mul

in in

add

out

Integer

shr

out out

add

in add

in in

match M_18

match M_7

match M_6

match M_5

match M_4

match M_3

match M_20

!

"

#

$

%

&

'

(

)

*

"!

""

"#

"$

"%

"&

"'

"(

")

"*

#!

+,-

+,-

./")

./")

01

./(

./(

01

./'

./'

01

./&

./&

01

./%

./%

01

./$

./$

01

./#!

01

2,3

01

01

2,3

01

01

2,3

456755

01

01

01

01

01

01

01

2,3

2,3

0182,3

9:3;1<021<

2,3

!"#$%&'(%&

)*+,

)*+,

)*-

)*-

)*.

)*.

)*/

)*/

)*0

)*0

)*1

)*1

'%

)*23

3

+

2

1

0

/

.

-

,

4

+3

++

+2

+1

+0

+/

'%

'%

'%

(5#

(5#

(5#

'%

(5#

'%

(5#

'%

(5#

'%

678977

'%:(5#

;5<

;5<

Kris Kuchcinski 29(32)

Page 40: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Scheduling Example - FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

add

in

out

mul

in in

mul

in in

out

Integer mul

in in

add

out

Integer

shr

out out

add

in add

in in

match M_18

match M_7

match M_6

match M_5

match M_4

match M_3

match M_20

!

"

#

$

%

&

'

(

)

*

"!

""

"#

"$

"%

"&

"'

"(

")

"*

#!

+,-

+,-

./")

./")

01

./(

./(

01

./'

./'

01

./&

./&

01

./%

./%

01

./$

./$

01

./#!

01

2,3

01

01

2,3

01

01

2,3

456755

01

01

01

01

01

01

01

2,3

2,3

0182,3

9:3;1<021<

2,3

!"#$%&'(%&

)*+,

)*+,

)*-

)*-

)*.

)*.

)*/

)*/

)*0

)*0

)*1

)*1

'%

)*23

3

+

2

1

0

/

.

-

,

4

+3

++

+2

+1

+0

+/

'%

'%

'%

(5#

(5#

(5#

'%

(5#

'%

(5#

'%

(5#

'%

678977

'%:(5#

;5<

;5<

Kris Kuchcinski 29(32)

Page 41: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Scheduling Example - FIR filter

Integer mul

in in

add mul

in in

mul

in in

add

add mul

in in

add mul

in in

Integer

add mul

in in

mul

in in

shr

out out

add

add

add

mul

in in

add

in

out

mul

in in

mul

in in

out

Integer mul

in in

add

out

Integer

shr

out out

add

in add

in in

match M_18

match M_7

match M_6

match M_5

match M_4

match M_3

match M_20

!

"

#

$

%

&

'

(

)

*

"!

""

"#

"$

"%

"&

"'

"(

")

"*

#!

+,-

+,-

./")

./")

01

./(

./(

01

./'

./'

01

./&

./&

01

./%

./%

01

./$

./$

01

./#!

01

2,3

01

01

2,3

01

01

2,3

456755

01

01

01

01

01

01

01

2,3

2,3

0182,3

9:3;1<021<

2,3

!"#$%&'(%&

)*+,

)*+,

)*-

)*-

)*.

)*.

)*/

)*/

)*0

)*0

)*1

)*1

'%

)*23

3

+

2

1

0

/

.

-

,

4

+3

++

+2

+1

+0

+/

'%

'%

'%

(5#

(5#

(5#

'%

(5#

'%

(5#

'%

(5#

'%

678977

'%:(5#

;5<

;5<

Kris Kuchcinski 29(32)

Page 42: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Results

Table: Results obtained for sequential scheduling and parallelscheduling.

Sequential Parallel scheduling Parallel schedulingscheduling (model A) (model B)

Benchmarks |V| Cyc

les

Sel

ecte

dC

ycle

s

Spe

edup

Run

time

(s)

Sel

ecte

dC

ycle

sP

aral

lel

mem

ory

acce

sses

Loca

lva

riabl

esN

umbe

rce

lls

Spe

edup

S1

Run

time

(s)

Sel

ecte

dC

ycle

sN

umbe

rce

llsS

peed

upS

2

Run

time

(s)

Perc

ento

fS1

JPEG IDCT 200 254 6 195 1.3 18.9 28 22 13 78 8 11.55 14.2 28 34 5 7.47 10.2 64%BF 330 340 9 163 2.09 0.1 7 81 3 152 4 4.2 13.2 7 98 4 3.47 0,01 82%MESA invert matrix 278 334 7 148 2.26 3.8 9 25 38 134 8 13.36 0.6 9 78 4 4.28 0.5 32%with mem. access ≤ 10 9 29 10 134 8 11.52 1.99

MCRYPT cast128 424 464 29 240 1.83 50.5 18 202 8 155 6 2.3 6.6 18 219 3 2.12 15.9 92%GSMenc 387 433 8 117 3.7 0.1 9 16 15 132 8 27.06 6.0 9 68 2 6.37 7.2 23%POLARSSL aes 1350 1658 12 316 2.28 6.2 15 280 27 739 8 5.92 20.2 10 482 5 3.44 43.6 58%POLARSSL des3 398 530 15 295 1.76 5.2 26 95 6 156 5 5.58 23.9 25 109 4 4.86 24.8 87%Maximal Speedup 3.7 27.06 7.47Average Speedup 2.17 9.98 4.57

Kris Kuchcinski 30(32)

Page 43: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Other constraints

Global constraints (element, regular, cumulative, geost, gcc,knapsack, extensional_support, etc.)More set constraintsComplex search strategiesTo try more http://www.jacop.eu(MiniZinc http://www.g12.cs.mu.oz.au/minizinc/)

Powered by

Kris Kuchcinski 31(32)

Page 44: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Other constraints

Global constraints (element, regular, cumulative, geost, gcc,knapsack, extensional_support, etc.)More set constraintsComplex search strategiesTo try more http://www.jacop.eu(MiniZinc http://www.g12.cs.mu.oz.au/minizinc/)

Powered by

Kris Kuchcinski 31(32)

Page 45: Constraint Programming in Embedded System Design - lth.se · Constraint Programming in Embedded System Design Programming with Constraints Eugene C. Freuder CONSTRAINTS, April 1997

Constraint Programming in Embedded System Design

Selected Publications

K. Kuchcinski.Constraints-driven scheduling and resource assignment.ACM Transactions on Design Automation of Electronic Systems (TODAES),8(3):355–383, July 2003.

K. Martin, Ch. Wolinski, K. Kuchcinski, A. Floch, and F. Charot.Constraint-driven instructions selection and application scheduling in the DURASEsystem.In 20th IEEE International Conference on Application-specific Systems, Architecturesand Processors (ASAP), Boston, USA, July7-9, 2009.

Ch. Wolinski and K. Kuchcinski.Automatic selection of application-specific reconfigurable processor extensions.In Proc. Design Automation and Test in Europe, Munich, Germany, March 10-14, 2008.

Christophe Wolinski, Krzysztof Kuchcinski, and Erwan Raffin.Automatic design of application-specific reconfigurable processor extensions withUPaK synthesis kernel.ACM Trans. Des. Autom. Electron. Syst., 15(1):1–36, 2009.

Kris Kuchcinski 32(32)