Creative Commons Attribution 4.0 International license
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}
}