1 /////////////////////////////////////////////////////////////////////////////// 2 // BSD 3-Clause License 3 // 4 // Copyright (c) 2020, The Regents of the University of California 5 // All rights reserved. 6 // 7 // Redistribution and use in source and binary forms, with or without 8 // modification, are permitted provided that the following conditions are met: 9 // 10 // * Redistributions of source code must retain the above copyright notice, this 11 // list of conditions and the following disclaimer. 12 // 13 // * Redistributions in binary form must reproduce the above copyright notice, 14 // this list of conditions and the following disclaimer in the documentation 15 // and/or other materials provided with the distribution. 16 // 17 // * Neither the name of the copyright holder nor the names of its 18 // contributors may be used to endorse or promote products derived from 19 // this software without specific prior written permission. 20 // 21 // THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 22 // AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23 // IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 24 // ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 25 // LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26 // CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27 // SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 28 // INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 29 // CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 30 // ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 31 // POSSIBILITY OF SUCH DAMAGE. 32 33 // Generator Code Begin Header 34 #pragma once 35 36 #include "dbCore.h" 37 #include "odb.h" 38 39 // User Code Begin Includes 40 // User Code End Includes 41 42 namespace odb { 43 44 class dbIStream; 45 class dbOStream; 46 class dbDiff; 47 class _dbDatabase; 48 // User Code Begin Classes 49 class _dbTechLayer; 50 // User Code End Classes 51 52 struct dbTechLayerSpacingEolRuleFlags 53 { 54 bool exact_width_valid_ : 1; 55 bool wrong_dir_spacing_valid_ : 1; 56 bool opposite_width_valid_ : 1; 57 bool within_valid_ : 1; 58 bool wrong_dir_within_valid_ : 1; 59 bool same_mask_valid_ : 1; 60 bool except_exact_width_valid_ : 1; 61 bool fill_concave_corner_valid_ : 1; 62 bool withcut_valid_ : 1; 63 bool cut_class_valid_ : 1; 64 bool with_cut_above_valid_ : 1; 65 bool enclosure_end_valid_ : 1; 66 bool enclosure_end_within_valid_ : 1; 67 bool end_prl_spacing_valid_ : 1; 68 bool prl_valid_ : 1; 69 bool end_to_end_valid_ : 1; 70 bool cut_spaces_valid_ : 1; 71 bool extension_valid_ : 1; 72 bool wrong_dir_extension_valid_ : 1; 73 bool other_end_width_valid_ : 1; 74 bool max_length_valid_ : 1; 75 bool min_length_valid_ : 1; 76 bool two_sides_valid_ : 1; 77 bool equal_rect_width_valid_ : 1; 78 bool parallel_edge_valid_ : 1; 79 bool subtract_eol_width_valid_ : 1; 80 bool par_prl_valid_ : 1; 81 bool par_min_length_valid_ : 1; 82 bool two_edges_valid_ : 1; 83 bool same_metal_valid_ : 1; 84 bool non_eol_corner_only_valid_ : 1; 85 bool parallel_same_mask_valid_ : 1; 86 bool enclose_cut_valid_ : 1; 87 bool below_valid_ : 1; 88 bool above_valid_ : 1; 89 bool cut_spacing_valid_ : 1; 90 bool all_cuts_valid_ : 1; 91 bool to_concave_corner_valid_ : 1; 92 bool min_adjacent_length_valid_ : 1; 93 bool two_min_adj_length_valid_ : 1; 94 bool to_notch_length_valid_ : 1; 95 uint spare_bits_ : 23; 96 }; 97 // User Code Begin Structs 98 // User Code End Structs 99 100 class _dbTechLayerSpacingEolRule : public _dbObject 101 { 102 public: 103 // User Code Begin Enums 104 // User Code End Enums 105 106 dbTechLayerSpacingEolRuleFlags flags_; 107 int eol_space_; 108 int eol_width_; 109 int wrong_dir_space_; 110 int opposite_width_; 111 int eol_within_; 112 int wrong_dir_within_; 113 int exact_width_; 114 int other_width_; 115 int fill_triangle_; 116 int cut_class_; 117 int with_cut_space_; 118 int enclosure_end_width_; 119 int enclosure_end_within_; 120 int end_prl_space_; 121 int end_prl_; 122 int end_to_end_space_; 123 int one_cut_space_; 124 int two_cut_space_; 125 int extension_; 126 int wrong_dir_extension_; 127 int other_end_width_; 128 int max_length_; 129 int min_length_; 130 int par_space_; 131 int par_within_; 132 int par_prl_; 133 int par_min_length_; 134 int enclose_dist_; 135 int cut_to_metal_space_; 136 int min_adj_length_; 137 int min_adj_length1_; 138 int min_adj_length2_; 139 int notch_length_; 140 141 // User Code Begin Fields 142 dbId<_dbTechLayer> _layer; 143 // User Code End Fields 144 _dbTechLayerSpacingEolRule(_dbDatabase*, const _dbTechLayerSpacingEolRule& r); 145 _dbTechLayerSpacingEolRule(_dbDatabase*); 146 ~_dbTechLayerSpacingEolRule(); 147 bool operator==(const _dbTechLayerSpacingEolRule& rhs) const; 148 bool operator!=(const _dbTechLayerSpacingEolRule& rhs) const 149 { 150 return !operator==(rhs); 151 } 152 bool operator<(const _dbTechLayerSpacingEolRule& rhs) const; 153 void differences(dbDiff& diff, 154 const char* field, 155 const _dbTechLayerSpacingEolRule& rhs) const; 156 void out(dbDiff& diff, char side, const char* field) const; 157 // User Code Begin Methods 158 // User Code End Methods 159 }; 160 dbIStream& operator>>(dbIStream& stream, _dbTechLayerSpacingEolRule& obj); 161 dbOStream& operator<<(dbOStream& stream, const _dbTechLayerSpacingEolRule& obj); 162 // User Code Begin General 163 // User Code End General 164 } // namespace odb 165 // Generator Code End Header 166