Diapositive 1 - SoCKET Project

Download Report

Transcript Diapositive 1 - SoCKET Project

V.Lefftz (Astrium), L.Pierre (TIMA)
Workshop - November 2011 - Toulouse
Overview
 Correctness properties for the Astrium case study -
consideration in the SystemC platforms models
 TTP platform (Approximated Timed platform)
 Dual core platform (Architecture Exploration platform)
 PSL formalization of the properties - generation of
the associated ISIS monitors
 Astrium Return of Experimentation
Workshop - November 2011
2
TTP platform: Block diagram
Work
AHB
Memory Memory
 AMBA AHB based
architecture with a processor
and a HW convolution block.
IRQ
Leon
(cpu)
Memory ctrl
 HW block is configured by
the processor.
Processing is interleaved
and results are written either
to a work memory or the
“AHB” memory (its access
can cause a split)
AHB bus
Conv
block
AHB
Arbiter
3
TTP platform
LEON
PV
LEON
T
PV
Router
Conv
PV
AHB
Bus
Conv
T
TLM PV
TLM interrupt
TTP
Initiator port
Mem
T
Mem
PV
AHB
Mem
T
AHB
Mem
PV
Target port
4
Correctness properties
 P1: The processor does not start a new convolution
processing before the completion of the previous
one.
 P2: No convolution processing must be started
before both destination and source addresses have
been programmed.
 P3: The memory does not respond with two “splits”
consecutively to the same master
PSL formalization
 Illustration on the third property:
P3: The memory does not respond with two "splits"
consecutively to the same master
 Auxiliary variables (defined in the "modeling layer",
using functions of the platform)
 "Response with a split" ?
 Boolean variable to store the status of the "split" field of the
response
 "To the same master" ?
 Auxiliary variables to store the values of the previous and
current masters
Workshop - November 2011
6
PSL formalization
 Where to observe?
Observation?
Workshop - November 2011
7
Complete assertion for ISIS
 On the memory side
unsigned int prev_master, master = 999;
bool status_split;
// true if a split has been issued
prt_tlm_ttp::ttp_response<ttp_ahb::ahb_status> resp;
prt_tlm_ttp::ttp_status<ttp_ahb::ahb_status> s;
if (ahb_mem.transport_END()) {
prev_master = master;
master = ahb_mem.transport.p1.get_master_id();
resp = ahb_mem.transport.p0;
s = resp.get_ttp_status();
status_split = (s.access_extension())->is_split();
}
else status_split = false;
assert always((ahb_mem.transport_END() && status_split)
=> next (next_event (ahb_mem.transport_END()
&& (master == prev_master))
(!status_split)));
Workshop - November 2011
8
Complete assertion for ISIS
 On the bus side
unsigned int prev_master, master = 999;
bool to_ahb;
// true if the target is the AHB memory
bool split;
// true if a split has been issued
prt_tlm_ttp::ttp_response<ttp_ahb::ahb_status> resp;
prt_tlm_ttp::ttp_status<ttp_ahb::ahb_status> s;
if (bus_initiator_port.do_transport_END()) {
to_ahb = (bus_initiator_port.do_transport.p3 == 0);
if (to_ahb) {
prev_master = master;
master = bus_initiator_port.do_transport.p1.get_master_id();
resp = bus_initiator_port.do_transport.p2;
s = resp.get_ttp_status();
split = (s.access_extension())->is_split(); }
} else { to_ahb = false; split = false; }
assert always((bus_initiator_port.do_transport_END() && to_ahb && split)
=> next (next_event (bus_initiator_port.do_transport_END()
&& to_ahb && (master == prev_master))
(!split)));
Workshop - November 2011
9
Dual-Core Architecture
 Image spectral-compression platform
Input
 Performs “subsampling” on incoming
data packets
10N
Subsampling
5N
2D-FFT
 Subsampled packets are then
transferred to an auxiliary processing
unit which performs a 2D-FFT (using a
co-processor) and data encoding
5N
Encoding
N
Output
Processing platform
Leon_a
DMA_a
Mem_a
IO
DMA_b
Leon_b
Mem_b
FFT
Processing platform (cont’d)
 IO module generates an interrupt causing DMA_a to
