8 #ifndef EBEAMPARSER_DATABASE_H
9 #define EBEAMPARSER_DATABASE_H
29 using std::ostringstream;
31 typedef unsigned int uint32_t;
42 typedef vector<int> base_type;
43 using base_type::size_type;
44 using base_type::value_type;
45 using base_type::allocator_type;
56 IntegerArray(size_type n,
const value_type& val,
const allocator_type& alloc = allocator_type())
57 : base_type(n, val, alloc) {}
66 typedef vector<string> base_type;
67 using base_type::size_type;
68 using base_type::value_type;
69 using base_type::allocator_type;
80 StringArray(size_type n,
const value_type& val,
const allocator_type& alloc = allocator_type())
81 : base_type(n, val, alloc) {}
89 virtual void print(ostringstream&)
const {};
96 std::ostringstream ss;
133 virtual void print(ostringstream& ss)
const
135 ss <<
"//////// EbeamBoundary ////////" << endl
136 <<
"offset = " << offset << endl
137 <<
"width = " << width << endl
138 <<
"step = " << step << endl
140 for (vector<int32_t>::const_iterator it = vLayerId.begin(); it != vLayerId.end(); ++it)
144 for (vector<string>::const_iterator it = vLayer.begin(); it != vLayer.end(); ++it)
168 virtual void print(ostringstream& ss)
const
170 ss <<
"//////// ConfSite ////////" << endl;
171 ss <<
"confsite_name = " << confsite_name << endl;
172 ss <<
"layer_id = " << layer_id << endl;
173 ss <<
"layer = " << layer << endl;
175 for (vector<int32_t>::const_iterator it = vSiteCnt.begin(); it != vSiteCnt.end(); ++it)
193 virtual void print(ostringstream& ss)
const
195 ss <<
"//////// Macro ////////" << endl;
196 ss <<
"macro_name = " << macro_name << endl;
197 for (vector<ConfSite>::const_iterator it = vConfSite.begin(); it != vConfSite.end(); ++it)
void reset()
reset all data members
StringArray(const allocator_type &alloc=allocator_type())
EbeamBoundary()
constructor
friend ostringstream & operator<<(ostringstream &ss, Item const &rhs)
virtual void set_ebeam_boundary(EbeamBoundary const &)=0
set ebeam boundary
double offset
offset of beam
virtual void print(ostringstream &ss) const
print data members
describe conflict sites for each standard cell type
Temporary data structures to hold parsed data. Base class for all temporary data structures.
virtual void set_ebeam_unit(int)=0
set unit of micron in database, e.g., unit 1000 denotes 1000 in database unit is equal to 1 micron ...
void reset()
reset all data members
virtual void print(ostringstream &ss) const
print data members
friend std::ostream & operator<<(std::ostream &os, Item const &rhs)
IntegerArray(const allocator_type &alloc=allocator_type())
bison does not support vector very well, so here create a dummy class for string array.
vector< string > vLayer
array of layer name
vector< int32_t > vLayerId
array of layer id
bison does not support vector very well, so here create a dummy class for integer array...
void reset()
reset all data members
virtual void print(ostringstream &ss) const
print data members
virtual void add_ebeam_macro(Macro const &)=0
add ebeam macro for each standard cell
IntegerArray(size_type n, const value_type &val, const allocator_type &alloc=allocator_type())
vector< int32_t > vSiteCnt
array of site indices that are conflicted
virtual void print(ostringstream &) const
print data members
Base class for ebeam database. Only pure virtual functions are defined. User needs to inheritate this...
double width
width of beam
vector< ConfSite > vConfSite
string macro_name
standard cell type
namespace for EbeamParser
StringArray(size_type n, const value_type &val, const allocator_type &alloc=allocator_type())