diff options
Diffstat (limited to 'hyp2mat/lib/parse_param.h')
-rw-r--r-- | hyp2mat/lib/parse_param.h | 172 |
1 files changed, 172 insertions, 0 deletions
diff --git a/hyp2mat/lib/parse_param.h b/hyp2mat/lib/parse_param.h new file mode 100644 index 0000000..47ed1bb --- /dev/null +++ b/hyp2mat/lib/parse_param.h @@ -0,0 +1,172 @@ + +/* + * hyp2mat - convert hyperlynx files to matlab scripts + * Copyright 2012 Koen De Vleeschauwer. + * + * This file is part of hyp2mat. + * + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef PARSE_PARAM_H +#define PARSE_PARAM_H + +#include <string> + + /* + * Parameters passed on by the parser. + * All variables added here are initialized in new_record(). + */ + + enum pad_type_enum { PAD_TYPE_METAL, PAD_TYPE_ANTIPAD, PAD_TYPE_THERMAL_RELIEF }; + + enum pin_function_enum { PIN_SIM_IN, PIN_SIM_OUT, PIN_SIM_BOTH }; + + enum polygon_type_enum { POLYGON_TYPE_POUR, POLYGON_TYPE_PLANE, POLYGON_TYPE_COPPER, POLYGON_TYPE_PAD, POLYGON_TYPE_ANTIPAD }; + + struct parse_param { + double vers; /* version of the hyp file format */ + bool detailed; /* data detailed enough for power integrity */ + bool unit_system_english; /* english or metric units */ + bool metal_thickness_weight; /* copper by weight or by length */ + double default_plane_separation; /* trace to plane separation */ + + /* stackup record */ + bool use_die_for_metal; /* dielectric constant and loss tangent of dielectric for metal layers */ + double bulk_resistivity; + bool conformal; + double epsilon_r; + std::string layer_name; + double loss_tangent; + std::string material_name; + double plane_separation; + double plating_thickness; + bool prepreg; + double temperature_coefficient; /* temperature coefficient of resistivity */ + double thickness; /* layer thickness */ + + /* stackup record flags */ + bool bulk_resistivity_set; + bool conformal_set; + bool epsilon_r_set; + bool layer_name_set; + bool loss_tangent_set; + bool material_name_set; + bool plane_separation_set; + bool plating_thickness_set; + bool prepreg_set; + bool temperature_coefficient_set; + bool thickness_set; + + /* device record */ + std::string device_type; + std::string ref; + double value_float; + std::string value_string; + std::string package; + + /* device record flags */ + bool name_set; + bool value_float_set; + bool value_string_set; + bool package_set; + + /* supplies record */ + bool voltage_specified; + bool conversion; + + /* padstack record */ + std::string padstack_name; + double drill_size; + double pad_shape; + double pad_sx; + double pad_sy; + double pad_angle; + double thermal_clear_shape; + double thermal_clear_sx; + double thermal_clear_sy; + double thermal_clear_angle; + pad_type_enum pad_type; + + /* padstack record flags */ + bool padstack_name_set; + bool drill_size_set; + bool pad_type_set; + + /* net record */ + double width; + double left_plane_separation; + bool width_set; + bool left_plane_separation_set; + + /* via subrecord of net */ + std::string layer1_name; + bool layer1_name_set; + std::string layer2_name; + bool layer2_name_set; + std::string pad1_shape; + double pad1_sx; + double pad1_sy; + double pad1_angle; + std::string pad2_shape; + double pad2_sx; + double pad2_sy; + double pad2_angle; + + /* pin subrecord of net */ + std::string pin_reference; + bool pin_reference_set; + pin_function_enum pin_function; + bool pin_function_set; + + /* useg subrecord of net */ + std::string zlayer_name; + bool zlayer_name_set; + double length; + double impedance; + bool impedance_set; + double delay; + double resistance; + bool resistance_set; + + /* polygon subrecord of net */ + int id; + bool id_set; + polygon_type_enum polygon_type; + bool polygon_type_set; + + /* net class record */ + std::string net_class_name; + std::string net_name; + + /* key record */ + std::string key; + + /* Attributes */ + std::string name; /* attribute name */ + std::string value; /* attribute value */ + + /* point, line and arc coordinates */ + double x; /* coordinates point */ + double y; /* coordinates point */ + double x1; /* coordinates point 1 */ + double y1; /* coordinates point 1 */ + double x2; /* coordinates point 2 */ + double y2; /* coordinates point 2 */ + double xc; /* coordinates arc */ + double yc; /* coordinates arc */ + double r; /* coordinates arc */ + }; + +#endif |