@@ -1174,14 +1174,18 @@ static void load_atom_pin_mapping(const ClusteredNetlist& clb_nlist) {
1174
1174
VTR_ASSERT_MSG (gnode->pb_type ->model == atom_ctx.nlist .block_model (blk),
1175
1175
" Atom block PB must match BLIF model" );
1176
1176
1177
+ // Always assign primary pins
1178
+ t_pb_graph_pin* pins;
1179
+
1177
1180
for (int iport = 0 ; iport < gnode->num_input_ports ; ++iport) {
1178
1181
if (gnode->num_input_pins [iport] <= 0 ) continue ;
1182
+ pins = gnode->input_pins [iport];
1179
1183
1180
- const AtomPortId port = atom_ctx.nlist .find_atom_port (blk, gnode-> input_pins [iport] [0 ].port ->model_port );
1184
+ const AtomPortId port = atom_ctx.nlist .find_atom_port (blk, pins [0 ].port ->model_port );
1181
1185
if (!port) continue ;
1182
1186
1183
1187
for (int ipin = 0 ; ipin < gnode->num_input_pins [iport]; ++ipin) {
1184
- const t_pb_graph_pin* gpin = &gnode-> input_pins [iport] [ipin];
1188
+ const t_pb_graph_pin* gpin = &pins [ipin];
1185
1189
VTR_ASSERT (gpin);
1186
1190
1187
1191
set_atom_pin_mapping (clb_nlist, blk, port, gpin);
@@ -1190,12 +1194,13 @@ static void load_atom_pin_mapping(const ClusteredNetlist& clb_nlist) {
1190
1194
1191
1195
for (int iport = 0 ; iport < gnode->num_output_ports ; ++iport) {
1192
1196
if (gnode->num_output_pins [iport] <= 0 ) continue ;
1197
+ pins = gnode->output_pins [iport];
1193
1198
1194
- const AtomPortId port = atom_ctx.nlist .find_atom_port (blk, gnode-> output_pins [iport] [0 ].port ->model_port );
1199
+ const AtomPortId port = atom_ctx.nlist .find_atom_port (blk, pins [0 ].port ->model_port );
1195
1200
if (!port) continue ;
1196
1201
1197
1202
for (int ipin = 0 ; ipin < gnode->num_output_pins [iport]; ++ipin) {
1198
- const t_pb_graph_pin* gpin = &gnode-> output_pins [iport] [ipin];
1203
+ const t_pb_graph_pin* gpin = &pins [ipin];
1199
1204
VTR_ASSERT (gpin);
1200
1205
1201
1206
set_atom_pin_mapping (clb_nlist, blk, port, gpin);
@@ -1204,12 +1209,13 @@ static void load_atom_pin_mapping(const ClusteredNetlist& clb_nlist) {
1204
1209
1205
1210
for (int iport = 0 ; iport < gnode->num_clock_ports ; ++iport) {
1206
1211
if (gnode->num_clock_pins [iport] <= 0 ) continue ;
1212
+ pins = gnode->clock_pins [iport];
1207
1213
1208
- const AtomPortId port = atom_ctx.nlist .find_atom_port (blk, gnode-> clock_pins [iport] [0 ].port ->model_port );
1214
+ const AtomPortId port = atom_ctx.nlist .find_atom_port (blk, pins [0 ].port ->model_port );
1209
1215
if (!port) continue ;
1210
1216
1211
1217
for (int ipin = 0 ; ipin < gnode->num_clock_pins [iport]; ++ipin) {
1212
- const t_pb_graph_pin* gpin = &gnode-> clock_pins [iport] [ipin];
1218
+ const t_pb_graph_pin* gpin = &pins [ipin];
1213
1219
VTR_ASSERT (gpin);
1214
1220
1215
1221
set_atom_pin_mapping (clb_nlist, blk, port, gpin);
0 commit comments