The {\bfseries Ascii Graphic Database System (A\+G\+DS)} format is an ascii (text) version of the wellknown and industry standard G\+DS II 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\+II} for more informations). ~\newline
The ascii format has several advantages versus binary format\+:
The conversion from Ascii G\+DS to binary G\+DS and vice versa can be done with {\bfseries Owl\+Vision G\+D\+S\+II Viewer} available at \href{http://owlvision.org}{\tt http\+://owlvision.\+org}~\newline
Currently the only supported shape in this driver is the rectangle.\hypertarget{agds_agdsDB}{}\section{Stand alone database structure}\label{agds_agdsDB}
\item\mbox{\hyperlink{class_a_g_d_s_1_1_library}{A\+G\+D\+S\+::\+Library}} contains all A\+G\+DS library informations such as the name, the units used (user and physical) and the list of all Structures.
\item\mbox{\hyperlink{class_a_g_d_s_1_1_structure}{A\+G\+D\+S\+::\+Structure}} describes a G\+DS Structure with a name and a list of Elements.
\item\mbox{\hyperlink{class_a_g_d_s_1_1_element}{A\+G\+D\+S\+::\+Element}} is an abstract class from which derived the \mbox{\hyperlink{class_a_g_d_s_1_1_rectangle}{A\+G\+D\+S\+::\+Rectangle}}.
\item\mbox{\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\+DS file, user has to create one \mbox{\hyperlink{class_a_g_d_s_1_1_library}{A\+G\+D\+S\+::\+Library}} and add \mbox{\hyperlink{class_a_g_d_s_1_1_structure}{A\+G\+D\+S\+::\+Structure}} objects to it with the \mbox{\hyperlink{class_a_g_d_s_1_1_library_a93d333a20154e0b688ff3ff213039171}{A\+G\+D\+S\+::\+Library\+::add\+Structure()}} method. Each \mbox{\hyperlink{class_a_g_d_s_1_1_structure}{A\+G\+D\+S\+::\+Structure}} contains at least one \mbox{\hyperlink{class_a_g_d_s_1_1_element}{A\+G\+D\+S\+::\+Element}} added with \mbox{\hyperlink{class_a_g_d_s_1_1_structure_a2dd203e6770f7d15d6f706867c919a60}{A\+G\+D\+S\+::\+Structure\+::add\+Element()}} method.~\newline
All objects can be independently created as far as they are correctly added to their parent. ~\newline
Once the library is completely specified, simply call the \mbox{\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\+SI S\+A\+PD 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\+DS 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\+OP 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\+TH variable points to the directory containing A\+G\+D\+S.\+so module.