Sci2C is a tool capable to translate Scilab code into C code.
It is a standalone toolbox of Scilab and it has been primarily developed to become the interface between the Scilab scientific software package and the hArtes design flow.
The output C code is in a plain style and does not include any part of the Scilab interpreter thus making it small, efficient and easy to interface to the hArtes tool chain.
In other words, the generated C code is standalone and minimal in the sense that Scilab interpreter is no longer needed and only the minimal number of C files which are necessary to execute the application are generated. It follows that the generated code can be embedded in processors or used as entries for other software.
Sci2C is implemented in Scilab language, so it naturally becomes a Scilab toolbox available in the Scilab installation program and consequently it can be directly used in the Scilab Development Environment.
The implementation of Sci2C is mainly based on the introduction of data and function annotations into Scilab code which is seen as comment by the Scilab interpreter, but that are used by Sci2C to translate the Scilab code into an efficient and plain C code. Moreover the use of annotations allows the user to specify not only the size of data but also their precision, in that way it is possible to get a further optimization of the C code produced thanks to the possibility to use ad-hoc precision for each data to be processed.
Two major limitations can be identified in Sci2C: the first limitation of the tool is that the annotations must be manually added by the user, although it is the only manual intervention required by the tool; the second limitation is that the size of data is fixed and consequently no dynamic array extension is allowed.
Other minor limitations have been introduced in order to simplify the development of the tool without impacting on the usefulness of it for embedded systems.