Share this page
Share this page E-mail this page Print this page RSS feeds
Home > People > Satnam Singh
Satnam Singh

SENIOR RESEARCHER
.

I currently work on two research topics:

  • High Level Synthesis of Digital Circuits Porjects for FPGA Co-Processing
    • The Kiwi project with David Greaves which synthesizes circuits from high level circuit models written using regular multi-threaded code in languages like C#.
    • Synthesis of C programs that manipulate dynamic data structurs in the heap.
    • Synthesis of data-parallel programs in C++ and C# into FPGAs for co-processing.
    • High level techniques for designing low level circuits. I have re-implemented my Lava system in C# and F# and I have made HLINQ which is a circuit generator for LINQ queries.
    • Evaluation and experimentation with alternative hardware description techniques with a focus on Bluespec and Esterel.
  • Concurrent and Parallel Programming in Haskell
    • Specifically, I have been working on the ThreadScope profiler to help understand the behavior of parallel and concurrent Haskell programs.

I have served on several programme committees including FCCM, FPGA, FPL, FPT, DATE, FMCAD, DCC, HFL, DAMP, and Memocode. I chaired the system level modeling track for DATE for three years and I currently serve on the high level synthesis track committee. I am also a member of IFIP Working Group 2.8 on functional programming. I am a visiting lecturer at Chalmers. I have over 50 publications some of which are shown below.

I am co-chairing The Programming Challenge of Heterogeneous Architectures workshop at the School of Computer Science, Birmingham University, 2-3 July 2009.

Publications

Some Recent Talks

  • C-to-Gates Stnthesis of Dynamic Data Structures. Practical Synthesis for Concurrent Systems (PSY) 2009, Grenoble (CAV workshop). 28 June 2009.
  • Three Approaches to High Level Synthesis. IBM Zurich Research Lab. 17 June 2009.
  • GPU Programming with Microsoft Accelerator. Oxford University. 5 June 2009.
  • Pointer Synthesis++. UK Design Forum '09. 8 May 2009.
  • An Overview of Parallel and Concurrent Programming in Haskell. Unviersity of Leeds. 30 April 2009.
  • Kiwi: Synthesis of FPGA Cicuits from Multi-Threaded C# Programs. European Bioinfomatics Instiute and Sanger. 29 April 2009.
  • Kiwi: Synthesis of FPGA Cicuits from Multi-Threaded C# Programs. Cadence Research Labs. 7 April 2009.
  • Bluespec Experience Report. HFL 2009. 28 March 2009. Also at Xilinx on 3 April 2009.
  • Kiwi: Synthesis of FPGA Circuits from Multi-Threaded C# Programs. Presentation at Southampton University. 28 January 2009.
  • An Overview of Parallel and Concurrent Programming in Haskell. Presentation at Southampton University. 28 January 2009.
  • Kiwi: Automatic Synthesis of Parallel Programs into FPGA Circuits. Seminar at ETH Zurich. 3 November 2008. Also talks at Chalmers, BSC, and BCS.
  • Challenges of programming multi-core microprocessors. Keynote talk. IET Programmable Hardware Systems 2008.
  • Synthesizing FPGA Circuits from Parallel Programs. Keynote talk at ARC 2008.
  • An Overview of Parallel and Concurrent Programming in Haskell. At Stanford, Kent and Herriot-Watt.
  • Programming Models for Reconfigurable Systems. Keynote talk. IET FPGA Developers' Forum. 30 October 2007.
  • Programming Models for Reconfigurable Systrems. Invited talk at the UK Design Forum. 2008.
  • Programming Models for Reconfigurable Systems. Keynote talk at RAW 2007.
  • New Directions in Parallel Programming. Invited talk cat CSAW 2007.
  • Lava. Invited talks at Nottingham, Birmingham and Freiburg. 2007

Bio

Satnam Singh's research involves finding novel ways to program and use special Lego-like chips called FPGAs. In particular, he is interested in making the circuits on these chips change as they run to adapt to new situations. Satnam Singh completed his PhD at the University of Glasgow in 1991 where he devised a new way to program and analyze digital circuits described in a special functional programming language. He then went on to be an academic at the same university (first in the Electrical Engineering department and then in the Computing Science department) and lead several research projects that explored novel ways to exploit FPGA technology for applications like software radio, Adobe Photoshop and high resolution digital printing, and graphics. In 1998 he moved to San Jose California to join Xilinx's research lab where we developed more tools and technology for designing and formally verifying circuits for FPGAs as well as the actual FPGA chips. In particular, he developed a language called Lava in conjunction with Chalmers University which allows circuits to be laid out nicely on chips to give high performance and better utilization of silicon resources. In 2004 he joined Microsoft in Redmond Washington where we worked on a variety of techniques for producing concurrent and parallel programs and in particular explored join patterns and software transactional memory. In 2006 he moved to Microsoft's research laboratory in Cambridge where he works on reconfigurable computing and parallel functional programming.