Analyzing Sub-threshold Bitcell Topologies and the Effects of Assist Methods on SRAM Vmin
Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN...
Transcript of Présentation PowerPoint · myFunc(index) = IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN) THEN...
void myFunc(int index) {
if (val1 >= VMIN && val2 >= VMIN && val3 >= VMIN) {
Tab[index] = true;
counter ++;
} else {
Tab[index] = false;
}
}
bool Tab[10];
int val1, val2, val3;
int counter = 0;
myFunc(index) =
IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN)
THEN
Tab(index) := TRUE;
counter := counter + 1
ELSE
Tab(index) = FALSE
END
CONCRETE_VARIABLES
Tab, val1, val2, val3,
counter
INVARIANT
Tab: 0..9 --> BOOL &
val1 : INT &
val2 : INT &
val3 : INT &
counter : INT
INITIALISATION
Counter := 0 ; etc.
void myFunc(int index) {
if (val1 >= VMIN && val2 >= VMIN && val3 >= VMIN) {
Tab[index] = true;
counter ++;
} else {
Tab[index] = false;
}
}
bool Tab[10];
int val1, val2, val3;
int counter = 0;
•
•
myFunc(index) =
IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN)
THEN
Tab(index) := TRUE;
counter := counter + 1
ELSE
Tab(index) = FALSE
END
CONCRETE_VARIABLES
Tab, val1, val2, val3,
counter
INVARIANT
Tab: 0..9 --> BOOL &
val1 : INT &
val2 : INT &
val3 : INT &
counter : INT
INITIALISATION
Counter := 0 ; etc.
myFunc(index) =
IF (val1 >= VMIN & val2 >= VMIN & val3 >= VMIN)
THEN
Tab(index) := TRUE;
counter := counter + 1
ELSE
Tab(index) = FALSE
END
CONCRETE_VARIABLES
Tab, val1, val2, val3,
counter
INVARIANT
Tab: 0..9 --> BOOL &
val1 : INT &
val2 : INT &
val3 : INT &
counter : INT
INITIALISATION
Counter := 0 ; etc.
void myFunc(int index) {
if (val1 >= VMIN && val2 >= VMIN && val3 >= VMIN) {
Tab[index] = true;
counter ++;
} else {
Tab[index] = false;
}
}
bool Tab[10];
int val1, val2, val3;
int counter = 0;
≡
•
≡
≡
Code generator 1 Instance 1
B model
Code generator 2 Instance 2
B Specification
B Implementation
C generated code
« Only inactive sequences can be added to the activesequences execution queue. »
Natural languagerequirement
Binary code
Behaviour+
properties
Behaviour+
properties
B Specification
B Implementation
C generated code
« Only inactive sequences can be added to the activesequences execution queue. »
Natural languagerequirement
Binary code
Philosophy:Avoid to introduce errors during the development (proof)
instead of trying to detect them close to the end of the development (tests)
Proof (refinement)
Proof (coherence)
Proof (coherence)
•
–
–
–
–
–
•
•
•
•
•
•
•
•
•
•
•
•
•
•
–
–
–
–
–
–
:
&
v0
v1v2
v0
v1
v2
decision
V0
OK/KOV1
V2
:
/
N N
•
•
OPERATIONS bodies are identical:What is proved is ….. the copy-paste
•
–
–
–
–
•
–
•
–
•
–
–
–
–
–
•
•
•
•
–
–
–
–
–
•
•
•
•
–
–
–
–
–
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
•
D
S S S
D D
D
D
S
•
•
•
•
•
•
•
•
•
•
•
Genesis
•–
–
–
20
0 c
m
Sao Paulo L2 & L3 (2009)
Siemens S7 PLC
50
cm
Coppilot.M PLC SIL4
Sao Paulo L15 (2016)Stockholm Citybanan (2017)
LCHIP
13
cm
2017
Genesis
Platform screen doors controler installedin Stockholm (Citybanan)
Sao Paulo L15 (2016)
Stockholm Citybanan(2017)
Gateway SATURN (2016)
Genesis
≡
≡
LCHIP in a Nutshell
DESIGN EXECUTION
•
•
•
•
•
•
•
≡
≡
LCHIP in a Nutshell
EXECUTION
Design
≡
≡
≡
LCHIP in a Nutshell
Technical principles
Binarycode
ASM MIPS, HEX
Source code
C
Binarycode
HEX
ConcreteFormal model
proof
Natural language
specification
AbstractFormal model
proof
End UserRefining
tool
Code generator
Compiler
Compiler
Binarycode
HEX
Application
HEX
Linker
Application
Safety Belt
IDE dev
Code generator
IDE dev
AbstractFormal model
proof
ConcreteFormal model
proof
Source code
C
Source code
C
Binarycode
HEX
Compiler
LIBRARY
Memory mappingCross verificationCRC
Roadmap
Roadmap
Proof partly automatic
Roadmap
Roadmap
•
•
•
Roadmap
Roadmap
Roadmap
•
•
Proof more efficient / automaticIntegration of diverse provers
Starter Kit SK0
Starter Kit SK0
A complete transaction
•
•
•
•
•
•
•
•
•
A complete transaction
DEMO
Programming
The programming model
•
•
•
•
•
The programming model
•
•
•
•
•
•
•
init();
while (1) {instance1();instance2();
}
The programming model
•
•
•
•
•
A LCHIP Project
•
•
Function model
•
•
Introduction to B: variables declaration
Modelling language: restrictions
Introduction to B: constants declaration
Introduction to B: types
Introduction to B: unsigned int operators
Introduction to B: unsigned int operators
Introduction to B: unsigned int operators
λ
Introduction to B: inputs/outputs
Introduction to B: inputs/outputs
Introduction to B: operations
Introduction to B: operations
Introduction to B: user_logic
•
Introduction to B: user_logic
Example #1: combinatorial hello world
Example #1: combinatorial
Example #1: combinatorial
Example #2: clock
Example #2: clock
Example #2: clock