Generics for Hardware: Adding Haskell-inspired Generics to Bluespec
Bluespec is a high-level hardware synthesis language whose design is heavily influenced by Haskell. Like Haskell, new overloaded operations in Bluespec are defined using type classes. Important domain-specific operations, like converting data to and from bit-level representations are expressed using type classes. Implementing these type classes for user-defined types can require writing many boilerplate instances. To remedy this, we have added a mechanism for generic programming that is heavily inspired by GHC.Generics. In this talk we will present the design of Bluespec generics, as influenced by several practical use cases and discuss implementation challenges encountered due to quirks of the Bluespec language. We will also examine a nontrivial use case of Bluespec generics for data exchange and credit-based message flow control between hardware and software. These libraries use generics to implement message data packing and unpacking on the hardware side, as well as for generating a C library for representing and packing/unpacking the same message data types on a host computer. Several applications have made use of these generic libraries, including tunneling an AXI4-Lite interface over TCP/IP to communicate with a cloud-based FPGA, and a Bluespec chess engine on an FPGA sending moves and board configurations over a serial connection.
Mon 23 AugDisplayed time zone: Seoul change
03:30 - 05:00 | |||
03:30 22mTalk | Securing Web-Applications with A Refinement Typed ORM HIW Nico Lehmann University of California, San Diego, Rose Kunkel University of California, San Diego, Niki Vazou IMDEA Software Institute, Nadia Polikarpova University of California at San Diego, Deian Stefan University of California at San Diego, USA, Ranjit Jhala University of California at San Diego | ||
03:52 22mTalk | Generics for Hardware: Adding Haskell-inspired Generics to Bluespec HIW | ||
04:14 3mTalk | Closing HIW Ningning Xie University of Toronto |