The SystemJ approach to system-level design

September 14, 2017 | Autor: Ivan Radojevic | Categoria: Embedded processor, System-level design, High performance, Data Processing, Embedded System
Share Embed


Descrição do Produto

SpecC

SystemC

Esterel

ECL

CRSM

SHIM

SystemJ

+++

++

++

++

++

++

+++

Mix of a range of semantics or MoCs

+

++

-

-

++

+

++

Behavioural hierarchy

+

-

+++

+++

+++

+

+++

Support for exceptions and exception handling

++

-

+++

+++

++

-

+++

Mix of data and control dominated processing

++

++

+

++

-

++

++

-

-

+++

++

+++

+++

+

A classification and comparison of a few popular system-level languages System-Level Languages

SpecC

Asynchronous

GALS CRP

CCS

CSP

CFSM (POLIS)

Synchronous

CRSM

Dataflow

SHIM Signal

Control (Multiclock) Esterel

Lustre

Argos

ECL

Statecharts

The six major comparison criteria

Informal SystemC

Separation of computation from communication

Formal

Support for formal verification

The SystemJ Approach to System-level Design em o 20 Co 06 de

Flavius Gruian1, Partha Roop2, Zoran Salcic2, Ivan Radojevic2 2. {p.roop,z.salcic,i.radojevic}@auckland.ac.nz Dept. of Electrical and Computer Engineering The University of Auckland New Zealand

M

1. [email protected] Dept. of Computer Science Lund Institute of Technology Sweden

SystemJ Example: A Protocol Stack

SystemJ, the language

1 2

designed for specification, modeling and synthesis of GALS systems

3 4 5 6 7

Java •object orientation •basic data and control processing •platform support GC, compilers, libraries

•desktop and embedded use

Asynchronous Constructs

+

Synchronous Constructs (Esterel-like)

+

•composition || •signal operations

8 9 10 11 12 13 14

•composition ><

15 16 17 18

creates new clock domains

19 20

•channel operations

21 22 23 24

(blocking) read,write also in combination with signal expressions

emit, present, await, RHS, ...

•pure/valued signals •preemptions

25 26 27 28 29 30 31 32 33 34 35 36

abort, suspend, trap

37 38

class Packet { public final static int HDRSIZE = 6 ; public final static int DATASIZE = 5 6 ; public final static int CRCSIZE = 2 ; public final static int PKTSIZE = HDRSIZE+DATASIZE+CRCSIZE ; protected byte packet [ ] ; public Packet ( ) { p a c k e t = new byte [ PKTSIZE ] ; } public int getCRC ( ) { return p a c k e t [ PKTSIZE − 2]= PKTSIZE packet(buffer)

data ! i++

reset_i

i >= to_send.length

TestBench

©2006 Copyright Flavius Gruian

data ? buffer[cnt] = data cnt++

TheStack

true await

inpkt crc = packet.cmpCRC()

lengthy computation

____packet___ crc_ok(crc == packet.getCRC())

kill_check

reset_i

Reset generator:

crc_ok = true crc_ok = false kill_check

reset_i

reset ?

______ reset_i

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.