Follow-up >
Example:
  extern module my_spf;
    parameter source   = "/proj/big_chip/big.spf"; // may be list
    parameter language = "HSpice";
    parameter filter   = "spc2vams"; // may include arguments
  endmodule
If the simulator can read the specified file type directly (and the file
exists) it may do so, otherwise a "pipe" is created and the filter called
(see Unix "popen") as:
      <filter> -module=<module name> -language=<language>\
               -simulator=<caller name> -version=<caller version>\
               <source> 
  e.g.:
      spc2vams -module=my_spf -language=HSpice\
               -simulator=vams -version=0.99.1\
               /proj/big_chip/big.spf
The output of the filter should be read in the same manner as a `include'd
file.
Since the filter program may need extra information, it's standard input stream should be the (post-processed) text from extern to endmodule so that it can read any parameters and attributes associated with the definition.
If the filter returns a non-zero status the simulator should abort.
Notes: