4#include "common/common.hpp"
5#include "util/uuid.hpp"
6#include "attribute_util.hpp"
7#include "surface_data.hpp"
15namespace horizon::ODB {
21 void write(std::ostream &ost)
const;
27 enum class Type { COPPER, LAMINATE, HOLE };
29 FeatureID(Type t,
unsigned int l,
unsigned int fid) : type(t), layer(l), feature_id(fid)
35 unsigned int feature_id;
37 void write(std::ostream &ost)
const;
42 Subnet(
unsigned int i) : index(i)
45 const unsigned int index;
46 void write(std::ostream &ost)
const;
48 std::list<FeatureID> feature_ids;
53 virtual void write_subnet(std::ostream &ost)
const = 0;
59 void write_subnet(std::ostream &ost)
const override;
65 void write_subnet(std::ostream &ost)
const override;
70 enum class FillType { SOLID, OUTLINE };
71 enum class CutoutType {
CIRCLE, RECT, OCTAGON, EXACT };
73 SubnetPlane(
unsigned int i, FillType ft, CutoutType ct,
double fs)
74 :
Subnet(i), fill_type(ft), cutout_type(ct), fill_size(fs)
79 CutoutType cutout_type;
82 void write_subnet(std::ostream &ost)
const override;
87 enum class Side { TOP, BOTTOM };
89 SubnetToeprint(
unsigned int i, Side s,
unsigned int c,
unsigned int t)
90 :
Subnet(i), side(s), comp_num(c), toep_num(t)
96 unsigned int comp_num;
97 unsigned int toep_num;
99 void write_subnet(std::ostream &ost)
const override;
102 void add_feature_id(
Subnet &subnet, FeatureID::Type type,
const std::string &layer,
unsigned int feature_id);
108 Net(
unsigned int index,
const std::string &name);
109 const unsigned int index;
113 std::list<std::unique_ptr<Subnet>> subnets;
115 template <
typename T,
typename... Args> T &add_subnet(Args &&...args)
117 auto f = std::make_unique<T>(subnets.size(), std::forward<Args>(args)...);
119 subnets.push_back(std::move(f));
123 void write(std::ostream &ost)
const;
129 return nets_map.at(uu);
134 virtual void write(std::ostream &ost)
const = 0;
145 :
OutlineRectangle(bb.first, bb.second.x - bb.first.x, bb.second.y - bb.first.y)
153 void write(std::ostream &ost)
const override;
160 void write(std::ostream &ost)
const override;
171 void write(std::ostream &ost)
const override;
182 void write(std::ostream &ost)
const override;
187 Pin(
unsigned int i,
const std::string &n);
189 const unsigned int index;
193 enum class Type { THROUGH_HOLE, BLIND, SURFACE };
194 Type type = Type::SURFACE;
196 enum class ElectricalType { ELECTRICAL, MECHANICAL, UNDEFINED };
197 ElectricalType etype = ElectricalType::UNDEFINED;
199 enum class MountType {
209 MountType mtype = MountType::UNDEFINED;
211 std::list<std::unique_ptr<Outline>> outline;
213 void write(std::ostream &ost)
const;
220 Package(
const unsigned int i,
const std::string &n);
221 const unsigned int index;
225 int64_t xmin, ymin, xmax, ymax;
227 std::list<std::unique_ptr<Outline>> outline;
230 const Pin &get_pin(
const UUID &uu)
const
232 return pins_map.at(uu);
235 void write(std::ostream &ost)
const;
239 std::map<UUID, Pin> pins_map;
240 std::list<const Pin *> pins;
246 return packages_map.at(uu);
250 std::map<UUID, Net> nets_map;
251 std::list<const Net *> nets;
253 std::map<UUID, Package> packages_map;
254 std::list<const Package *> packages;
256 unsigned int get_or_create_layer(
const std::string &l);
258 std::map<std::string, unsigned int> layers_map;
259 std::vector<std::string> layers;
Represent basic circle geometry with utility geometry functions.
Definition circle.h:33
Definition attribute_util.hpp:10
Definition eda_data.hpp:23
Definition eda_data.hpp:104
Definition eda_data.hpp:174
Definition eda_data.hpp:156
Definition eda_data.hpp:139
Definition eda_data.hpp:163
Definition eda_data.hpp:132
Definition eda_data.hpp:216
Definition eda_data.hpp:185
Definition eda_data.hpp:68
Definition eda_data.hpp:85
Definition eda_data.hpp:62
Definition eda_data.hpp:56
Definition eda_data.hpp:40
Definition eda_data.hpp:17
Definition attribute_util.hpp:56
Definition surface_data.hpp:17
Definition package.hpp:29
This class encapsulates a UUID and allows it to be uses as a value type.
Definition uuid.hpp:16
Definition attributes.hpp:51
Definition attributes.hpp:52