Sensitivity of Wardrop Equilibria We study the sensitivity of equilibria in the well-known game theoretic traffic model due to Wardrop. We mostly consider single-commodity networks. Suppose, given a unit demand flow at Wardrop equilibrium, one increases the demand by ε or removes an edge carrying only an ε-fraction of flow. We study how the equilibrium responds to such an ε-change.Our first surprising finding is that, even for linear latency functions, for every ε > 0, there are networks in which an ε-change causes every agent to change its path in order to recover equilibrium. Nevertheless, we can prove that, for general latency functions, the flow increase or decrease on every edge is at most ε.Examining the latency at equilibrium, we concentrate on polynomial latency functions of degree at most p with nonnegative coefficients. We show that, even though the relative increase in the latency of an edge due to an ε-change in the demand can be unbounded, the path latency at equilibrium increases at most by a factor of (1 + ε) p . The increase of the price of anarchy is shown to be upper bounded by the same factor. Let us remark that all our bounds are tight.For the multi-commodity case, we present examples showing that neither the change in edge flows nor the change in the path latency can be bounded. We analyze equilibria in the Wardrop model [15] . In this model we are given a network with load-dependent latency functions on the edges and a set of commodities, which is defined by source-sink pairs. For each commodity some demand (traffic flow) needs to be routed from the commodity's source to its sink. A common interpretation of the Wardrop model is that flow is controlled by an infinite number of selfish agents each of which carries an infinitesimal amount of flow. Each agent aims at minimizing its path latency. An allocation, in which no agent can improve its situation by unilaterally deviating from its current path is called Wardrop equilibrium.. Whereas the notion of equilibrium captures stability in closed systems, traffic is typically subject to external influences. Thus, from both the practical and the theoretical perspective it is a natural question, how equilibria respond to slight modifications of either the network topology or the traffic flow.. To analyze this issue, we suppose, we are given an equilibrium flow for unit demand and increase the demand by ε or remove an edge carrying only an ε-fraction of flow. How does the equilibrium responds to such an ε-change in terms of change in flow and latency?. Consider the classical network exhibiting Braess's Paradox [2] . Suppose a unit demand needs to be routed from node s to node t. At equilibrium all traffic follows the zig-zag-path. Increasing the demand by 0 < ε ≤ 1, the paths containing the dashed edges gain an ε-fraction of flow, whereas the zig-zag-path loses an ε-fraction.. Thus, in general, neither path flows nor edge flows at equilibrium are monotone functions of the demand. This observation is one of the reasons why studying the effects of changes might be intriguing.. Our findings for single-commodity networks are as follows. Allowing nondecreasing, continuous latency functions, we show that for every ε > 0, -there are networks, in which after an ε-change every agent is forced to change its path in order to recover equilibrium and -the flow increase or decrease on every edge, however, is at most ε for every network.. Thus, in contrast to our surprising finding of global instability of equilibrium flow, we can prove that edge flows are locally stable.. Examining the latency at equilibrium, we concentrate on polynomial latency functions of degree at most p with nonnegative coefficients. We show that, due to an ε-change in the demand, -the path latency at equilibrium increases at most by a factor of (1 + ε) p (even though the relative increase in the latency of an edge can be unbounded).. This result yields the same bound on the increase in the Price of Anarchy, as well. All presented bounds are best possible. For the multi-commodity case, we present examples for every ε > 0, showing that neither the change in edge flows nor the increase in the path latency can be bounded. This holds already for networks equipped with linear latency functions. The game theoretic traffic model considered in this paper was introduced by Wardrop [15] . Beckmann, McGuire, and Winston [1] observe that such an equilibrium flow is an optimal solution to a related convex program. They give existence and uniqueness results for traffic equilibria (see also [4] and [11] ) by constructing a potential function. Dafermos and Sparrow [4] show that the equilibrium state can be computed efficiently under some assumptions on the latency functions and many subsequent papers gave increasingly efficient methods for computing equilibria. Another line of research examines the degradation of performance due to selfish behavior, called the Price of Anarchy [8, 11] and the inverse, the increase of the maximum latency incurred to an agent due to optimal routing [12] .. Motivated by the discovery of Braess's Paradox [2] many similarly counterintuitive and counterproductive traffic behavior pattern have been discovered.. Most related to our work is a series of papers analyzing equilibrium flows under demand changes. Fisk [5] shows that in multi-commodity networks the increase of one flow demand might decrease others path latencies at equilibrium. Hall [6] shows that the vector of path flows and the vector of the path latencies are continuous functions of the input demand. Furthermore, he proves that for single-commodity networks the path latency at equilibrium is a monotone function of the input demand. Dafermos and Nagurney [3] show that equilibrium flow pattern depend continuously upon the demands and (even non-separable) latency functions. More recently, Patriksson [9] gave a characterization for the existence of a directional derivative of the equilibrium solution. In [7] Joseffson and Patriksson show that while equilibrium edge costs are directionally differentiable, this does not hold for edge flows itself.

O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Using

model

checking

with

symbolic

execution

to

verify

parallel

numerical

programs

We

present

a

method

to

verify

the

correctness

of

parallel

programs

that

perform

complex

numerical

computations,

including

computations

involving

floating-point

arithmetic.The

method

requires

that

a

sequential

version

of

the

program

be

provided,

to

serve

as

the

specification

for

the

parallel

one.

The

key

idea

is

to

use

model

checking,

together

with

symbolic

execution,

to

establish

the

equivalence

of

the

two

programs.

In

domains

that

require

extensive

computation,

such

as

high-performance

scientific

computing,

a

program

may

be

divided

up

among

several

processors

working

in

parallel

in

order

to

reduce

the

overall

execution

time

and

increase

the

total

amount

of

memory

available

to

the

program.

The

process

of

"parallelizing"

a

sequential

program

is

notoriously

difficult

and

error-prone.

Attempts

to

automate

this

process

have

met

with

only

limited

success,

and

thus

most

parallel

code

is

still

written

by

hand.

The

developers

of

such

programs

expend

an

enormous

amount

of

effort

in

testing,

debugging,

and

a

variety

of

ad

hoc

methods

to

convince

themselves

that

their

code

is

correct.

Hence

any

techniques

Permission

to

make

digital

or

hard

copies

of

all

or

part

of

this

work

for

personal

or

classroom

use

is

granted

without

fee

provided

that

copies

are

not

made

or

distributed

for

profit

or

commercial

advantage

and

that

copies

bear

this

notice

and

the

full

citation

on

the

first

page.

To

copy

otherwise,

to

republish,

to

post

on

servers

or

to

redistribute

to

lists,

requires

prior

specific

permission

and/or

a

fee.

that

can

help

establish

the

correctness

of

these

programs

or

find

bugs

in

them

would

be

very

useful..

In

this

paper

we

focus

on

parallel

numerical

programs,

i.e.,

parallel

programs

that

take

as

input

a

vector

of

(usually

floating-point)

numbers

and

produce

as

output

another

such

vector.

Examples

include

programs

that

implement

matrix

algorithms,

simulate

physical

phenomena,

or

model

the

evolution

of

a

system

of

differential

equations.

We

are

interested

in

techniques

that

can

establish

the

correctness

of

a

program

of

this

type-i.e.,

prove

that

