Saw your repo from the ANEForge issue. I did a byte-level RE of the M1/H13 ANE program format (https://ane-guide.readthedocs.io, arXiv:2606.22283), and a good chunk of it lines up with your REGISTER_PROGRMMING.md, so here's the cross-reference in case it helps finish that off.
Your offsets are into the BTSP buffer, mine are into the ZinAneTdHw image. The common/dimension block lines up with a constant +0x34, and two of your values are byte-identical to mine:
| your reg (BTSP) |
value |
my field (image) |
match |
| InDim @0x128 |
0x0001004d |
Win@0xf4 / Hin@0xf6 (15-bit) |
+0x34 |
| Cin @0x134 |
0x01 |
Cin@0x100 (17-bit) |
+0x34 |
| Cout @0x138 |
0x01 |
Cout@0x104 (17-bit) |
+0x34 |
| TaskInfo @0x160 |
0x00100000 |
CommonTaskType@0x12c |
+0x34 |
| ConvCfg |
0x5000a021 |
op-config word |
exact |
| pad2 |
0x2041 |
kernel-common record (0x5021 -> 0x2041) |
exact |
A few things that might fill gaps:
- Cin/Cout are 17-bit (max 131071), spatial dims 15-bit. Those are the field maxima.
- Your ConvCfg 0x5000a021 is one of three op-config words I see; the others are conv 0x5042a063 and matmul 0x5000b021. One to sort out: I had 0x5000a021 labeled reduce-mean-class but you use it for relu/conv, so one of our labels is off.
- pad2 0x2041 is the kernel-common record (0x5021 -> 0x2041); matches the firmware program-manager log byte for byte on my end.
- I've got ~190 named fields across the 7 groups (kernel/common, dimensions, tile DMA, elementwise/planar, L2/texture, kernel-fmt/op-mode, L2-result), so the DMA/L2/PE blocks you're doing by hand are probably covered.
Happy to send a PR adding a cross-ref section to REGISTER_PROGRMMING.md, or just compare notes on the DMA/L2 offsets. Covers M1 through M5, so might help the M5/H17 work too.
Saw your repo from the ANEForge issue. I did a byte-level RE of the M1/H13 ANE program format (https://ane-guide.readthedocs.io, arXiv:2606.22283), and a good chunk of it lines up with your REGISTER_PROGRMMING.md, so here's the cross-reference in case it helps finish that off.
Your offsets are into the BTSP buffer, mine are into the ZinAneTdHw image. The common/dimension block lines up with a constant +0x34, and two of your values are byte-identical to mine:
A few things that might fill gaps:
Happy to send a PR adding a cross-ref section to REGISTER_PROGRMMING.md, or just compare notes on the DMA/L2 offsets. Covers M1 through M5, so might help the M5/H17 work too.