The {\bfseries Ascii Graphic Database System (A\-G\-D\-S)} format is an ascii (text) version of the wellknown and industry standard G\-D\-S I\-I binary format. This format hierarchicaly represents geometric shapes, labels and other layout informations (see \href{http://en.wikipedia.org/wiki/GDSII}{\tt http\-://en.\-wikipedia.\-org/wiki/\-G\-D\-S\-I\-I} for more informations). \par
The ascii format has several advantages versus binary format\-:
The conversion from Ascii G\-D\-S to binary G\-D\-S and vice versa can be done with {\bfseries Owl\-Vision G\-D\-S\-I\-I Viewer} available at \href{http://owlvision.org}{\tt http\-://owlvision.\-org}\par
Currently the only supported shape in this driver is the rectangle.\hypertarget{agds_agdsDB}{}\section{Stand alone database structure}\label{agds_agdsDB}
\item\hyperlink{class_a_g_d_s_1_1_library}{A\-G\-D\-S\-::\-Library} contains all A\-G\-D\-S library informations such as the name, the units used (user and physical) and the list of all Structures.
\item\hyperlink{class_a_g_d_s_1_1_structure}{A\-G\-D\-S\-::\-Structure} describes a G\-D\-S Structure with a name and a list of Elements.
\item\hyperlink{class_a_g_d_s_1_1_element}{A\-G\-D\-S\-::\-Element} is an abstract class from which derived the \hyperlink{class_a_g_d_s_1_1_rectangle}{A\-G\-D\-S\-::\-Rectangle}.
\item\hyperlink{class_a_g_d_s_1_1_rectangle}{A\-G\-D\-S\-::\-Rectangle} describes a rectangle element of a structure.
To drive an A\-G\-D\-S file, user has to create one \hyperlink{class_a_g_d_s_1_1_library}{A\-G\-D\-S\-::\-Library} and add \hyperlink{class_a_g_d_s_1_1_structure}{A\-G\-D\-S\-::\-Structure} objects to it with the \hyperlink{class_a_g_d_s_1_1_library_a93d333a20154e0b688ff3ff213039171}{A\-G\-D\-S\-::\-Library\-::add\-Structure()} method. Each \hyperlink{class_a_g_d_s_1_1_structure}{A\-G\-D\-S\-::\-Structure} contains at least one \hyperlink{class_a_g_d_s_1_1_element}{A\-G\-D\-S\-::\-Element} added with \hyperlink{class_a_g_d_s_1_1_structure_a2dd203e6770f7d15d6f706867c919a60}{A\-G\-D\-S\-::\-Structure\-::add\-Element()} method.\par
All objects can be independently created as far as they are correctly added to their parent. \par
Once the library is completely specified, simply call the \hyperlink{class_a_g_d_s_1_1_library_a33b9d989b84857f46034085664ff3fa2}{A\-G\-D\-S\-::\-Library\-::write\-To\-File()} method to drive the database to file.\hypertarget{agds_agdsExamples}{}\section{Examples}\label{agds_agdsExamples}
As said is the global presentation, V\-L\-S\-I S\-A\-P\-D project provides C++ libraries and Python modules for each supported format. In this section we present two simple code examples to drive a A\-G\-D\-S file using C++ or Python. These two examples drive the same file {\ttfamily transistor.\-agds\-:}
In order to compile this code, a C\-Make\-Lists.\-txt file is provided. User must set the \$\-V\-L\-S\-I\-S\-A\-P\-D\-\_\-\-T\-O\-P variable before running these commands in the directory containing the C\-Make\-Lists.\-txt file\-:
In order to run the {\ttfamily drive\-Agds.\-py} script, user must ensure that \$\-P\-Y\-T\-H\-O\-N\-P\-A\-T\-H variable points to the directory containing A\-G\-D\-S.\-so module.