the

program

always

produces

the

correct

output

for

any

input-or

exhibit

appropriate

counterexamples

if

the

program

is

not

correct..

The

usual

method

for

accomplishing

this-testing-has

two

significant

drawbacks.

In

the

first

place,

it

is

usually

infeasible

to

test

more

than

a

tiny

fraction

of

the

inputs

that

a

parallel

numerical

program

will

encounter

in

use.

Thus,

testing

can

reveal

bugs,

but,

as

is

well-known,

it

cannot

show

that

the

program

behaves

correctly

on

the

inputs

that

are

not

tested.

Secondly,

the

behavior

of

concurrent

programs,

including

most

parallel

numerical

programs,

typically

depends

on

the

order

in

which

events

occur

in

different

processes.

This

order

depends

in

turn

on

the

load

on

the

processors,

the

latency

of

the

communication

network,

and

other

such

factors.

A

parallel

numerical

program

may

thus

behave

differently

on

different

executions

with

the

same

input

vector,

so

getting

the

correct

result

on

a

test

execution

does

not

even

guarantee

that

the

program

will

behave

correctly

on

another

execution

with

the

same

input..

The

method

proposed

here,

which

combines

model

checking

with

symbolic

execution

in

a

novel

way,

does

not

exhibit

these

two

limitations:

it

can

be

used

to

show

that

a

parallel

numerical

program

produces

the

right

result

on

any

input

vector,

regardless

of

the

particular

way

in

which

the

events

from

the

concurrent

processes

are

interleaved..

In

attempting

to

apply

model

checking

techniques

in

this

setting,

two

issues

immediately

present

themselves.

First,

these

techniques

require

the

programmer

to

supply

a

finitestate

model

of

the

program

being

checked.

But

numerical

programs

typically

deal

with

huge

amounts

of

floating-point

data,

and

the

very

nature

of

our

problem

dictates

that

we

cannot

just

abstract

this

data

away.

Hence

it

is

not

obvious

how

to

construct

appropriate

finite-state

models

of

the

programs

without

greatly

exacerbating

the

state

explosion

problem.

The

second

issue

concerns

the

nature

of

the

property

we

wish

to

check:

the

statement

that

the

output

produced

by

the

program

is

correct

must

be

made

precise,

and

formulated

in

some

way

that

is

amenable

to

model

checking

tools..

We

deal

with

the

first

issue

by

modeling

computations

in

the

programs

symbolically.

That

is,

in

our

model,

the

input

is

considered

to

be

a

vector

of

symbolic

constants

x

i

and

the

output

is

some

vector

of

symbolic

expressions

in

the

x

i

The

numerical

operations

in

the

program

are

replaced

by

appropriate

symbolic

operations

in

the

model.

Furthermore,

each

symbolic

expression

is

represented

by

a

single

integer

index

into

a

table,

which

prevents

the

blowup

of

the

size

of

the

state

vector

and

which

makes

it

possible

to

easily

express

the

model

in

the

language

of

standard

model

checking

tools,

such

as

Spin

We

deal

with

the

second

issue

by

requiring

that

the

user

provide

a

sequential

version

of

the

program

to

be

verified,

which

will

serve

as

a

specification

for

the

parallel

one.

The

model

checker

will

be

used

to

show

that

the

parallel

and

sequential

programs

are

equivalent,

i.e.,

that

they

produce

the

same

output

on

any

given

input.

Of

course,

this

means

that

our

method

only

reduces

the

problem

of

verifying

a

parallel

program

to

the

problem

of

verifying

a

sequential

one.

However,

most

problems

in

this

domain

have

a

much

simpler

sequential

solution

than

parallel

one,

and

it

is

already

common

for

developers

of

scientific

software

to

begin

with

a

sequential

version

of

the

program

or

to

construct

one,

for

testing

and

other

purposes.

Moreover,

we

will

see

below

that

our

method

provides

information

that

can

help

verify

the

correctness

of

the

sequential

program

as

well..

Another

issue

that

arises

in

this

approach

is

the

fact

that

most

numerical

programs

contain

branches

on

conditions

that

involve

the

input.

Such

programs

may

be

thought

of

as

producing

a

set

of

cases,

each

case

consisting

of

a

predicate

on

the

input

and

the

corresponding

symbolic

output

vector.

Our

method

deals

with

this

as

follows.

We

use

the

model

checker

to

explore

all

possible

paths

of

the

sequential

program,

and

for

each

such

path

we

record

the

path

condition

pc,

the

Boolean-valued

symbolic

expression

on

the

input

that

must

hold

in

order

for

that

path

to

have

been

followed.

The

model

of

the

parallel

program

is

engineered

to

take

as

input

not

only

the

symbolic

input

vector,

but

the

path

condition

pc

as

well.

The

model

checker

is

then

used

to

explore

all

possible

paths

of

the

parallel

program

that

are

consistent

with

pc.

If,

for

every

pc,

the

result

produced

by

the

parallel

program

always

agrees

with

the

result

produced

by

the

sequential

one,

the

two

programs

must

be

equivalent..

The

method

is

described

in

detail

in

Section

Using

Spin,

we

have

applied

the

method

to

four

parallel

numerical

programs;

we

describe

this

experience

and

present

some

data

that

arose

from

it

in

Section

Section

discusses

related

work

and

Section

presents

some

conclusions

and

directions

for

future

work.

We

have

described

a

method

that

uses

model

checking

techniques

in

combination

with

symbolic

execution

to

verify

the

correctness

of

the

calculations

performed

by

parallel

programs-even

complex

floating-point

calculations.

We

have

successfully

applied

this

method

to

four

quite

different

examples,

scaling

to

configurations

of

between

and

processes.

While

these

numbers

are

much

smaller

than

those

that

arise

in

practice,

evidence

from

the

application

of

model

checking

techniques

with

other

kinds

of

software

suggests

that

problems

are

usually

exposed

by

verification

of

relatively

small

configurations.

This

is

quite

different

from

the

case

with

testing,

where

the

small

size

may

make

it

difficult

to

trigger

particular

pathological

patterns

of

behavior.

The

difference

is

due

to

the

fact

that

model

checking

takes

into

account

all

possible

executions

of

the

model..

The

key

idea

of

our

method

is

to

compare

a

sequential

and

a

parallel

program

by

using

the

path

conditions

arising

from

the

sequential

version

as

a

filter

when

exploring

the

parallel

version.

This

approach

takes

advantage

of

the

fact

that,

since

it

is

usually

easier

to

construct

a

correct

sequential

numerical

program,

scientific

software

developers

often

start

with

a

sequential

version

or

develop

one

in

tandem

with

the

parallel

version..

The

approach

does

have

several

limitations.

First,

as

it

now

stands,

models

of

the

sequential

and

parallel

programs

must

be

built

by

hand.

This

requires

significant

effort

and

a

degree

of

skill

on

the

part

of

the

user.

The

ideal

situation

would

be

to

have

tools

that

automatically

extract

the

models

from

source

code,

and

indeed

a

great

deal

of

research

on

this

subject

has

been

carried

out,

at

least

for

other

domains..

We

are

exploring

ways

to

adapt

these

techniques

to

MPI

programs,

though

we

expect

to

encounter

some

significant

challenges

when

it

comes

