@@ -225,10 +225,10 @@ def pin_direction(pin: Pin) -> Direction:
225225def block_io_to_pin_map (
226226 blocks : list [BlockIoFlat ], pins : list [PinFlat ]
227227) -> BlockIoToPinsMap :
228- mapping : BlockIoToPinsMap = {block_io . uid : [] for block_io in blocks }
228+ mapping : BlockIoToPinsMap = {}
229229 for pin in pins :
230230 for link in pin .block_io_links :
231- mapping [ link ] .append (pin )
231+ mapping . setdefault ( link , []) .append (pin )
232232 return mapping
233233
234234
@@ -242,16 +242,12 @@ def output_block_ios_iter(
242242 ):
243243 continue
244244
245- possible_pins = block_io_to_pins [block_io .uid ]
246-
247- if len (possible_pins ) == 0 :
248- continue
249-
250- yield OutputBlockIo (
251- block_io ,
252- possible_pins ,
253- max (len (possible_pins ) + 1 , 2 ),
254- )
245+ if possible_pins := block_io_to_pins .get (block_io .uid ):
246+ yield OutputBlockIo (
247+ block_io ,
248+ possible_pins ,
249+ max (len (possible_pins ) + 1 , 2 ),
250+ )
255251
256252
257253def output_pins_iter (
@@ -325,10 +321,9 @@ def block_port_definitions(block: Block) -> Iterator[str]:
325321def generate_top (config : TopConfig ) -> None :
326322 """Generate a top from a top configuration."""
327323
328- block_ios = list (flatten_block_ios (config .blocks ))
329- pins = list (flatten_pins (config .pins , block_ios ))
330-
331- block_io_to_pins = block_io_to_pin_map (block_ios , pins )
324+ block_ios : list [BlockIoFlat ] = list (flatten_block_ios (config .blocks ))
325+ pins : list [PinFlat ] = list (flatten_pins (config .pins , block_ios ))
326+ block_io_to_pins : BlockIoToPinsMap = block_io_to_pin_map (block_ios , pins )
332327
333328 template_variables = {
334329 "config" : config ,
0 commit comments