Skip to content
/ lemta Public

Clean-room reverse-engineering of Atmel simulator libraries from http://packs.download.atmel.com

License

Notifications You must be signed in to change notification settings

kulp/lemta

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Goal

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.

Non-goal

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).

Status

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: CI Status

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.

Requirements

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.