to

automatically

creating

models

of

programs

with

large

amounts

of

floating-point

data..

A

second

limitation

is

the

need

that

sometimes

arises

to

impose

bounds

on

the

number

of

loop

iterations.

Without

this

restriction,

a

model

in

which

computations

are

performed

symbolically

might

have

an

infinite

number

of

states

and

would

therefore

not

be

amenable

to

standard

model

checking

techniques..

A

third

limitation

is

the

assumption

that

the

computations

performed

in

the

sequential

and

parallel

programs

must

be

computed

in

a

similar

way,

although

the

computations

for

the

parallel

program

may

be

distributed

in

a

complex

manner.

This

assumption

means

that

it

is

usually

relatively

inexpensive

to

determine

if

two

symbolic

expressions

are

equivalent

or

if

one

symbolic

predicate

implies

another.

The

further

removed

the

computations

in

the

two

programs

become,

the

more

powerful

the

symbolic

manipulation

must

be

in

order

to

arrive

at

a

conclusive

result.

If

the

computations

performed

by

the

two

programs

are

very

different,

we

might

argue

that

the

sequential

program

is

not

a

good

specification

for

the

parallel

one.

Nevertheless,

as

we

examine

more

complex

programs,

it

is

certainly

possible

that

the

kind

of

lightweight

symbolic

manipulation

and

theorem

proving

that

we

are

currently

using

will

no

longer

suffice.

For

this

reason,

we

are

exploring

ways

to

integrate

our

approach

with

more

sophisticated

symbolic

algebra

and

theorem

proving

tools..

Perhaps

the

greatest

problem

with

model

checking

parallel

programs

is

state

explosion:

the

fact

that

the

number

of

states

of

a

program

typically

grows

exponentially

with

the

number

of

processes.

A

vast

array

of

techniques

has

been

developed

to

counteract

this

problem,

and

we

have

demonstrated

that

some

of

these,

such

as

partial

order

and

symmetry

reductions,

can

be

adapted

to

work

with

our

method.

Spin

turned

out

to

be

an

excellent

platform

for

the

rapid

prototyping

of

our

method,

although

it

would

be

difficult

to

code

some

of

the

optimizations

that

we

wanted

to

consider.

We

plan

to

explore

these

using

the

Bogor

model

checker

which

is

designed

to

allow

easy

customizations

of

its

search

strategy

and

other

components.

We

intend

to

try

to

take

advantage

of

this

platform

to

explore

a

wide

range

of

optimizations

and

extensions

to

our

method..

Given

these

limitations,

we

certainly

cannot

claim

that

our

method

can

be

used

to

verify

the

correctness

of

every

parallel

numerical

program.

But

we

have

shown

that

it

works

on

some

interesting,

non-trivial

examples

and

that

when

it

is

applicable,

it

seems

to

be

a

very

effective

approach

for

dealing

with

a

very

difficult

problem.

In

addition,

we

expect

to

significantly

increase

the

range

of

applicability

of

the

method

as

we

incorporate

new

and

existing

techniques

from

model

checking,

theorem

proving,

and

symbolic

algebra.

The

idea

of

representing

computations

symbolically

has

a

long

history

and

has

enjoyed

many

applications,

including

to

testing

and

debugging

