This 'implicit declaration' approach has the problem that a design tool other than the actual simulator cannot tell if a design is complete. Modules which are required by a design but only supplied by a simulator need to be declared 'external' (as routines in C program modules are).
I would also like to propose that the file including the standard (SPICE?) definitions is placed with the other simulation system include files accessible with:
`include <models.h>Failure to locate a module definition would not be considered an error (but may cause a warning to be issued).
The information about the class of the module and the supporting
simulators should be handled by a standard attribute mechanism.