/*
* 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 .
*/
#ifndef PARSE_PARAM_H
#define PARSE_PARAM_H
#include
/*
* 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