google / google/CFU-Playground
High-fanout nets in HPS design
- Dominant language
- Verilog
- Stars
- 565
- Forks
- 160
- PR merge metrics
- No merged PRs in 30d
Description
I used the following script to print out high-fanout nets in the HPS design. It is used as the --pre-place script in nextpnr.
```
for net, netinfo in ctx.nets:
fanout = len(netinfo.users)
if fanout > 100:
print("%d fanout: net %s driver %s:%s" % (fanout, net, netinfo.driver.cell.name, netinfo.driver.port))
```
This is what it produced (I sorted the list afterwards):
```
4708 fanout: net por_clk$glb_clk driver por_clk$glb_clk$drv_DCC:CLKO
3402 fanout: net memdat_1[8] driver Cfu.filter_flow_restrictor.initial_VLO_Z:F
3198 fanout: net $CONST_VCC_DRV_NET_ driver $CONST_VCC_DRV_DRV_:Z
2335 fanout: net sys_rst driver FD1P3BX_1:Q
484 fanout: net Cfu.macc_operands__ready driver Cfu.operands_buffer.output__ready_LUT4_Z:F
394 fanout: net VexRiscv.CfuPlugin_bus_rsp_valid_WIDEFN9_A0_Z driver VexRiscv.CfuPlugin_bus_rsp_valid_WIDEFN9_A0$widefn_comb[0]$:OFX
213 fanout: net VexRiscv._zz_dBus_rsp_valid_LUT4_B_Z_LUT4_C_Z driver VexRiscv._zz_dBus_rsp_valid_LUT4_B_Z_LUT4_C:F
194 fanout: net VexRiscv.decode_to_execute_MEMORY_MANAGMENT_LUT4_B_Z_WIDEFN9_SEL_Z_LUT4_C_1_Z driver VexRiscv.decode_to_execute_MEMORY_MANAGMENT_LUT4_B_Z_WIDEFN9_SEL_Z_LUT4_C_1:F
145 fanout: net soc_reset_re_LUT4_B_Z driver soc_reset_re_LUT4_B:F
131 fanout: net Cfu.pp.fifo.wrapped.unbuffered.consume[2] driver Cfu.pp.fifo.wrapped.unbuffered.consume_FD1P3IX_Q_3:Q
131 fanout: net Cfu.pp.fifo.wrapped.unbuffered.consume[1] driver Cfu.pp.fifo.wrapped.unbuffered.consume_FD1P3IX_Q_4:Q
131 fanout: net Cfu.pp.fifo.wrapped.unbuffered.consume[0] driver Cfu.pp.fifo.wrapped.unbuffered.consume_FD1P3IX_Q_5:Q
131 fanout: net Cfu.operands_buffer.buffering_inputs driver Cfu.operands_buffer.buffering_inputs_FD1P3IX_Q:Q
131 fanout: net Cfu.operands_buffer.buffering_filters driver Cfu.operands_buffer.buffering_filters_FD1P3IX_Q:Q
130 fanout: net Cfu.pp.fifo.wrapped.unbuffered.consume[3] driver Cfu.pp.fifo.wrapped.unbuffered.consume_FD1P3IX_Q_2:Q
130 fanout: net Cfu.macc.operands__valid_LUT4_C_Z_LUT4_B_Z driver Cfu.macc.operands__valid_LUT4_C_Z_LUT4_B:F
130 fanout: net Cfu.macc.operands__valid_LUT4_C_Z_LUT4_B_1_Z driver Cfu.macc.operands__valid_LUT4_C_Z_LUT4_B_1:F
129 fanout: net VexRiscv.IBusCachedPlugin_fetchPc_booted_LUT4_D_C_LUT4_D_C_LUT4_B_Z driver VexRiscv.IBusCachedPlugin_fetchPc_booted_LUT4_D_C_LUT4_D_C_LUT4_B:F
128 fanout: net Cfu.input_store.data_output__valid_LUT4_D_Z_LUT4_C_Z driver Cfu.input_store.data_output__valid_LUT4_D_Z_LUT4_C:F
128 fanout: net Cfu.filter_store.data_output__valid_LUT4_D_Z_LUT4_C_Z driver Cfu.filter_store.data_output__valid_LUT4_D_Z_LUT4_C:F
124 fanout: net soc_vexriscv_cfu_bus_cmd_payload_function_id[0] driver VexRiscv.decode_to_execute_INSTRUCTION_FD1P3IX_Q_17:Q
104 fanout: net VexRiscv.memory_arbitration_isValid driver VexRiscv.memory_arbitration_isValid_FD1P3IX_Q:Q
```
Contributor guide
Assessment
This issue has not been assessed yet.