| 110 | } |
| 111 | |
| 112 | void AABBTiler::evaluate_thickness_parameters(WireNetwork& wire_network, |
| 113 | const AABBTiler::FuncList& funcs) { |
| 114 | assert(m_params); |
| 115 | const size_t num_vertices = wire_network.get_num_vertices(); |
| 116 | const size_t num_edges = wire_network.get_num_edges(); |
| 117 | const size_t num_unit_vertices = m_unit_wire_network->get_num_vertices(); |
| 118 | const size_t num_unit_edges = m_unit_wire_network->get_num_edges(); |
| 119 | |
| 120 | size_t num_thickness_entries, thickness_index_stride; |
| 121 | if (m_params->get_thickness_type() == ParameterCommon::VERTEX) { |
| 122 | thickness_index_stride = num_unit_vertices; |
| 123 | num_thickness_entries = num_vertices; |
| 124 | wire_network.add_attribute("thickness", true); |
| 125 | } else { |
| 126 | thickness_index_stride = num_unit_edges; |
| 127 | num_thickness_entries = num_edges; |
| 128 | wire_network.add_attribute("thickness", false); |
| 129 | } |
| 130 | MatrixFr thickness(num_thickness_entries, 1); |
| 131 | |
| 132 | ParameterCommon::Variables vars; |
| 133 | size_t count=0; |
| 134 | for (auto f : funcs) { |
| 135 | VectorF local_thickness = m_params->evaluate_thickness(vars); |
| 136 | thickness.block(count * thickness_index_stride, 0, |
| 137 | thickness_index_stride, 1) = local_thickness; |
| 138 | count++; |
| 139 | } |
| 140 | wire_network.set_attribute("thickness", thickness); |
| 141 | } |
| 142 | |
| 143 | void AABBTiler::evaluate_offset_parameters(WireNetwork& wire_network, |
| 144 | const AABBTiler::FuncList& funcs) { |
nothing calls this directly
no test coverage detected