Limbo
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
Limbo.Parsers.EbeamParser

Table of Contents

Introduction

A file format to describe electron-ebeam lithography configurations used in {[5]}. Here is a sample file.

## @file simple.ebeam
# @brief ebeam configurations
UNITS
DATABASE MICRONS 2000 ;
END UNITS
EBEAMBOUNDARY
OFFSET 0 ;
WIDTH 0.1 ;
STEP 5 ;
LAYERID 15 16 ;
END EBEAMBOUNDARY
MACRO XOR2_X1
CONFLICTSITE C200
LAYERID 200 ;
SITE 0 1 2 3 4 5 6 7 8 ;
END C200
CONFLICTSITE C16
LAYERID 16 ;
SITE 0 1 7 8 ;
END C16
CONFLICTSITE C15
LAYERID 15 ;
SITE 1 2 ;
END C15
CONFLICTSITE C6
LAYERID 6 ;
SITE 0 1 2 3 4 5 6 7 8 9 ;
END C6
CONFLICTSITE C8
LAYERID 8 ;
SITE 0 2 4 6 8 ;
END C8
CONFLICTSITE C7
LAYERID 7 ;
SITE 1 3 5 7 ;
END C7
CONFLICTSITE C5
LAYERID 5 ;
SITE 0 1 2 3 4 5 6 7 8 9 ;
END C5
CONFLICTSITE C0
LAYERID 0 ;
SITE 0 1 2 3 4 5 6 7 8 9 10 ;
END C0
END XOR2_X1
END LIBRARY

Examples

Flex/Bison Parser

See documented version: test/parsers/ebeam/test_bison.cpp

#include <iostream>
#include <fstream>
using std::cout;
using std::cin;
using std::endl;
using std::string;
{
public:
{
cout << "constructing EbeamDataBase" << endl;
}
virtual void set_ebeam_unit(int token)
{
cout << __func__ << " => " << token << endl;
}
{
cout << __func__ << endl;
}
virtual void add_ebeam_macro(EbeamParser::Macro const&)
{
cout << __func__ << endl;
}
};
void test1(string const& filename)
{
cout << "////////////// test1 ////////////////" << endl;
EbeamParser::read(db, filename);
}
void test2(string const& filename)
{
cout << "////////////// test2 ////////////////" << endl;
EbeamParser::Driver driver (db);
//driver.trace_scanning = true;
//driver.trace_parsing = true;
driver.parse_file(filename);
}
int main(int argc, char** argv)
{
if (argc > 1)
{
test1(argv[1]);
test2(argv[1]);
}
else
cout << "at least 1 argument is required" << endl;
return 0;
}

Compiling and running commands (assuming LIMBO_DIR is exported as the environment variable to the path where limbo library is installed)

1 g++ -o test_bison test_bison.cpp -I $LIMBO_DIR/include -L $LIMBO_DIR/lib -lebeamparser
2 ./test_bison benchmarks/NanGate_15nm_UTDA.ebeam

All Examples

References