High-level hardware generators have significantly increased the productivity of design engineers. They use software engineering constructs to reduce the repetition required to express complex designs and enable more c...
详细信息
ISBN:
(纸本)9781450391429
High-level hardware generators have significantly increased the productivity of design engineers. They use software engineering constructs to reduce the repetition required to express complex designs and enable more composability. However, these benefits are undermined by a lack of debugging infrastructure, requiring hardware designers to debug generated, usually incomprehensible, RTL code. This paper describes a framework that connects modern software source-level debugging frameworks to RTL created from hardware generators. Our working prototype offers an Integrated Development Environment (IDE) experience for generators such as RocketChip (Chisel), allowing designers to set breakpoints in complex source code, relate RTL simulation state back to source-level variables, and do forward and backward debugging, with almost no simulation overhead (less than 5%).
Improved quality of results from high level synthesis (HLS) tools have led to their increased adoption in hardware design. However, functional verification of HLS-produced designs remains a major challenge. Once a bug...
详细信息
ISBN:
(纸本)9781509023561
Improved quality of results from high level synthesis (HLS) tools have led to their increased adoption in hardware design. However, functional verification of HLS-produced designs remains a major challenge. Once a bug is exposed, designers must backtrace thousands of signals and simulation cycles to determine the underlying cause. The challenge is further exacerbated with HLS-produced non-human-readable RTL. In this paper, we present AutoSLIDE, an automated cross-layer verification framework that instruments critical operations, detects discrepancies between software and hardware execution, and traces the suspect datapath tree to identify bug source for the detected discrepancy. AutoSLIDE also maintains mappings between RTL datapath operations, LLVM-IR operations, and C/C++ source code to precisely pinpoint the root-cause of bugs to the exact line/operation in source code, substantially reducing user effort to localize bugs. We demonstrate the effectiveness by detecting and localizing bugs from former versions of the CHStone benchmark suite. Furthermore, we demonstrate the efficiency of AutoSLIDE, with low overhead in HLS time (27%), software trace gathering (10%), and significantly reduced trace size and simulation time compared to exhaustive instrumentation.
Chisel (Constructing Hardware In a Scala Embedded Language) is a broadly adopted HDL that brings object-oriented and functional programming, type-safety, and parameterization to hardware design. However, while these l...
详细信息
ISBN:
(纸本)9798331517663;9798331517670
Chisel (Constructing Hardware In a Scala Embedded Language) is a broadly adopted HDL that brings object-oriented and functional programming, type-safety, and parameterization to hardware design. However, while these language features significantly improve the process of writing code, debugging Chisel designs with open source tools loses many of the advantages of the source language, as type information and data structure hierarchies are lost in the translation, simulator output, and waveform viewer. This work, Tywaves, presents a new type-centered debugging format that brings the same level of abstraction found in contemporary hardware languages to waveform viewers. Contributions to the Chisel library and CIRCT MLIR compiler as well as the Surfer waveform viewer result in a waveform viewer that better supports the Chisel HDL. Project url: https://***/rameloni/tywaves-chisel-demo
Compile-time meta-programming is an advanced language feature enabling to mix programs with definitions that are executed at compile-time and may generate source code to be put in their place. Such definitions are cal...
详细信息
ISBN:
(纸本)9783642305610
Compile-time meta-programming is an advanced language feature enabling to mix programs with definitions that are executed at compile-time and may generate source code to be put in their place. Such definitions are called meta-programs and their actual evaluation constitutes a compilation stage. As meta-programs are also programs, programmers should be supported in handling compile-time and runtime errors, something introducing challenges to the entire tool chain along two lines. Firstly, the source point of a compile error may well be the outcome of a series of compilation stages, thus never appearing within the original program. Effectively, the latter requires a compiler to track down the error chain across all involved stages so as to provide a meaningful, descriptive and precise error report. Secondly, every compilation stage is instantiated by the execution of the respective staged program. Thus, typical full-fledged source-level debugging for any particular stage should be facilitated during the compilation process. Existing implementations suffer in both terms, overall providing poor error messages, while lacking the required support to debug meta-programs of any staging depth. In this paper we firstly outline an implementation of a meta-programming system offering all mentioned facilities. Then, we detail the required amendments to the compilation process. Finally, we discuss the necessary interoperation points between the compiler and the tool-chain (IDE).
Sensor network debugging is notoriously difficult because many bugs manifest themselves only when they encounter the real world -- exactly when most powerful debugging tools can no longer be applied. There are currect...
详细信息
ISBN:
(纸本)9781595937636
Sensor network debugging is notoriously difficult because many bugs manifest themselves only when they encounter the real world -- exactly when most powerful debugging tools can no longer be applied. There are currectly two common approaches to sourceleveldebugging in wireless sensor networks (WSNs), (i) simulation-based debugging [3], and (ii) wire-based debugging via logic analyzers or in-circuit emulators [1]. The former do not capture the true dynamics of a real deployment while the latter do not scale with the number of nodes and geographic size of the network. Thus, existing source-level debugging approaches for WSNs cannot be used in many real deployment environments.
Creating and debugging programs for wireless embedded networks (WENs) is notoriously difficult. Macroprogramming is an emerging technology that aims to address this problem by providing high-level programming abstract...
详细信息
ISBN:
(纸本)9781605587486
Creating and debugging programs for wireless embedded networks (WENs) is notoriously difficult. Macroprogramming is an emerging technology that aims to address this problem by providing high-level programming abstractions. We present MDB, the first system to support the debugging of macroprograms. MDB allows the user to set breakpoints and step through a macroprogram using a source-level debugging interface similar to GDB, a process we call macrodebugging. A key challenge of MDB is to step through a macroprogram in sequential order even though it executes on the network in a distributed, asynchronous manner. Besides allowing the user to view distributed state, MDB also provides the ability to search for bugs over the entire history of distributed states. Finally, MDB allows the user to make hypothetical changes to a macroprogram and to see the effect on distributed state without the need to redeploy, execute, and test the new code. We show that macrodebugging is both easy and efficient: MDB consumes few system resources and requires few user commands to find the cause of bugs. We also provide a lightweight version of MDB called MDB Lite that can be used during the deployment phase to reduce resource consumption while still eliminating the possibility of heisenbugs: changes in the manifestation of bugs caused by enabling or disabling the debugger.
Macroprogramming abstractions provide abstract distributed data structures to simplify the programming of wireless embedded networks. However, none of the current macroprogramming systems provide debugging support for...
详细信息
ISBN:
(纸本)9781605587486
Macroprogramming abstractions provide abstract distributed data structures to simplify the programming of wireless embedded networks. However, none of the current macroprogramming systems provide debugging support for application development. We have developed MDB, a GDB-like post-mortem debugger for the MacroLab macroprogramming abstraction. In this demonstration, we show how MDB enables application development and debugging at a single level of abstraction. MDB eliminates the need for a programmer to reason about low-level event traces and message passing protocols, instead allowing debugging in terms of abstract data types. We expect MDB to fill a crucial link in the development cycle as a macroprogram progresses from the drawing board to real deployment.
Macroprogramming abstractions provide abstract distributed data structures to simplify the programming of wireless embedded networks. However, none of the current macroprogramming systems provide debugging support for...
详细信息
ISBN:
(纸本)9781605585192
Macroprogramming abstractions provide abstract distributed data structures to simplify the programming of wireless embedded networks. However, none of the current macroprogramming systems provide debugging support for application development. We have developed MDB, a GDB-like post-mortem debugger for the MacroLab macroprogramming abstraction. In this demonstration, we show how MDB enables application development and debugging at a single level of abstraction. MDB eliminates the need for a programmer to reason about low-level event traces and message passing protocols, instead allowing debugging in terms of abstract data types. We expect MDB to fill a crucial link in the development cycle as a macroprogram progresses from the drawing board to real deployment.
Wireless sensor network (WSN) applications are notoriously difficult to develop and debug. This paper describes Clairvoyant which is a comprehensive source-level debugger for wireless, embedded networks. With Clairvoy...
详细信息
ISBN:
(纸本)9781595937636
Wireless sensor network (WSN) applications are notoriously difficult to develop and debug. This paper describes Clairvoyant which is a comprehensive source-level debugger for wireless, embedded networks. With Clairvoyant, a developer can wirelessly connect to a sensor network and execute standard debugging commands including break, step, watch, and back-trace, as well as new commands that are specially designed for debugging WSNs. Clairvoyant attempts to minimize its effect on the program being debugged in terms of network load, memory footprint, execution speed, clock consistency, and flash lifetime.
暂无评论