transfer the input packet of size 10N to Mem_a
 At the end of the transfer, Leon_a subsamples the
data and writes the result to Mem_a (10N->5N)
 Leon_a configures DMA_b to transfer the result to
Mem_b (5N->5N)
 At the end of the transfer, Leon_b configures the
FFT module to perform a 2D-FFT (5N->5N)
 Leon_b encodes the result (5N->N) and programs
DMA_b to send the result to the IO module (N->N)
Correctness properties
 P1: during every transfer, DMA_a must not be
reconfigured before the end of the transfer
 P2: same property for DMA_b (but DMA_b can be
configured both by Leon_a and Leon_b processors)
 P3: each incoming data packet must have a
corresponding output packet (i.e., no packet is lost
inside the processing platform)
 P4: same as property 1 for the FFT module
 P5: a data packet must be read before the IO
module generates a new interrupt (i.e., data are not
lost in the IO port)
Workshop - November 2011
13
PSL formalization
 Illustration on the third property:
P3: each incoming data packet must have a
corresponding output packet
 More precise statement:
each block transferred by DMA_a from the IO
module into Mem_a (input) will eventually be
transferred by DMA_b from Mem_b to the IO module
(output)
Requires the use of the ISIS "new" construct
Workshop - November 2011
14
PSL "Modeling layer"
 Used to store the values that are read by DMA_a
and written by DMA_b
if (dma_a.read_block_END() &&
dma_a.read_block.p1 == io_module_address) {
read_data_ptr = dma_a.read_block.p2;
read_value = read_data_ptr[0] + (read_data_ptr[1] << 8)
+ (read_data_ptr[2] << 16) + (read_data_ptr[3] << 24);
}
if (dma_b.write_block_CALL() &&
dma_b.write_block.p1 == io_module_address) {
write_data_ptr = dma_b.write_block.p2;
write_value = write_data_ptr[0] + (write_data_ptr[1] << 8)
+ (write_data_ptr[2] << 16) + (write_data_ptr[3] << 24);
}
Workshop - November 2011
15
Complete assertion for ISIS
unsigned char *write_data_ptr, *read_data_ptr;
unsigned int write_value, read_value;
if (dma_a.read_block_END() &&
dma_a.read_block.p1 == io_module_address) {
read_data_ptr = dma_a.read_block.p2;
read_value = read_data_ptr[0] + (read_data_ptr[1] << 8)
+ (read_data_ptr[2] << 16) + (read_data_ptr[3] << 24); }
if (dma_b.write_block_CALL() &&
dma_b.write_block.p1 == io_module_address) {
write_data_ptr = dma_b.write_block.p2;
write_value = write_data_ptr[0] + (write_data_ptr[1] << 8)
+ (write_data_ptr[2] << 16) + (write_data_ptr[3] << 24); }
assert
always((dma_a.read_block_END() && dma_a.read_block.p1 == io_module_address)
=> NEW(true ? x:unsigned int = read_value)
(eventually!(dma_b.write_block_CALL()
&& dma_b.write_block.p1 == io_module_address
&& x == write_value)));
Workshop - November 2011
16
Astrium’s REX
 Good expressivity of PSL
 High added-value of modelling layer to handle the context
 Moderate time overhead induced by monitoring (5-8%)
 The property checkers will provide a valuable help for non-
regression testing
 Careful (natural language) expression of the requirements
 Specify at TLM interfaces
 Disambiguate the properties, in particular the meaning of
communication actions (verbs  transaction sequence), and
specify your preferred observation points (method name and
parameters identification
 Use of a macro-language to relax the coupling between modelling
rules and the properties
17
Future works
 Define and implement the macro-language
 Linked with the development of the abstraction layer
above TLM providing some observation (hook)
facilities
 Expression of functional dependencies between
properties
 Properties refinement from System/TLM to RTL
 Usage extension:
 Embed the monitors into flight HW
 Synthesize a supervisor
 Mitigate radiation effect at architecture level
Thank you
?
Any questions ?
Workshop - November 2011
ISIS monitors
P1 to P5
XML configuration
files
SystemC
instrumented platform
Monitors +
observation
mechanism
PSL
assertions
SystemC platform
ISIS
Simulation
Workshop - November 2011
20