@@ -2576,9 +2576,6 @@ static void process_model_ports(pugi::xml_node port_group, t_model& model, std::
2576
2576
static void process_layout (pugi::xml_node layout_tag, t_arch* arch, const pugiutil::loc_data& loc_data, int & num_of_avail_layer) {
2577
2577
VTR_ASSERT (layout_tag.name () == std::string (" layout" ));
2578
2578
2579
- // Expect no attributes on <layout>
2580
- // expect_only_attributes(layout_tag, {}, loc_data);
2581
-
2582
2579
arch->tileable = get_attribute (layout_tag, " tileable" , loc_data, ReqOpt::OPTIONAL).as_bool (false );
2583
2580
arch->perimeter_cb = get_attribute (layout_tag, " perimeter_cb" , loc_data, ReqOpt::OPTIONAL).as_bool (false );
2584
2581
arch->shrink_boundary = get_attribute (layout_tag, " shrink_boundary" , loc_data, ReqOpt::OPTIONAL).as_bool (false );
@@ -4156,17 +4153,15 @@ static std::vector<t_segment_inf> process_segments(pugi::xml_node Parent,
4156
4153
}
4157
4154
4158
4155
static void process_bend (pugi::xml_node Node, std::vector<int >& list, std::vector<int >& part_len, bool & is_bend, const int len, const pugiutil::loc_data& loc_data) {
4159
- const char * tmp = nullptr ;
4160
- int i;
4161
4156
4162
- tmp = get_attribute (Node, " type" , loc_data).value ();
4163
- if (0 == strcmp (tmp, " pattern" ) ) {
4164
- i = 0 ;
4157
+ std::string tmp = std::string ( get_attribute (Node, " type" , loc_data).value () );
4158
+ if (tmp == " pattern" ) {
4159
+ int i = 0 ;
4165
4160
4166
4161
/* Get the content string */
4167
- tmp = Node.child_value ();
4168
- while (*tmp ) {
4169
- switch (*tmp ) {
4162
+ std::string content = std::string ( Node.child_value () );
4163
+ for ( char c : content ) {
4164
+ switch (c ) {
4170
4165
case ' ' :
4171
4166
case ' \t ' :
4172
4167
case ' \n ' :
@@ -4184,28 +4179,24 @@ static void process_bend(pugi::xml_node Node, std::vector<int>& list, std::vecto
4184
4179
break ;
4185
4180
case ' B' :
4186
4181
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Node),
4187
- " B pattern is not supported in current version\n " ,
4188
- *tmp);
4182
+ " B pattern is not supported in current version\n " );
4189
4183
break ;
4190
4184
default :
4191
4185
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Node),
4192
4186
" Invalid character %c in CB or SB depopulation list.\n " ,
4193
- *tmp );
4187
+ c );
4194
4188
}
4195
- ++tmp;
4196
4189
}
4197
4190
4198
4191
if (list.size () != size_t (len)) {
4199
4192
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Node),
4200
4193
" Wrong length of bend list (%d). Expect %d symbols.\n " ,
4201
4194
i, len);
4202
4195
}
4203
- }
4204
-
4205
- else {
4196
+ } else {
4206
4197
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Node),
4207
4198
" '%s' is not a valid type for specifying bend list.\n " ,
4208
- tmp);
4199
+ tmp. c_str () );
4209
4200
}
4210
4201
4211
4202
int tmp_len = 1 ;
@@ -5142,13 +5133,9 @@ static T* get_type_by_name(std::string_view type_name, std::vector<T>& types) {
5142
5133
5143
5134
/* for vib arch*/
5144
5135
static void process_vib_arch (pugi::xml_node Parent, std::vector<t_physical_tile_type>& PhysicalTileTypes, t_arch* arch, const pugiutil::loc_data& loc_data) {
5145
- pugi::xml_node Node;
5146
- // pugi::xml_node SubElem;
5147
-
5148
- // arch->is_vib_arch = true;
5149
5136
int num_vibs = count_children (Parent, " vib" , loc_data);
5150
5137
arch->vib_infs .reserve (num_vibs);
5151
- Node = get_first_child (Parent, " vib" , loc_data);
5138
+ pugi::xml_node Node = get_first_child (Parent, " vib" , loc_data);
5152
5139
5153
5140
for (int i_vib = 0 ; i_vib < num_vibs; i_vib++) {
5154
5141
process_vib (Node, PhysicalTileTypes, arch, loc_data);
@@ -5157,25 +5144,18 @@ static void process_vib_arch(pugi::xml_node Parent, std::vector<t_physical_tile_
5157
5144
}
5158
5145
5159
5146
static void process_vib (pugi::xml_node Vib_node, std::vector<t_physical_tile_type>& PhysicalTileTypes, t_arch* arch, const pugiutil::loc_data& loc_data) {
5160
- pugi::xml_node Node;
5161
- pugi::xml_node SubElem;
5162
- const char * tmp;
5163
- int itmp;
5164
-
5165
5147
VibInf vib;
5166
- // std::vector<t_segment_inf> segments = arch->Segments;
5167
- // t_arch_switch_inf* switches = arch->Switches;
5168
5148
5169
- tmp = get_attribute (Vib_node, " name" , loc_data).as_string (nullptr );
5170
- if (tmp) {
5149
+ std::string tmp = get_attribute (Vib_node, " name" , loc_data).as_string (" " );
5150
+ if (! tmp. empty () ) {
5171
5151
vib.set_name (tmp);
5172
5152
} else {
5173
5153
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Vib_node),
5174
5154
" No name specified for the vib!\n " );
5175
5155
}
5176
5156
5177
- tmp = get_attribute (Vib_node, " pbtype_name" , loc_data).as_string (nullptr );
5178
- if (tmp) {
5157
+ tmp = get_attribute (Vib_node, " pbtype_name" , loc_data).as_string (" " );
5158
+ if (! tmp. empty () ) {
5179
5159
vib.set_pbtype_name (tmp);
5180
5160
} else {
5181
5161
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Vib_node),
@@ -5184,9 +5164,9 @@ static void process_vib(pugi::xml_node Vib_node, std::vector<t_physical_tile_typ
5184
5164
5185
5165
vib.set_seg_group_num (get_attribute (Vib_node, " vib_seg_group" , loc_data).as_int (1 ));
5186
5166
5187
- tmp = get_attribute (Vib_node, " arch_vib_switch" , loc_data).as_string (nullptr );
5167
+ tmp = get_attribute (Vib_node, " arch_vib_switch" , loc_data).as_string (" " );
5188
5168
5189
- if (tmp) {
5169
+ if (! tmp. empty () ) {
5190
5170
std::string str_tmp;
5191
5171
str_tmp = tmp;
5192
5172
vib.set_switch_name (str_tmp);
@@ -5200,35 +5180,35 @@ static void process_vib(pugi::xml_node Vib_node, std::vector<t_physical_tile_typ
5200
5180
int group_num = count_children (Vib_node, " seg_group" , loc_data);
5201
5181
VTR_ASSERT (vib.get_seg_group_num () == group_num);
5202
5182
// vib.seg_groups.reserve(group_num);
5203
- Node = get_first_child (Vib_node, " seg_group" , loc_data);
5183
+ pugi::xml_node Node = get_first_child (Vib_node, " seg_group" , loc_data);
5204
5184
for (int i_group = 0 ; i_group < group_num; i_group++) {
5205
5185
t_seg_group seg_group;
5206
5186
5207
- tmp = get_attribute (Node, " name" , loc_data).as_string (nullptr );
5187
+ tmp = get_attribute (Node, " name" , loc_data).as_string (" " );
5208
5188
5209
- if (tmp) {
5189
+ if (! tmp. empty () ) {
5210
5190
seg_group.name = tmp;
5211
5191
} else {
5212
5192
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Node),
5213
5193
" No name specified for the vib seg group!\n " );
5214
5194
}
5215
5195
5216
5196
seg_group.axis = BOTH_DIR; /* DEFAULT value if no axis is specified*/
5217
- tmp = get_attribute (Node, " axis" , loc_data, ReqOpt::OPTIONAL).as_string (nullptr );
5197
+ tmp = get_attribute (Node, " axis" , loc_data, ReqOpt::OPTIONAL).as_string (" " );
5218
5198
5219
- if (tmp) {
5220
- if (strcmp ( tmp, " x " ) == 0 ) {
5199
+ if (! tmp. empty () ) {
5200
+ if (tmp == " x " ) {
5221
5201
seg_group.axis = X;
5222
- } else if (strcmp ( tmp, " y " ) == 0 ) {
5202
+ } else if (tmp == " y " ) {
5223
5203
seg_group.axis = Y;
5224
5204
} else {
5225
5205
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Node), " Unsopported parralel axis type: %s\n " , tmp);
5226
5206
}
5227
5207
}
5228
5208
5229
- itmp = get_attribute (Node, " track_nums" , loc_data).as_int ();
5230
- if (itmp ) {
5231
- seg_group.track_num = itmp ;
5209
+ int track_num = get_attribute (Node, " track_nums" , loc_data).as_int ();
5210
+ if (track_num > 0 ) {
5211
+ seg_group.track_num = track_num ;
5232
5212
} else {
5233
5213
archfpga_throw (loc_data.filename_c_str (), loc_data.line (Node),
5234
5214
" No track_num specified for the vib seg group!\n " );
@@ -5242,7 +5222,7 @@ static void process_vib(pugi::xml_node Vib_node, std::vector<t_physical_tile_typ
5242
5222
Node = get_single_child (Vib_node, " multistage_muxs" , loc_data);
5243
5223
expect_only_children (Node, {" first_stage" , " second_stage" }, loc_data);
5244
5224
5245
- SubElem = get_single_child (Node, " first_stage" , loc_data);
5225
+ pugi::xml_node SubElem = get_single_child (Node, " first_stage" , loc_data);
5246
5226
if (SubElem) {
5247
5227
std::vector<t_first_stage_mux_inf> first_stages;
5248
5228
process_first_stage (SubElem, PhysicalTileTypes, first_stages, loc_data);
@@ -5266,21 +5246,16 @@ static void process_vib(pugi::xml_node Vib_node, std::vector<t_physical_tile_typ
5266
5246
}
5267
5247
5268
5248
static void process_first_stage (pugi::xml_node Stage_node, std::vector<t_physical_tile_type>& /* PhysicalTileTypes*/ , std::vector<t_first_stage_mux_inf>& first_stages, const pugiutil::loc_data& loc_data) {
5269
- pugi::xml_node Node;
5270
- pugi::xml_node SubElem;
5271
- // pugi::xml_node Cur;
5272
- // const char* tmp;
5273
-
5274
5249
expect_only_children (Stage_node, {" mux" }, loc_data);
5275
5250
int num_mux = count_children (Stage_node, " mux" , loc_data);
5276
5251
first_stages.reserve (num_mux);
5277
- Node = get_first_child (Stage_node, " mux" , loc_data);
5252
+ pugi::xml_node Node = get_first_child (Stage_node, " mux" , loc_data);
5278
5253
for (int i_mux = 0 ; i_mux < num_mux; i_mux++) {
5279
5254
t_first_stage_mux_inf first_stage_mux;
5280
5255
first_stage_mux.mux_name = get_attribute (Node, " name" , loc_data).as_string ();
5281
5256
5282
5257
expect_only_children (Node, {" from" }, loc_data);
5283
- SubElem = get_first_child (Node, " from" , loc_data);
5258
+ pugi::xml_node SubElem = get_first_child (Node, " from" , loc_data);
5284
5259
int from_num = count_children (Node, " from" , loc_data);
5285
5260
for (int i_from = 0 ; i_from < from_num; i_from++) {
5286
5261
std::vector<std::string> from_tokens = vtr::split (SubElem.child_value ());
@@ -5294,20 +5269,17 @@ static void process_first_stage(pugi::xml_node Stage_node, std::vector<t_physica
5294
5269
}
5295
5270
5296
5271
static void process_second_stage (pugi::xml_node Stage_node, std::vector<t_physical_tile_type>& /* PhysicalTileTypes*/ , std::vector<t_second_stage_mux_inf>& second_stages, const pugiutil::loc_data& loc_data) {
5297
- pugi::xml_node Node;
5298
- pugi::xml_node SubElem;
5299
-
5300
5272
expect_only_children (Stage_node, {" mux" }, loc_data);
5301
5273
int num_mux = count_children (Stage_node, " mux" , loc_data);
5302
5274
second_stages.reserve (num_mux);
5303
- Node = get_first_child (Stage_node, " mux" , loc_data);
5275
+ pugi::xml_node Node = get_first_child (Stage_node, " mux" , loc_data);
5304
5276
for (int i_mux = 0 ; i_mux < num_mux; i_mux++) {
5305
5277
t_second_stage_mux_inf second_stage_mux;
5306
5278
second_stage_mux.mux_name = get_attribute (Node, " name" , loc_data).as_string ();
5307
5279
5308
5280
expect_only_children (Node, {" to" , " from" }, loc_data);
5309
5281
5310
- SubElem = get_first_child (Node, " to" , loc_data);
5282
+ pugi::xml_node SubElem = get_first_child (Node, " to" , loc_data);
5311
5283
int to_num = count_children (Node, " to" , loc_data);
5312
5284
VTR_ASSERT (to_num == 1 );
5313
5285
std::vector<std::string> to_tokens = vtr::split (SubElem.child_value ());
0 commit comments