Virtually every system designed today is an amalgam of hardware and software. Unfortunately, software and circuits that communicate across the hardware/software boundary are tedious and error-prone to create. This suggests a more automatic way to synthesize them. I present the SHIM language, which combines imperative C-like semantics for software and RTL-like semantics for hardware to allow a unified description of hardware/software systems. Hardware processes and software functions communicate through shared variables, hardware for which is automatically synthesized by the SHIM compiler, which generates C and synthesizable VHDL. I demonstrate the effectiveness of the language by re-implementing an I2C bus controller. The SHIM source is half the size of an equivalent manual implementation, slightly faster, and has a smaller memory footprint. Partial and complete hardware implementations in SHIM are also presented, showing that SHIM is succinct and effective.
@InProceedings{edwards:DagSemProc.04491.5, author = {Edwards, Stephen A.}, title = {{SHIM: A Language for Hardware/Software Integration}}, booktitle = {Synchronous Programming - SYNCHRON'04}, pages = {1--6}, series = {Dagstuhl Seminar Proceedings (DagSemProc)}, ISSN = {1862-4405}, year = {2005}, volume = {4491}, editor = {Stephen A. Edwards and Nicolas Halbwachs and Reinhard v. Hanxleden and Thomas Stauner}, publisher = {Schloss Dagstuhl -- Leibniz-Zentrum f{\"u}r Informatik}, address = {Dagstuhl, Germany}, URL = {https://drops.dagstuhl.de/entities/document/10.4230/DagSemProc.04491.5}, URN = {urn:nbn:de:0030-drops-1580}, doi = {10.4230/DagSemProc.04491.5}, annote = {Keywords: Hardware/software codesign , synchronous , asynchronous , language design , integration} }
Feedback for Dagstuhl Publishing