This project seeks to derive, by good-faith clean-room reverse-engineering techniques, sufficient interface definitions and library code to support the development of FOSS simulation tools that use packs from Atmel / Microchip.
While these pack files include compiled GNU/Linux-compatible shared libraries
which in some cases contain Verilog models converted to C++ using
Verilator, no attempt is made to
reverse-engineer the underlying hardware description. Instead, the intent is
to provide header and library files sufficient to dlopen()
the library and
usefully call its public interfaces (i.e. whatever interfaces the Atmel
simulator needs to use in order to provide its simulation functionality).
As of this writing, the project consists essentially of the partially-inferred
interface heaers in include/
and a few testbench programs in test/
. Run
make -C test check
from the top level to run self-tests. The test suite is
run as a "build" on GitHub Actions:
A primordial LuaJIT-based interface is present in lua/
.
LuaJIT (as opposed to Lua) is specifically required
because LuaJIT's FFI library is used heavily.
The interface header files in include/
were derived on a GNU/Linux-compatible
system and may require such a system to function, although in theory they
should be portable to Windows (since the manufacturer supplies Windows DLLs as
well).
The testbenches use CastXML and xmllint to extract information from the inferred interface headers.