Hello everyone. I have one question about fanout error. I used 'make user_proj_example' with origi...
y
Hello everyone. I have one question about fanout error. I used 'make user_proj_example' with original config.json. But openlane.log has fanout warning message and report as below. [WARNING]: There are max fanout violations in the design at the typical corner. Please refer to '../home/harada/Project/011_OpenLane/caravel_test_001/openlane/user_proj_example/runs/24_04_03_17_54/reports/signoff/33-rcx_sta.checks.rpt'. Pin Limit Fanout Slack --------------------------------------------------------- input37/X 16 35 -19 (VIOLATED) input39/X 16 35 -19 (VIOLATED) input40/X 16 35 -19 (VIOLATED) _157_/Y 16 32 -16 (VIOLATED) fanout124/X 16 32 -16 (VIOLATED) fanout144/X 16 32 -16 (VIOLATED) input46/X 16 32 -16 (VIOLATED) input47/X 16 32 -16 (VIOLATED) input48/X 16 29 -13 (VIOLATED) input49/X 16 29 -13 (VIOLATED) input51/X 16 26 -10 (VIOLATED) input52/X 16 26 -10 (VIOLATED) input41/X 16 23 -7 (VIOLATED) input42/X 16 23 -7 (VIOLATED) input53/X 16 23 -7 (VIOLATED) input54/X 16 23 -7 (VIOLATED) _277_/Q 16 20 -4 (VIOLATED) _289_/Q 16 20 -4 (VIOLATED) input43/X 16 20 -4 (VIOLATED) input44/X 16 20 -4 (VIOLATED) _278_/Q 16 18 -2 (VIOLATED) clkbuf_2_1_0_counter.clk/X 16 18 -2 (VIOLATED) clkbuf_2_3_0_counter.clk/X 16 18 -2 (VIOLATED) input37/X is owned by input37 instance and it is connected to 35 pins. But 34pin in 35pin are diode for ANTENNA. 〇inputs37/X instance sky130_fd_sc_hd__buf_8 input37 (.A(wb_rst_i), .VGND(vssd1), .VNB(vssd1), .VPB(vccd1), .VPWR(vccd1), .X(net37)); 〇inputs/37/x connection sky130_fd_sc_hd__diode_2 ANTENNA_360 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_361 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_362 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_363 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_364 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_365 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_366 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_367 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_368 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_369 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_370 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_371 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_372 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_373 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_374 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_375 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_376 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_377 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_378 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_379 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_380 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_381 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_382 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_383 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_384 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_385 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_386 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_387 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_388 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_389 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_390 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_391 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA_392 (.DIODE(net37), sky130_fd_sc_hd__diode_2 ANTENNA__152__A_N (.DIODE(net37), sky130_fd_sc_hd__nand2b_1 152 (.A_N(net37), ANETENNA setting in config.tcl is as below. (I use original config.json for this try.) set ::env(ANTENNA_CHECK_CURRENT_DEF) "/home/harada/Project/011_OpenLane/caravel_test_001/openlane/user_proj_example/runs/24_04_03_17_54/tmp/signoff/38-user_proj_example.p.def" set ::env(ANTENNA_VIOLATOR_LIST) "/home/harada/Project/011_OpenLane/caravel_test_001/openlane/user_proj_example/runs/24_04_03_17_54/reports/signoff/43-antenna_violators.rpt" set ::env(GRT_REPAIR_ANTENNAS) "1" set ::env(HEURISTIC_ANTENNA_INSERTION_MODE) "source" set ::env(HEURISTIC_ANTENNA_THRESHOLD) "110" set ::env(USE_ARC_ANTENNA_CHECK) "1" How can I fix max fanout violation?
m
@Yomei Harada this might be an #openroad question. @Matt Liberty it appears that the fanout limit is being exceeded because the count includes antenna diodes. Does openroad intentionally count diodes in the fanout calculation?
m
Yes diodes are excluded. I'll repeat what I've said before - I don't think max fanout is useful after synthesis is over and max cap/slew should be used thereafter
y
@Mitch Bailey, @Matt Liberty Thank you for your answers. I understood we can ignore antenna connection to count fanout violation. I summarize the results as below. 〇How to ignore fanout violation in run_?/reports/signoff/?-rcx_sta.checks.rp (1)Count how much diodes the pins with fanout error connects. (2)Substract diode count from "Fanout" value. (3)If substracted value < "Limit" value, we can ignore. 〇Example Pin Limit Fanout Slack --------------------------------------------------------- input37/X 16 35 -19 (VIOLATED) 〇Check (1)input37/X connects 35 pins(=Fanout). (2)34/35 pins are diode from netlist. (3)35 - 34 = 1 < 16(=Limit) Fanout violation for input37/X can be ignored.