Menu

#593 Support Padauk architecture

open
nobody
None
5
2019-04-18
2018-11-30
No

Instruction set being reverse engineered at https://free-pdk.github.io/.

Philipp

Discussion

  • Philipp Klaus Krause

    There are 4 main sub-variants (and a lot more when looking at minor instruction set differences):

    • 13 bit (called SYM_84B in some files by Padauk). Only used in very small OTP single-core devices.
    • 14 bit (called SYM_85A in some files by Padauk). Used in small OTP and Flash single-core devices.
    • 15 bit (called SYM_86B in some files by Padauk). Used in mid-size OTP and Flash single-core devices.
    • 16 bit (called SYM_83A in some files by Padauk). Used in large OTP and Flash single-core devices and all multi-core devices.

    There also is Puolop, which makes OTP single-core devices of the same architecture. Most (but not all) devices in their range are identical to some Padauk device.

    I intend to support the 14-nit instruction set first. Starting at the lower end seems like a reasonable choice regarding complexity, and the availability of Flash devices makes it more attractive than the 13-bit instruction set. 13-bit and 15-bit could then follow. 16-bit is more complex, as supporting multi-core devices in SDCC will be something new, and probably challenging. But I intend to have support for the 16-bit instruction set variants eventually.

    Currently, I am working on a pdk14 backend in the pdk branch. It already generates somewhat useful asm code, and so far only uses the common subset of all Padauk instruction sets.

    Philipp

     
  • Philipp Klaus Krause

    As of [r11099], we have the stable pdk14 backend, and the in-developement pdk15 backend.

    pdk14 has been tested on hardware, and passes the regression test using the simulator. For pdk15, we do not have a simulator yet, and we can't test on hardware yet either. For pdk13, there is a compiler backend, but no assembler, linker or simulator yet.

    On the compiler (but not assembler) side, they are nearly the same. So despite pdk15 not being tested, it probably works well already.

     
  • Philipp Klaus Krause

    Currently, we have stable pdk14 qand pdk15 backends.

    pdk13 is "in development", and will stay like that until we have much better optimizations reducing memory usage (which we need to fit the regression test framework onto pdk13 -the largest devices have 1 KW of program memory and 64 B of RAM ).
    pdk16 is still far away (though work on an assembler has started in the pdk branch).

    Philipp

     

Log in to post a comment.

MongoDB Logo MongoDB