(e.g.,

There

has

also

been

some

work

incorporating

these

ideas

into

model

checking.

For

example,

a

component

of

the

SLAM

toolkit

translates

a

C

program

into

a

program

that

operates

solely

on

Boolean

variables

corresponding

to

predicates

in

the

original

program.

A

theorem

prover

is

used

in

that

process

to

determine

the

effect

of

each

statement

in

the

original

program

on

the

predicates.

Another

component

uses

symbolic

execution

to

determine

whether

a

path

through

the

Boolean

program

corresponds

to

an

actual

execution

of

the

original

program.

This

is

similar

in

spirit

to

our

method,

which

translates

a

program

into

one

which

operates

on

symbolic

expressions

and

uses

a

(very

lightweight)

form

of

theorem

proving

to

determine

branches

and

expression

equivalence..

Symbolic

execution

has

also

been

used

to

improve

the

precision

of

Java

PathFinder,

in

order

to

verify

properties

of

Java

programs

that

manipulate

complex

data

structures

and

that

may

even

contain

unbounded

loops

Our

approach

differs

from

this

previous

work

in

several

ways:

in

the

way

we

use

the

path

condition

to

filter

out

executions

of

the

parallel

program

that

are

not

consistent

with

a

sequential

execution,

in

our

emphasis

on

complex

floating-point

expressions,

rather

than

on

heapallocated

data

and

integer

expressions,

and

in

our

use

of

the

value

numbering

scheme

to

represent

the

state

space

efficiently..

In

another

direction,

the

recent

work

of

Elams,

Tasiran,

and

Qadeer

also

uses

a

non-concurrent

implementation

as

a

specification

for

a

concurrent

program.

That

work,

however,

is

directed

at

runtime

verification

of

appropriate

concurrent

access

to

data

structures

and

requires

a

special

specification

capturing

an

appropriate

relaxation

of

atomicity.

It

does

not

consider

the

sort

of

parallel

numerical

programs

we

discuss

here,

for

which

construction

of

a

sequential

implementation

is

often

a

standard

part

of

the

development

effort,

and

is

not

intended

to

determine

the

correctness

of

the

numerical

calculations

implemented

by

the

parallel

program..

There

are

a

number

of

tools

and

techniques

that

can

be

used

to

estimate

the

error

arising

from

floating-point

computations

in

programs;

see

for

a

description

and

comparison

of

some

of

these.

We

consider

a

parallel

numerical

program

P

par

that

consists

of

a

fixed

number

of

parallel

processes.

We

write

n

for

the

number

of

parallel

processes.

We

assume

that

these

processes

have

no

shared

memory

and

communicate

only

through

message-passing

functions

such

as

those

provided

by

the

Message

Passing

Interface

(MPI)

(Though

much

of

what

follows

will

apply

equally

to

other

communication

systems,

or

even

to

shared

memory

systems,

MPI

has

become

the

de

facto

standard

for

high

performance

computation,

particularly

in

the

domain

of

scientific

computation.)

We

assume

we

are

given

a

sequential

program

P

seq

which

serves

as

the

specification

for

P

par

We

also

assume

that

both

P

seq

and

P

par

terminate

normally

on

every

input,

a

property

that

can

often

be

verified

using

more

traditional

model

checking

techniques

In

some

cases,

we

may

also

have

to

impose

a

small

upper

bound

on

the

number

of

iterations

of

certain

loops

in

a

program,

to

ensure

that

the

model

we

build

will

not

have

an

inordinately

large

(or

even

infinite)

number

of

states..

Notice

that

the

requirement

that

P

par

and

P

seq

be

equivalent

implies,

in

particular,

that

each

program

be

deterministic,

i.e.,

that

if

given

the

same

input

twice,

it

will

produce

the

same

output.

If

either

program

fails

to

be

deterministic,

this

will

be

caught

and

flagged

as

an

error

by

our

method..

To

simplify

the

presentation,

we

begin

by

explaining

the

method

under

the

assumption

that

neither

program

contains

branches

on

expressions

involving

variables

that

are

modeled

symbolically.

After

this

we

consider

some

numerical

issues

that

arise

from

the

fact

that

floating-point

arithmetic

is

only

an

approximation

to

the

arithmetic

of

the

real

numbers,

and

finally

we

describe

the

general

approach,

in

which

branches

on

symbolically

modeled

expressions

are

allowed.

In

this

section,

we

discuss

our

implementation

of

the

method

and

our

experience

in

applying

it

to

four

numerical

programs.

The

source

code

for

the

implementation,

the

models,

and

all

of

the

experimental

results

can

be

obtained

at

The

core

of

our

implementation

is

a

library

of

functions

for

manipulating

symbolic

expressions

and

maintaining

the

symbolic

expression

table.

This

library

is

written

in

C

and

is

incorporated

into

our

models

by

using

the

embedded

C

code

facility

of

Spin.

The

entries

in

the

table

are

C

structs,

and

include

fields

for

the

index

of

the

expression,

an

integer

code

representing

the

operator,

pointers

to

the

left

and

right

subexpressions

for

binary

expressions,

etc.

A

hashtable

is

also

used,

in

order

to

find

table

entries

quickly..

Three

"levels"

of

each

arithmetic

operation

are

provided,

corresponding

to

the

three

different

equivalence

relations

discussed

in

Section

The

level

operations

correspond

to

Herbrand

equivalence;

these

simply

form

a

new

expression

from

the

operator

and

operands,

check

to

see

if

the

new

expression

already

exists

in

the

table,

add

it

to

the

table

if

it

does

not,

and

return

the

index.

The

level

operations

correspond

to

IEEE

equivalence

and

do

a

little

more

work;

the

level

addition

operation,

for

example,

checks

to

see

whether

one

of

the

operands

is

(in

which

case

it

returns

the

other

operand),

or

if

one

operand

is

the

negative

of

the

other

(in

which

case

it

returns

The

level

operations

correspond

to

real

equivalence.

The

level

addition

operation,

for

example,

exploits

associativity

and

commutativity

to

reduce

sums

to

a

simplified

form

in

which

the

parentheses

are

moved

to

the

left

as

far

as

possible,

the

terms

are

ordered

by

increasing

index,

literal

integer

terms

are

combined

into

a

single

literal,

and

so

on.

Of

course,

when

checking

for

IEEE

equivalence,

the

level

addition

and

multiplication

operations

can

also

be

used

for

all

integer

expressions..

Similar

things

could

of

course

be

done

for

the

other

level

operations

(multiplication,

subtraction,

and

so

on),

but

in

the

examples

we

have

studied

so

far

this

has

not

been

necessary,

and

so

at

present

these

work

exactly

as

the

corresponding

level

operations.

In

our

experience,

it

seems

that

additive

reduction

operations,

which

are

very

common

in

parallel

numerical

programs,

account

for

much

of

the

difference

between

the

exact

symbolic

expressions

computed

in

the

sequential

and

parallel

models.

Reductions

over

other

operations,

such

as

multiplication,

seem

to

be

much

less

common.

In

any

case,

the

symbolic

package

is

designed

to

make

it

easy

to

specify

the

symbolic

operation

used

for

a

particular

computation

in

the

code

and

to

add

new

versions

of

the

symbolic

operations

to

reduce

expressions

to

other

simplified

forms,

as

the

need

arises..

The

function

φ,

which

attempts

to

determine

whether

the

given

path

condition

pc

implies

the

given

expression

e

(or

¬e),

is

implemented

as

follows.

First,

by

construction,

pc

will

always

be

a

conjunction

of

smaller

expressions

of

the

form

pc

i

or

¬pc

i

where

each

pc

i

arises

by

evaluating

one

of

the

conditional

expressions

in

a

branching

statement.

Our

implementation

of

φ

simply

loops

over

i,

looking

for

a

pc

i

which

can

be

easily

seen

to

imply

e

or

¬e.

By

"easily

seen"

we

mean

by

using

reasoning

such

as

x

y

x

y,

x

y

¬(x

y),

and

so

on.

If

it

finds

such

a

pc

i

it

returns

true

or

false,

as

the

case

may

be,

otherwise

it

returns

unknown.

This

lightweight

procedure

seems

to

be

effective

because

the

conditional

expressions

evaluated

in

the

sequential

and

parallel

programs

tend

to

be

quite

similar..

All

of

the

variables

from

the

symbolic

package

are

static,

that

is,

they

are

not

incorporated

into

the

state

vector

by

using,

for

example,

the

Spin

function.

Thus

the

only

variables

incorporated

into

the

state

vector

are

those

corresponding

to

variables

in

the

original

programs

and

the

path

condition

variable..

The

type

of

equivalence

that

one

wishes

to

verify

(Herbrand,

IEEE,

or

real)

is

controlled

by

a

command-line

argument

specified

when

compiling

the

verifier

(pan.c)

generated

by

Spin.

This

argument

tells

the

symbolic

package

which

level

of

symbolic

operations

it

should

use:

level

for

Herbrand

equivalence,

level

for

IEEE

equivalence,

and

level

for

real

equivalence.

(When

verifying

IEEE

equivalence,

integer

addition

and

multiplication

operations

use

level

instead

of

level

Finer

control

over

the

operations

can

be

obtained

by

defining

additional

functions

and

calling

them

from

the

Promela

model

where

desired.

O B I O B I O O B O O O O O B O O O B O B O O O O O O O O O B O B O O O O B O O B O O O O O O O O O B O O O O O O B B I O O B I O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O B O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O B I O B I O O O O O O O O O O O O O O O O O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O B O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B B O O O O O O O O O O O O O O B B O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B I O O O O B I O O O B O O O O O B O O B O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O B O O O O O O O B B O O O O O O O O O B O O O O O O B B O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O B B O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O B O O B O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B O O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O B I O O O O O O O O B O O O O O O O O B O O O O O O O B O O O B O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B B O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O B O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B I I B O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O


A common operator for FFT and FEC decoding In the Software Radio context, the parametrization is becoming an important topic especially when it comes to multi-standard designs. This paper capitalizes on the common operator technique to present new common structures for the FFT and FEC decoding algorithms. A key benefit of exhibiting common operators is the regular architecture it brings when implemented in a Common Operator Bank (COB). This regularity makes the architecture open to future function mapping and adapted to accommodated silicon technology variability through dependable design. Over the past few years, a proliferation of communication standards has substantially increased the complexity of radio design. In typical designs, the communication standards are implemented separately using dedicated instantiations which are difficult to upgrade for the support of new features. In the present days, the concept of Software Radio (SWR), introduced by J. Mitola in [1] , emerged from military research to become a cornerstone of modern communication system design. The SWR technique becomes the way to design flexible and reconfigurable architectures capable of supporting different transmission standards in a single platform. Although there is a common agreement on the SWR aim and benefit, the way of implementing SWR, also known as Software Defined Radio (SDR) varies, considering various tradeoffs requested by actual design (cost, flexibility, complexity, power consumption, speed, etc.), and current silicon technology.. A digital communication baseband chain, when supporting different standards, uses typical signal processing operations such as modulation, channel coding, equalization, etc. These functions can be identified and then explored to take advantage from the similarities among common tasks in order to enhance power efficiency and area occupation [4] . In this context, parameterization technique has been introduced in [2] and [3] . It consists in identifying the common aspects among the targeted modes and standards in order to define a generic operation capable of handling the required tasks. This generic operation can switch from a configuration to another by a simple change of its parameters.. In this paper, we exploit a parameterization approach proposed in [4] , called the common operator technique that can be considered to build a generic terminal capable of supporting a large range of communication standards. The main principle of the common operator technique was to identify common elements based on smaller structures that could be heavily reused across functions. This technique aims at designing a scalable transceiver based on medium granularity operators, larger than basic logic cells and smaller than Velcro Method or common function [4] . Similarly to flip flop or logic gate, a common operator is used regardless of the function executed by. From this point, the common operator technique claims to be less standard dependent than classical approach [5] where the entire specific building block required by a standard are implemented and executed when needed. It is expected that the reduction of the exploration space to telecommunication baseband functions will help exposing medium-grain common operators. The resulted implementation is expected to be more flexible and scalable to a wide range of standards. Such a regular structure is also well adapted to cope with silicon technology process variability. Indeed, as CMOS technology shrinks, the performance of the operator instances may vary across space (on the silicon wafer) and time [6] . Dealing with regular building blocks helps map the most demanding algorithms onto the best performing cells, enabling the design to be dependable or even self-healing. Many previous works focused on defining [7, 12, 14, 15] implementing and managing [8] the Common Operators (CO). In this paper we investigate the commonalities of the FFT and FEC decoding operator. The core of the paper focuses on a new operator that exploits similarities between FFT butterflies and trellis decoding structures used in the Viterbi algorithm. These similarities are exploited to suggest a CO for the FFT and the Viterbi decoder. CO for FFT and FEC was already studied in [13, 16] with a focus on Reed-Solomon (RS) decoder based on a FFT operator over GF (2 m ). This work is recapped herein to highlight how it can be considered along with the FFT/Viterbi CO to build a more general library framework for FFT/FEC functions.. Then, the paper is organized as follows. The second section presents the Common Operator technique. In the third section we briefly recap the work of [13, 16] . Then, in section four we focus on the new FFT/Viterbi CO, exposing the similarities and their exploitation to build a new CO. The fifth section proposes a set of two common structures for FFT and FEC decoding algorithms; finally the results and the performances of these common operators are discussed in the last section.

O B I O B O O O O O B I O O B O O O O O O O O O O O O O O O O O B I O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O O O O O O O B O O B O O O B O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O


Fault-diagnosis of grid structures The problem of fault diagnosis in grid-connected systems is considered. A diagnosis algorithm, called DAGS and based on the PMC model, is presented. DAGS provides a diagnosis which is shown to be correct, although possibly incomplete, if the cardinality of the actual fault set is below a bound T σ , dependent of the actual syndrome σ. A bound T independent of σ is also derived by a worst-case analysis covering the cases of triangular, square, hexagonal and octagonal grids. T is shown to be Θ(n 2/3 ), where n is the size of the system, for all the grids considered. Fault diagnosis is of primary importance to provide high dependability in complex systems. It aims at identifying the (faulty or non-faulty) state of the units composing a system. Upon identification, faulty units may be either replaced or isolated from the rest of the system, and fault recovery or reconfiguration techniques may be used to restore a coherent state, allowing the system to resume operation, possibly with reduced performance (graceful degradation).. System-level diagnosis was introduced by Preparata, Metze and Chien [14] and has been deeply investigated in literature. It aims at diagnosing systems composed by units (usually processors),. with the requirement that they are able to test each other by exchanging information through point-to-point bi-directional links. A system is represented by the system graph G=(N,L), an undirected graph where node set N represents units and edge set L represents interconnections.. The cardinality 1 n=#N is called the size of the system. If edge (u,v) exists, units u and v are said to be adjacent, denoted u↔v.. In principle, the test of unit v, performed by unit u, proceeds as follows: the testing unit u provides a test sequence as input to the tested unit v, which returns an output sequence to u.. Unit u compares the actual and the expected output sequences and provides a binary test outcome. The outcome is 0 (the test passes) if the actual and the expected results match, 1 (the test fails) otherwise. Table 1 .. Other diagnostic models are based on comparisons rather than tests [13] , or use different invalidation rules, such as the BGM model [1] , which assumes test outcome 1 whenever the tested unit is faulty, regardless of the state of the testing unit.. In the following, notation u → of faulty units (actual fault set), the resulting set of all test outcomes is called syndrome, denoted σ. As seen from Table 1 , a fault set may yield different syndromes; conversely, a given syndrome may derive from different fault set. 1 Throughout this paper #X denotes the cardinality of set X, for any X.. The syndrome is collected by an external, reliable diagnoser and it is decoded by a diagnosis algorithm. The diagnosis algorithm provides a diagnosis of the system by partitioning set N into set F of units declared faulty, set K of units declared non-faulty, and set S=N−(F∪K) of suspect units. Given any syndrome σ, the diagnosis is said to be correct if F⊆N f and K⊆N−N f . The diagnosis is said to be complete if S=∅.. A system is said one-step t 0 -diagnosable if correct and complete diagnosis is always possible for every fault sets N f with #N f ≤t 0 , for some value of t 0 . The value of t 0 , called the diagnosability of the system, is limited above by the minimum of the node degrees in G [4] . A general one-step diagnosis algorithm is reported in [7] .. The natural application of the system-level diagnosis theory is the diagnosis of massive parallel processing systems. One emerging, and perhaps more interesting, application is the "waferscale" VLSI testing [15] . In both cases the system is represented by a regular or quasi-regular graph. In the case of grid structures, which are the most common, the node degree is (or is limited above by) a small constant. This implies that the one-step diagnosability is also a small constant [8, 14] . Since the size of the systems tends to grow as the technology improves, the hypotheses of a number of faults limited by a small constant is unrealistic and the one-step diagnosis algorithms are inadequate. To overcome this limitation, alternative approaches have been proposed.. The probabilistic approach aims at providing a diagnosis, usually complete, whose correctness is evaluated by probabilistic models. Under this approach, Scheinerman [17] considered random graphs (i.e., graphs in which every test link exists with probability p) and showed that correct and complete diagnosis can be obtained with probability approaching to 1 as n→∞ if the average number of links per unit is slightly above log(n). Blough et al. [2] reinforced this result by proving that log(n)+c test links per unit, where c is a small constant, are necessary and sufficient to achieve asymptotically correct and complete diagnosis.. Somani and Agarwal [18] proposed a distributed approach to the diagnosis of regular structures.. LaForge et. Al. [12] and Huang et. Al. [10] proposed algorithms to achieve almost correct and complete diagnoses in regular or quasi regular systems. Khanna and Fuchs [11] focused on sequential diagnosis and provided bounds to the sequential diagnosability t S of several regularinterconnected systems. In particular, they showed that sequential diagnosis is possible in ddimensional square grids if the number of faults does not exceed a bound. The deterministic approach aims at providing a (possibly incomplete) diagnosis, which is proved to be correct for all syndromes deriving by fault sets of cardinality less than T, a syndrome-independent bound which is usually far above t 0 . Under this approach, an algorithm for the diagnosis of grids of degree 4 (called square grids) has been introduced in [5, 6] . Given any syndrome σ, the algorithm also returns a syndrome-dependent bound T σ , with T σ ≥T. The average of T σ has been evaluated by means of simulation.. In this paper, the diagnosis algorithm presented in [5, 6] is generalized to grids of any degree, and the syndrome-independent bound T for diagnosis correctness is derived by a worst-case analysis for grids of degrees 3, 6 and 8. For the sake of brevity the analysis of octagonal grids will be reported in full detail, while the results obtained for the remaining cases will be presented synthetically, referring the reader to [3, 4, 16] for further details.. The paper is structured as follows. Section 2 gives some preliminary definitions and properties.. The diagnosis algorithm is presented in Section 3, and the bound T for diagnosis correctness is derived in Section 4. Section 5 draws some conclusions.

O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Multi-niche crowding in the development of parallel genetic simulated annealing In this paper, a new hybrid of genetic algorithm (GA) and simulated annealing (SA), referred to as GSA, is presented. In this algorithm, SA is incorporated into GA to escape from the local optima. Then, the idea of hierarchical parallel GA is borrowed to parallelize GSA for the optimization of multimodal functions. In addition, multi-niche crowding is used to maintain the diversity in the population of parallel GSA. The performance of the proposed algorithms is evaluated against a standard set of multimodal benchmark functions. Multi-niche crowding PGSA and normal PGSA show some remarkable improvement in comparison with the conventional parallel GA and the breeder genetic algorithm. When applying GA to multimodal optimization problems, the successful application depends on the preservation of good individuals into next generation and the maintaining of diversity of individual solutions in the search space. SA is an effective way to preserve good individuals into the next generation, and crowding strategy is an alternative approach to maintain the population diversity and postpone premature convergence. This paper presents a new hybrid of GA and SA, referred to as genetic simulated annealing (GSA). GSA is also parallelized to find multiple optimal solutions for the multimodal functions. More importantly, multi-niche crowding strategy is used to maintain population diversity of parallel GSA (PGSA). The paper aims to demonstrate that multi-niche crowding PGSA is a powerful optimization strategy.

O O O O O O O O B I O O O O O O O B I O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Objects and their lambda calculus A kind of parallel typed lambda calculus is presented based on the language and structure of objects. The term "object" is used here in a sense different from that related to the expression "object-oriented language (programming)". By "objects" here we mean any class of entities which (a) are resource dependent and (b) combine to each other (via some fitness relation) to form more complex ones.Two operators, λ and its dualλ, are used, and two operations, a binary one, , for juxtaposition, and an n-ary one, |, for every n, for branching. The construct λv.x represents, roughly, a receiving scheme producing copies of x when fed with proper objects y to fill the empty place v of x, while the dual constructλy.z represents a sending scheme that throws y out z in proper surroundings. The interaction of these two constructs takes place when they are matched together by and yields an exchange of resources in a way that preserves the total amount of them. The calculus captures such notions as concurrency, interaction and branching in a way analogous to that of [4] and [5], but with a quite different meaning of the operations. What is described here is "situations" of coexisting entities rather than computations, and resource-preserving transformations between them. The terms are shown to have unique normal forms. Object structures that model the simple theory of objects are extended here in suitable graph structures that provide sound and complete semantics of the calculus.

O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Discovering Activities to Recognize and Track in a Smart Environment Abstract-The machine learning and pervasive sensing technologies found in smart homes offer unprecedented opportunities for providing health monitoring and assistance to individuals experiencing difficulties living independently at home. In order to monitor the functional health of smart home residents, we need to design technologies that recognize and track activities that people normally perform as part of their daily routines. Although approaches do exist for recognizing activities, the approaches are applied to activities that have been preselected and for which labeled training data are available. In contrast, we introduce an automated approach to activity tracking that identifies frequent activities that naturally occur in an individual's routine. With this capability, we can then track the occurrence of regular activities to monitor functional health and to detect changes in an individual's patterns and lifestyle. In this paper, we describe our activity mining and tracking approach, and validate our algorithms on data collected in physical smart environments. A convergence of technologies in machine learning and pervasive computing as well as the increased accessibility of robust sensors and actuators has caused interest in the development of smart environments to emerge. Furthermore, researchers are recognizing that smart environments can assist with valuable functions such as remote health monitoring and intervention. The need for the development of such technologies is underscored by the aging of the population, the cost of formal health care, and the importance that individuals place on remaining independent in their own homes.. To function independently at home, individuals need to be able to complete Activities of Daily Living (ADLs) [1] such as eating, dressing, cooking, drinking, and taking medicine. Automating the recognition of activities is an important step toward monitoring the functional health of a smart home resident. When surveyed about assistive technologies, family caregivers of Alzheimer's patients ranked activity identification and tracking at the top of their list of needs [2] .. In response to this recognized need, researchers have designed a variety of approaches to model and recognize activities. The generally accepted approach is to model and recognize those activities that are frequently used to measure the functional health of an individual [3] . However, a number of difficulties arise with this approach. First, there is an assumption that each individual performs most, or all, standard ADLs in a consistent predefined manner in their home environments where they can be monitored. This is certainly not always the case. For example, while individuals may regularly eat meals, they may go out to restaurants for the majority of their meals, which would make tracking this ADL challenging for a smart home. Even for an activity that is performed in the monitored environment, different individuals might perform it in vastly different ways, making the reliance on a list of predefined activities impractical due to the intersubject variability. In addition, the same individual might perform even the same activity in different ways, requiring methods that can also deal with intrasubject variability.. Second, tracking only preselected activities ignores the important insights that other activities can provide on the functional health of individuals. For example, Hayes et al. [4] found that variation in the overall activity level at home was correlated with mild cognitive impairment. This activity level was not restricted to predetermined activities but was related to the total activity level in the monitored environment. This highlights the fact that it is important for a caregiver to recognize and monitor all activities that an individual regularly performs in their daily environments.. Third, to track a predefined list of activities, a significant amount of training data must be labeled and made available to the machine learning algorithm. Because individuals perform activities differently due to physical, mental, cultural, and lifestyle differences [5] , sample data need to be collected and labeled for each individual before the learned model can be used reliably to track the individual's activities and functional well-being. Unfortunately, collecting and labeling such sensor data collected in a smart environment is an extremely time-consuming task. If the individual is asked to participate by keeping track of their own activities over a period of time, the process is additionally obtrusive, laborious, and prone to self-report error [6] .. In this paper, we introduce an unsupervised method of discovering and tracking activities in a smart environment that addresses the above issues. We implement our approach in the context of the CASAS Smart Home project [7] by using sensor data that are collected in the CASAS smart apartment testbed. The unsupervised nature of our model provides a more automated approach for activity recognition than is offered by previous approaches, which take a supervised approach and annotate the available data for training. Compared to traditional methods for activity recognition which solely utilize HMM or other models for recognizing labeled activities, our approach first "discovers" interesting patterns of activity, and then, recognizes these discovered activities to provide a more automated approach. We introduce a unique mining method for discovering activity patterns, along with a clustering step to group discovered patterns into activity definitions. For the recognition step, we create a boosted version of a hidden Markov model (HMM) to represent the activities and their variations, and to recognize those activities when they occur in the smart environment.. In the remainder of this paper, we detail our approach to activity discovery, recognition, and tracking. In Section 2, we compare our approach to related work in the field. Section 3 explains the discovery of activities using mining and clustering methods. Section 4 describes how discovered activities can be recognized using the HMM model. Finally, in Section 5, we will present the results of our experiments in the CASAS testbed for scripted ADLs, interleaved ADLs, and also long-term daily resident activities. In order to provide robust activity recognition and tracking capabilities for smart home residents, researchers need to consider techniques for identifying the activities to recognize and track. While most approaches target specific ADLs for tracking, this imposes a burden on annotators and residents and often introduces a source of error in the process.. We introduce an alternative method for tracking activities in smart environments. In our approach, we employ our ADM algorithm to discover frequent activities that regularly and naturally occur in a resident's environment. Models are then learned to recognize these particular activities, and the resulting findings can be used to assess the functional well-being of smart environment residents.. While this is a useful advancement in the field of smart environment technologies for health monitoring and assessment, there is still additional research that can be pursued to enhance the algorithms. Currently, the user specifies a desired number of activities to cluster and model. In future work, we will investigate methods for automatically selecting this number based on the resident's lifestyle. We will also investigate methods for seeding the clusters based on smart environment information and for incrementally modifying the patterns, clusters, and models as activities change over time.. Ultimately, we want to use our algorithm design as a component of a complete system that performs functional assessment of adults in their everyday environments. This type of automated assessment also provides a mechanism for evaluating the effectiveness of alternative health interventions. We believe that these activity profiling technologies are valuable for providing automated health monitoring and assistance in an individual's everyday environments. We treat a smart environment as an intelligent agent that perceives the state of the resident and the physical surroundings using sensors, and acts on the environment using controllers in such a way that the specified performance measured is optimized [8] . Researchers have generated ideas for designing smart environments, such as software algorithms that track the location and activities of residents, generate reminders, or react to hazardous situations [9] . Smart environment projects with physical testbeds now exist, including the CASAS project [7] , the MavHome project [10] , the Gator Tech Smart House [11] , the iDorm [12] , and the Georgia Tech Aware Home [13] . Based on these advances, researchers are now beginning to recognize the importance of applying smart environment technology to health assistance [14] , [15] , [16] , [17] and companies are recognizing the potential of this technology for a quickly growing consumer base [18] .. Activity recognition is not an untapped area of research. Because the need for activity recognition technology is great, researchers have explored a number of approaches to this problem. The approaches differ according to the type of sensor data that is used for classification, the model that is designed to learn activity definitions, and the method that is used to annotate sample data.

O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Can ISPS and P2P users cooperate for improved performance? Peer-to-peer (P2P) systems, which are realized as overlays on top of the underlying Internet routing architecture, contribute a significant portion of today's Internet traffic. While the P2P users are a good source of revenue for the Internet Service Providers (ISPs), the immense P2P traffic also poses a significant traffic engineering challenge to the ISPs. This is because P2P systems either implement their own routing in the overlay topology or may use a P2P routing underlay [1], both of which are largely independent of the Internet routing, and thus impedes the ISP's traffic engineering capabilities. On the other hand, P2P users are primarily interested in finding their desired content quickly, with good performance. But as the P2P system has no access to the underlying network, it either has to measure the path performance itself or build its overlay topology agnostic of the underlay. This situation is disadvantageous for both the ISPs and the P2P users.To overcome this, we propose and evaluate the feasibility of a solution where the ISP offers an "oracle" to the P2P users. When the P2P user supplies the oracle with a list of possible P2P neighbors, the oracle ranks them according to certain criteria, like their proximity to the user or higher bandwidth links. This can be used by the P2P user to choose appropriate neighbors, and therefore improve its performance. The ISP can use this mechanism to better manage the immense P2P traffic, e.g., to keep it inside its network, or to direct it along a desired path. The improved network utilization will also enable the ISP to provide better service to its customers. P2P systems have recently gained a lot of attention from the Internet users and the research community. Popular applications that use P2P systems include file sharing systems such as Bit-torrent, eDonkey, Kazaa, Gnutella as well as VoIP systems such as Skype and GoogleTalk [2] . P2P systems are so popular that they contribute more than 50% to the overall network traffic [3, 4, 5] .. However, the wide-spread use of such P2P systems has put ISPs in a dilemma! On the one hand, P2P system applications have resulted in an increase in revenue for ISPs, as they are one of the major reasons cited by Internet users for upgrading their Internet access to broadband [6] . On the other hand, ISPs find that P2P traffic poses a significant traffic engineering challenge [4, 7] . P2P traffic often starves other applications like Web traffic of bandwidth [8] , and swamps the ISP network. This is because most P2P systems rely on application layer routing based on an overlay topology on top of the Internet, which is largely independent of the Internet routing and topology [9] .. To construct an overlay topology, unstructured P2P networks usually employ an arbitrary neighbor selection procedure [5] . This can result in a situation where a node in Frankfurt downloads a large content file from a node in Sydney, while the same information may be available at a node in Berlin. It has been shown that P2P traffic often crosses network boundaries multiple times [9, 10] . This is not necessarily optimal as most network bottlenecks in the Internet are assumed to be either in the access network or on the links between ISPs, but not in the backbones of the ISPs [11] . Besides, studies have shown that the desired content is often available "in the proximity" of interested users [10, 12] . This is due to content language and geographical regions of interest. Since a P2P user is primarily interested in finding his desired content quickly with good performance, we believe that increasing the locality of P2P traffic will benefit both ISPs and P2P users.. To better understand the origin of the problem of overlay-underlay routing clash, let us consider how routing works in the Internet and P2P systems. In the Internet, which is a collection of Autonomous Systems (ASes), packets are forwarded along a path on a per-prefix basis. This choice of path via the routing system is limited by the contractual agreements between ASes and the routing policy within the AS (usually shortest path routing based on a fixed per link cost) [13] .. P2P systems, on the other hand, setup an overlay topology and implement their own routing [14] in the overlay topology which is no longer done on a per-prefix basis but rather on a query or key basis. In unstructured P2P networks queries are disseminated, e.g., via flooding [15] or random walks while structured P2P networks often use DHT-based routing systems to locate data [5] . Answers can either be sent directly using the underlay routing [5] or through the overlay network by retracing the query path [15] . By routing through the overlay of P2P nodes, P2P systems hope to use paths with better performance than those available via the Internet [14, 16] . But the benefits of redirecting traffic on an alternative path, e.g., one with larger available bandwidth or lower delay, are not necessarily obvious. While the performance of the P2P system may temporarily improve, the available bandwidth of the newly chosen path will deteriorate due to the traffic added to this path. The ISP then has to redirect some traffic so that other applications using this path receive enough bandwidth. In other words, P2P systems reinvent and reimplement a routing system whose dynamics should be able to interact with the dynamics of the Internet routing [7, 17] . While a routing underlay as proposed by Nakao et al. [1] can reduce the work duplications it cannot by itself overcome the interaction problems. Consider a situation where a P2P system imposes a lot of traffic on an ISP network. This may cause the ISP to change some routing metrics and therefore some paths (at the routing layer) in order to improve its network utilization. This can however cause a change of routes (at the application layer) by the P2P system, which may again trigger a response by the ISP, and so on. In summary, we identify the following drawbacks:. • The ISP has limited ability to manage its traffic and therefore incurs potentially increased costs for its interdomain traffic, as well as for its inability to do traffic engineering on its internal network.. • The P2P system has limited ability to pick an optimal overlay topology and therefore provide optimal performance to its users, as it has no prior knowledge of the underlying Internet topology. It therefore has to either disregard or reverse engineer it.. • Different P2P systems have to measure the path performance independently.. While we do not know of a P2P network that tries to reverseengineer the Internet topology, there are some proposals that suggest that P2P networks should bias their overlay topology by choosing neighbors that are close in the sense of high throughput or low latency, e.g., [18, 19, 20] or that are within the same AS, e.g., [10, 21] . Others such as the Brocade [22] system propose to build an overlay on top of a structured DHT P2P system that exploits knowledge of the underlying network characteristics. Yet another system [8] proposes to use caching to relieve the tension between ISPs and P2P systems.. We, in this paper, propose and evaluate the feasibility of a simpler solution where ISPs help P2P systems by offering an oracle service. The oracle acts like an abstract routing underlay to the overlay network but as it is a service offered by the ISP it has direct access to the relevant information and does not have to infer or measure it. For example, an ISP knows whether a customer has a DSL broadband or a modem connection, its link delay, etc. The benefit to the ISP is twofold: first, it can now influence the P2P routing decisions via the oracle and so regain its ability to perform traffic engineering (control the traffic flow) and second, the P2P measurement traffic to infer network distances is omitted. The P2P users benefit as explained below. We first analyze the Gnutella network graph according to the metrics explained in Section 2, followed by an evaluation of some Gnutella specific metrics like scalability of network, number of messages exchanged, localization of file content exchange and visualization of topology.. We run three different experiments on five different topology instances with roughly the same number of search queries and the following parameters for the Gnutella nodes:. • Cache size = 1000, without oracle. • Cache size = 100, with oracle for neighbor selection. • Cache size = 1000, with oracle for neighbor selection Note that in our implementation, each Gnutella node sends the contents of its Hostcache to the oracle, which ranks the list of IP addresses according to proximity from the querying node. In other words, the above three cases correspond to experiments with oracle list size of 1, 100, and 1000 respectively. The success rates of the search queries are similar.. To explore the influence of consulting the oracle on the network topology we visualize, in Figure 2 [41] , the Gnutella overlay topology, for the unbiased case and the biased case with oracle list size 1000. At a particular instant in time, we sample the Gnutella overlay topology, display all the online nodes in the graph, and join two nodes with an edge if there exists a Gnutella peering between them at this point of time. Then, using the visualization library yWorks [44], we convert both the graphs into a structured hierarchical format. The resulting graph structures are displayed in Figure 2 .. We can easily observe that the Gnutella topology in the biased case is well correlated with the Internet AS topology, where the nodes within an AS form a dense cluster, with only a few connections going to nodes in other ASes. This is in stark contrast to the unbiased Gnutella graph, where no such property can be observed.. To analyze how churn influences the metrics such as node degree, path length, diameter and number of intra-AS peerings, we sample the Gnutella network 10 times during the simulation run, i.e., every 500 seconds. The results are shown in Figure 3 . Multiple runs of the above experiments, using different world topologies yield similar results.

O O O B O O O O B O B O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O B O O O O O O O O B B O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O O O O O B O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O B O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O B O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O B O O O O O O B O O O O O O O O O O O B O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O B O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O B O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O B O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O B O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O B O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B O O O O O B O O O B O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O B O O O O O O O O B O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O B O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O B B O O O O O O O O O O O O O O O O O O O O B O O O O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O


Evaluation of heuristic techniques for test vector ordering Vector reordering is an essential task in testing VLSI systems because it affects this process from two perspectives: power consumption and correlation among data. The former feature is crucial and if not properly controlled during testing, may result in permanent failure of the device-under-test (DUT). The latter feature is also important because correlation is captured by coding schemes to efficiently compress test data and ease memory requirements of Automatic-TestEquipment (ATE), while reducing the volume of data and lowering the test application time. Reordering however is NP-complete. This paper presents an evaluation of different heuristic techniques for vector reordering using ISCAS85 and ISCAS89 benchmark circuits in terms of time and quality. For this application, it is shown that the best heuristic technique is not the famous Christofides or Lin-Kernighan, but the Multi-Fragment technique. Recently, there has been a tremendous growth in the development and application of intellectual property (IP) cores [1] . These cores are provided by third party vendors and are often shipped with test data so that the core integrator can apply the data to the design after manufacturing to ensure its correct operation. As the complexity of these Sea Of Cores (System On Chip) systems increases, testing has become a significant bottleneck.. During testing, all cores must be tested to ensure that they work properly; this requires a considerable power consumption which may often be higher than for normal operation [2] . A higher power consumption (i.e. more energy is taken from the supply), means that more energy is dissipated through the substrate of the circuit, thus resulting in an increased heat dissipation which may burn devices. Several techniques have been studied to address this problem. A test generation technique for low power, has been discussed in [3] . Another approach is based on scheduling so that during testing, maximum power consumption is kept under a certain threshold to avoid burning the DUT [4] . Previous works ( [5] [6] [7] ) have also suggested reordering of test vectors so that the Hamming distance between adjacent vectors is minimal. They have empirically proved that a minimal Hamming distance translates into a lower activity, thus reducing the power consumption of the DUT. Additionally, the volume of test data can also increase rapidly. This increase affects testing: 1) test time increase is proportional to data volume and 2) the memory requirement of the test equipment system is also increased. To solve the increasing volume, many works have suggested to compress test data [8] [9] . This technique relies on pre-processing vectors by reordering them (i.e. minimizing the Hamming distance between adjacent vectors), differentiating each vector with its successor, and finally applying a coding scheme (e.g. RunLength coding) to compress the processed data. Reordering is an essential task which is needed to address correlation extraction among test data for compression.. For the above two issues, vector reordering is a critical task for manufacturing test of VLSI systems. Vector reordering however translates into a traveling salesman problem (TSP) which is a known NP-complete problem. The TSP instance for vector reordering is represented by a complete graph with a large number of nodes. Therefore it is essential to find a good heuristic solution in terms of time and quality. The objective of this work is to evaluate a number of different heuristic approaches for this problem in terms of execution time and quality and present one that results in best overall performance for vector ordering application. The rest of this paper is organized as follows: In Section 2. basic concepts and definitions are presented. Section 3. examines a number of heuristic approaches and presents their time complexity and quality. Section 4. presents the simulation results for a number of heuristics used in reordering vectors for a number of benchmarks circuits, followed by conclusions in Section 5. An experimental evaluation of test vector ordering heuristics has been presented using quality and execution time as figures of merit. It has been shown that the MultiFragment heuristic performs better than Christofides and Lin-Kernighan heuristics in terms of time using realistic benchmark vector sets. The Multi-Fragment heuristic also outperforms the Christofides heuristic in terms of quality and achieves performance very close to Lin-Kernighan. We recommend ordering algorithms to use the Multi-Fragment heuristic for near-minimal ordered sets of vectors that result in both reduced power consumption and enhanced data compression ratio.

O O O O O B I I O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O B O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I I O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O O B I O O O B O