Using Dynamic Signal-Tracing to Debug Compiler-Optimized HLS Circuits on FPGAs

High-level synthesis (HLS) for FPGA designs has received considerable attention in recent years. To make this design methodology mainstream, improved debugging technologies are essential. Ideally, a user should be able to debug their design using the original source code, without detailed knowledge of the underlying hardware, while the circuit executes in-situ. Although recent work has made progress toward this goal, existing solutions are unable to provide visibility into circuits that have been heavily optimized by the compiler. HLS compilers typically perform many optimizations, including moving variable values out of memories and into registers distributed throughout the design. Debugging such circuits typically requires either understanding the hardware and probing the appropriate RTL level registers, or ignoring these variables while debugging the design, neither of which is desirable. In this work we present a new signal-tracing technique, specifically designed for circuits that have been optimized by an HLS tool. Information is extracted from the HLS process to determine which signals are relevant to record each cycle. We automatically embed circuitry which dynamically selects the relevant signals, cycle-by-cycle, and records them into on-chip memories. In addition, we explore techniques to balance tracing between cycles to further improve memory efficiency. For each 100Kb of memory allocated to trace buffers, our technique can, on average, record and replay 4322 lines of source code, versus 141 lines using traditional tracing methods.

[1]  Bart Vermeulen Functional Debug Techniques for Embedded Systems , 2008, IEEE Design & Test of Computers.

[2]  Qiang Xu,et al.  On Multiplexed Signal Tracing for Post-Silicon Validation , 2013, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[3]  DaoudEhab Anis,et al.  Real-time lossless compression for silicon debug , 2009 .

[4]  Jason Cong,et al.  A Study on the Impact of Compiler Optimizations on High-Level Synthesis , 2012, LCPC.

[5]  Ehab Anis Daoud,et al.  Real-Time Lossless Compression for Silicon Debug , 2009, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[6]  Steven J. E. Wilton,et al.  Effective FPGA debug for high-level synthesis generated circuits , 2014, 2014 24th International Conference on Field Programmable Logic and Applications (FPL).

[7]  Nicola Nicolici,et al.  Algorithms for State Restoration and Trace-Signal Selection for Data Acquisition in Silicon Debug , 2009, IEEE Transactions on Computer-Aided Design of Integrated Circuits and Systems.

[8]  Luka Daoud,et al.  A Survey of High Level Synthesis Languages, Tools, and Compilers for Reconfigurable High Performance Computing , 2013, ICSS.

[9]  Brad L. Hutchings,et al.  New approaches for in-system debug of behaviorally-synthesized FPGA circuits , 2014, 2014 24th International Conference on Field Programmable Logic and Applications (FPL).

[10]  Wayne Luk,et al.  Transparent insertion of latency-oblivious logic onto FPGAs , 2014, 2014 24th International Conference on Field Programmable Logic and Applications (FPL).

[11]  Karl S. Hemmert,et al.  Source level debugger for the Sea Cucumber synthesizing compiler , 2003, 11th Annual IEEE Symposium on Field-Programmable Custom Computing Machines, 2003. FCCM 2003..

[12]  Jason Helge Anderson,et al.  Source-level debugging for FPGA high-level synthesis , 2014, 2014 24th International Conference on Field Programmable Logic and Applications (FPL).

[13]  K. Wakabayashi CyberWorkBench: integrated design environment based on C-based behavior synthesis and verification , 2005, 2005 IEEE VLSI-TSA International Symposium on VLSI Design, Automation and Test, 2005. (VLSI-TSA-DAT)..

[14]  Steven J. E. Wilton,et al.  Scalable Signal Selection for Post-Silicon Debug , 2013, IEEE Transactions on Very Large Scale Integration (VLSI) Systems.

[15]  Hiroyuki Tomiyama,et al.  Proposal and Quantitative Analysis of the CHStone Benchmark Program Suite for Practical C-based High-level Synthesis , 2009, J. Inf. Process..

[16]  Vikram S. Adve,et al.  LLVM: a compilation framework for lifelong program analysis & transformation , 2004, International Symposium on Code Generation and Optimization, 2004. CGO 2004..

[17]  Dirk Stroobandt,et al.  An overview of today’s high-level synthesis tools , 2012, Design Automation for Embedded Systems.

[18]  Jason Helge Anderson,et al.  The Effect of Compiler Optimizations on High-Level Synthesis for FPGAs , 2013, 2013 IEEE 21st Annual International Symposium on Field-Programmable Custom Computing Machines.

[19]  Jason Helge Anderson,et al.  LegUp: An open-source high-level synthesis tool for FPGA-based processor/accelerator systems , 2013, TECS.

[20]  John Freeman,et al.  OpenCL for FPGAs: Prototyping a Compiler , 2013 .