LT-SPICE subcircuit programming
Subcircuits in most Spice simulator are not "programmed". They are merely a description of a bunch of components and predefined models that are grouped and can be pasted in a circuit once or multiple times.

Verilog-A models can be imported in most commercial Spice simulators (Spectre, HSpice, SmartSpice). AFAIK there is only one free alternative:

ADMS allows converting Verilog-A models to C/C++-code, which can subsequently be compiled along with ngSpice. However, the ADMS project doesn't seem to have had any activity since 2016.

If only LTSpice is an option (for whatever reason), then your best bet is to recreate the model equations using Behavioral modeling. I expect this to be rather tedious.

One other alternative is the open-source project Spice# which is currently still being developed and maintained (of which I am the author). Rather than ngSpice it is:


Completely object-oriented.
A library instead of a standalong executable.


You can create custom models for it in separate C# projects, without the need to recompile the whole project (like ngSpice). There is also a parser available to help with the process of migrating from other simulators. Also, given the similarities between C# and C/C++ it may be feasible to use ADMS to first generate the C/C++ code, and work from there to make it compatible with Spice#. This is also how most original Spice models were implemented in the core library.