KAIROS: Incremental Verification in High-Level Synthesis through Latency-Insensitive Design
Luca Piccolboni, Giuseppe Di Guglielmo, and Luca P. Carloni
Columbia University, NY, USA
ACM FMCAD, San Jose, USA
KAIROS: Incremental Verification in High-Level Synthesis through - - PowerPoint PPT Presentation
ACM FMCAD, San Jose, USA KAIROS: Incremental Verification in High-Level Synthesis through Latency-Insensitive Design Luca Piccolboni, Giuseppe Di Guglielmo, and Luca P. Carloni Columbia University, NY, USA High-Level Synthesis (HLS)
ACM FMCAD, San Jose, USA
2 / 15 ACM FMCAD 2019, San Jose, USA
void void process(void void) { int int k = 0; for for (; k < 128; ++k) { // No unrolling
c[k] = a[k] + b[k];
2 / 15 ACM FMCAD 2019, San Jose, USA
void void process(void void) { int int k = 0; for for (; k < 128; k += 2) { // Manual unrolling
c[k+0] = a[k+0] + b[k+0]; c[k+1] = a[k+1] + b[k+1];
2 / 15 ACM FMCAD 2019, San Jose, USA
void void process(void void) { int int k = 0; for for (; k < 128; ++k) { HLS_LOOP_UNROLL(4);
c[k] = a[k] + b[k];
2 / 15 ACM FMCAD 2019, San Jose, USA
void void process(void void) { int int k = 0; for for (; k < 128; ++k) { HLS_LOOP_UNROLL(10);
c[k] = a[k] + b[k];
2 / 15 ACM FMCAD 2019, San Jose, USA
void void process(void void) { int int k = 0; for for (; k < 128; ++k) { HLS_LOOP_UNROLL(10);
c[k] = a[k] + b[k];
3 / 15 ACM FMCAD 2019, San Jose, USA
4 / 15
[L. P. Carloni, CAV’99]
ACM FMCAD 2019, San Jose, USA
4 / 15
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
N bits
[L. P. Carloni, CAV’99]
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
[L. P. Carloni, CAV’99]
4 / 15
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
[L. P. Carloni, CAV’99]
1
4 / 15
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
[L. P. Carloni, CAV’99]
4 / 15
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
[L. P. Carloni, CAV’99]
1
4 / 15
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
[L. P. Carloni, CAV’99]
1
4 / 15
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
[L. P. Carloni, CAV’99]
1 1
4 / 15
ACM FMCAD 2019, San Jose, USA
FIFO Component #2
[L. P. Carloni, CAV’99]
LI Interface
4 / 15
ACM FMCAD 2019, San Jose, USA
data valid ready LI Interface
SC_MODULE M SC_MODULE N
5 / 15
SC_MODULE M { }
5 / 15 ACM FMCAD 2019, San Jose, USA
void process1(void) { … handshake(); } void process2(void) { … handshake(); }
data valid ready LI Interface
SC_MODULE N SC_MODULE M
LI Interface
void process2(void) { }
5 / 15 ACM FMCAD 2019, San Jose, USA
{ HLS_REGION(“r1”); … } { HLS_REGION(“r2”); … }
data valid ready LI Interface
SC_MODULE N SC_MODULE M SC_MODULE M { } void process1(void) { … handshake(); } void process2(void) { … handshake(); }
LI Interface LI Interface
6 / 15 ACM FMCAD 2019, San Jose, USA
MODULE
data_1 valid_1 ready_1
MODULE
data_2 valid_2 ready_2
1 1 1 1 5 5 Increasing time
6 / 15 ACM FMCAD 2019, San Jose, USA
data_1 valid_1 ready_1 data_2 valid_2 ready_2
1 1 1 1 5 5 8 8 1 1 1 1 1 5 5 1
MODULE
MODULE
Increasing time
6 / 15 ACM FMCAD 2019, San Jose, USA
data_1 valid_1 ready_1 data_2 valid_2 ready_2
1 1 1 1 5 5 8 91 8 1 1 1 1 1 1 1 5 5 8 1 1 91 1 1 1 1 1 8 91 91 91
MODULE
MODULE
Increasing time
6 / 15 ACM FMCAD 2019, San Jose, USA
data_1 valid_1 ready_1 data_2 valid_2 ready_2
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1
MODULE
MODULE
5 5 8 91 8 91 5 5 8 8 91 91 91 Increasing time
7 / 15 ACM FMCAD 2019, San Jose, USA
SC_MODULE M1
SystemC
module IMP_1; … end module Verilog
High-Level Synthesis
7 / 15 ACM FMCAD 2019, San Jose, USA
SC_MODULE M1
SystemC
module IMP_1; … end module Verilog
High-Level Synthesis
LI Interface LI Interface
7 / 15 ACM FMCAD 2019, San Jose, USA
SC_MODULE M1
SystemC
module IMP_1; … end module Verilog
High-Level Synthesis
SC_MODULE M1*
SystemC
module IMP_2; … end module Verilog
High-Level Synthesis
Manipulate the code
1 LI Interface LI Interface LI Interface LI Interface
7 / 15 ACM FMCAD 2019, San Jose, USA
SC_MODULE M1
SystemC
module IMP_1; … end module Verilog
High-Level Synthesis
SC_MODULE M1*
SystemC
module IMP_2; … end module Verilog
High-Level Synthesis
Modify the knobs
2
Knobs Knobs*
LI Interface LI Interface LI Interface LI Interface
7 / 15 ACM FMCAD 2019, San Jose, USA
SC_MODULE M1
SystemC
module IMP_1; … end module Verilog
High-Level Synthesis
SC_MODULE M1*
SystemC
module IMP_2; … end module Verilog
High-Level Synthesis
Knobs*
Modify the knobs
2 LI Interface LI Interface
Knobs
LI Interface LI Interface
8 / 15 ACM FMCAD 2019, San Jose, USA
SC_MODULE M void process1(void) { } { HLS_REGION(“r1”); … } SC_MODULE M void process1(void) { } { HLS_REGION(“r1*”); … }
SystemC SystemC
module M module process1 … end module
Verilog
module M module process1 … end module
Verilog
module r1; … end module module r1*; … end module
8 / 15 ACM FMCAD 2019, San Jose, USA
SC_MODULE M void process1(void) { } { HLS_REGION(“r1”); … } SC_MODULE M void process1(void) { } { HLS_REGION(“r1*”); … }
SystemC SystemC
module M module process1 … end module
Verilog
module M module process1 … end module
Verilog
module r1; … end module module r1*; … end module
8 / 15 ACM FMCAD 2019, San Jose, USA
module M module process1 … end module
Verilog
module M module process1 … end module
Verilog
module r2; … end module module r2; … end module
[L. P. Carloni, CAV’99]
module r1; … end module module r1*; … end module
LI Interface
8 / 15 ACM FMCAD 2019, San Jose, USA
module M module process1 … end module
Verilog
module M module process1 … end module
Verilog
module r2; … end module module r2; … end module
[L. P. Carloni, CAV’99]
module r1; … end module module r1*; … end module
LI Interface
equiv 9 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
REGION
REGION
equiv 9 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
REGION
REGION
1 5 1
equiv 9 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
REGION
REGION
1 5 1
equiv 9 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
REGION
REGION
1 5 2 1 5 1
9 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
REGION
REGION
1 5 1 5 1 5 2 1
equiv
9 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
REGION
REGION
1 5 1 5 1 5 2 1
equiv
9 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1 equiv
always @(clk) equiv = 1
REGION
REGION
10 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
Region
Region
10 / 15 ACM FMCAD 2019, San Jose, USA
in_data_1 in_valid_1
Region
Region
11 / 15 ACM FMCAD 2019, San Jose, USA
12 / 15 ACM FMCAD 2019, San Jose, USA
R_0 R_1 G_0 G_1 B_0 B_1 G_0 G_1
input memories
ping-pong
load proc. store proc.
(memories 0)
(memories 1)
40000 60000 80000 100000 120000 140000 160000 180000 150 200 250 300 350 400 450 500 550 600
REF UROL2 UROL4
Area (um2) Latency (ns)
UROL8 UROL16 UROL32
12 / 15 ACM FMCAD 2019, San Jose, USA
40000 60000 80000 100000 120000 140000 160000 180000 150 200 250 300 350 400 450 500 550 600
REF UROL2 UROL4
Area (um2) Latency (ns)
UROL8 UROL16 UROL32
R_0 R_1 G_0 G_1 B_0 B_1 G_0 G_1
input memories
ping-pong
load proc. store proc.
(memories 0)
(memories 1)
12 / 15 ACM FMCAD 2019, San Jose, USA
40000 60000 80000 100000 120000 140000 160000 180000 150 200 250 300 350 400 450 500 550 600
REF UROL2 UROL4
Area (um2) Latency (ns)
UROL8 UROL16 UROL32
REF average time per property REF REF REF REF UROL2 UROL4 UROL8 UROL16 UROL32 22 min. 25 min. 28 min. 33 min. 33 min. UROL32 20 min. UROL16 64 properties
R_0 R_1 G_0 G_1 B_0 B_1 G_0 G_1
input memories
ping-pong
load proc. store proc.
(memories 0)
(memories 1)
12 / 15 ACM FMCAD 2019, San Jose, USA
40000 60000 80000 100000 120000 140000 160000 180000 150 200 250 300 350 400 450 500 550 600
REF UROL2 UROL4
Area (um2) Latency (ns)
UROL8 UROL16 UROL32 BUG#2 BUG#1
aggressive unrolling wrong
REF time for counterexample REF BUG#1 BUG#2 1 min. 1 min.
More results in the paper
64 properties
R_0 R_1 G_0 G_1 B_0 B_1 G_0 G_1
input memories
ping-pong
load proc. store proc.
(memories 0)
(memories 1)
13 / 15 ACM FMCAD 2019, San Jose, USA
[R. Margelli, Thesis 2017]
Data $$
IF ID fedec M WB memwb EX exec
26000 26500 27000 27500 28000 200 250 300 350 400 450 500 Area (um2) Latency (ns)
REF PDIV1 UDIV4
SC_MODULE SC_MODULE SC_M.
process
13 / 15 ACM FMCAD 2019, San Jose, USA
26000 26500 27000 27500 28000 200 250 300 350 400 450 500 Area (um2) Latency (ns)
REF PDIV1 UDIV4 PDIV2 ARDIV
loop unrolling relax latency loop pipelining [R. Margelli, Thesis 2017]
Data $$
IF ID fedec M WB memwb EX exec
SC_MODULE SC_MODULE SC_M.
13 / 15 ACM FMCAD 2019, San Jose, USA
26000 26500 27000 27500 28000 200 250 300 350 400 450 500 Area (um2) Latency (ns)
REF PDIV1 UDIV4 PDIV2 ARDIV
REF average time per property REF REF REF ARDIV PDIV1 PDIV2 UDIV4 33 min. 1 min. 1 min. 1 min. loop unrolling relax latency loop pipelining 11 properties [R. Margelli, Thesis 2017]
Data $$
IF ID fedec M WB memwb EX exec
SC_MODULE SC_MODULE SC_M.
13 / 15 ACM FMCAD 2019, San Jose, USA
26000 26500 27000 27500 28000 200 250 300 350 400 450 500 Area (um2) Latency (ns)
REF PDIV1 UDIV4 PDIV2 ARDIV
wrong loop condition REF time for counterexample REF BUG#1 BUG#2 1 min. 1 min.
BUG#1 BUG#2
wrong bit shifting
More results in the paper
11 properties [R. Margelli, Thesis 2017]
Data $$
IF ID fedec M WB memwb EX exec
SC_MODULE SC_MODULE SC_M.
14 / 15 ACM FMCAD 2019, San Jose, USA
ACM FMCAD, San Jose, USA