Peter Herrmann
10/20/2023, 4:47 PMsram.sram_blocks[n].sram1/vssd1
and sram.sram_blocks[n].sram1/vccd1
for each SRAM. I've routed vssd1
and vccd1
to the instances in my verilog source using ``ifdef USE_POWER_PINS` guards and added _"FP_PDN_MACRO_HOOKS"_: ["sram.sram_blocks.* vccd1 vssd1 vccd1 vssd1"],
to my config.json. Can anyone see what I'm doing wrong with the power nets?
Number of nets: 68707 **Mismatch** |Number of nets: 68683 **Mismatch**
Net: sram.sram_blocks\[0\].sram1/vssd1 |(no matching net)
Net: sram.sram_blocks\[5\].sram1/vssd1 |(no matching net)
Net: sram.sram_blocks\[1\].sram1/vccd1 |(no matching net)
Net: soc_6530/HI |(no matching net)
Net: soc_6528/HI |(no matching net)
Net: sram.sram_blocks\[11\].sram1/vccd1 |(no matching net)
Net: sram.sram_blocks\[11\].sram1/vssd1 |(no matching net)
Net: soc_6550/LO |(no matching net)
Net: sram.sram_blocks\[5\].sram1/vccd1 |(no matching net)
Net: soc_6532/HI |(no matching net)
Net: sram.sram_blocks\[9\].sram1/vssd1 |(no matching net)
Net: soc_6525/HI |(no matching net)
Net: soc_6551/LO |(no matching net)
Net: sram.sram_blocks\[7\].sram1/vccd1 |(no matching net)
Net: sram.sram_blocks\[7\].sram1/vssd1 |(no matching net)
Net: sram.sram_blocks\[3\].sram1/vccd1 |(no matching net)
Net: sram.sram_blocks\[3\].sram1/vssd1 |(no matching net)
Net: soc_6561/LO |(no matching net)
Net: sram.sram_blocks\[10\].sram1/vccd1 |(no matching net)
Net: sram.sram_blocks\[10\].sram1/vssd1 |(no matching net)
Net: sram.sram_blocks\[6\].sram1/vccd1 |(no matching net)
Net: sram.sram_blocks\[6\].sram1/vssd1 |(no matching net)
Net: sram.sram_blocks\[2\].sram1/vccd1 |(no matching net)
Net: sram.sram_blocks\[2\].sram1/vssd1 |(no matching net)
(no matching net) |Net: vccd1
(no matching net) |Net: vssd1
Mitch Bailey
10/21/2023, 12:02 AM[copy] thescript [to your] working directory, [add] the line$OPENLANE_ROOT/scripts/openroad/common/pdn_cfg.tcl
Copy codeadd_pdn_connect -grid macro -layers "met3 met4"
[at the end of the script] to specify that metal 3 was horizontal and metal 4 was vertical, and [point] to that script [in] thebyconfig.json
Copy code"FP_PDN_CFG":"dir::pdn_cfg.tcl"
Peter Herrmann
10/21/2023, 1:04 AMPIN vccd1
DIRECTION INOUT ;
USE POWER ;
SHAPE ABUTMENT ;
PORT
LAYER met4 ;
RECT 4.76 4.76 6.5 411.78 ;
LAYER met4 ;
RECT 676.6 4.76 678.34 411.78 ;
LAYER met3 ;
RECT 4.76 410.04 678.34 411.78 ;
LAYER met3 ;
RECT 4.76 4.76 678.34 6.5 ;
END
END vccd1
PIN vssd1
DIRECTION INOUT ;
USE GROUND ;
SHAPE ABUTMENT ;
PORT
LAYER met4 ;
RECT 680.0 1.36 681.74 415.18 ;
LAYER met4 ;
RECT 1.36 1.36 3.1 415.18 ;
LAYER met3 ;
RECT 1.36 1.36 681.74 3.1 ;
LAYER met3 ;
RECT 1.36 413.44 681.74 415.18 ;
END
END vssd1
Mitch Bailey
10/21/2023, 1:31 AMPeter Herrmann
10/21/2023, 2:40 AMMitch Bailey
10/21/2023, 9:37 AMconfig.json
file?Peter Herrmann
10/21/2023, 5:40 PMconfig.json
uses a regex wildcard. I thought this might be an issue so I also did a run with the SRAMs instantiated individually with explicit names and listed them all out in `config.json`(as seen below), but the results were identical.
"FP_PDN_MACRO_HOOKS": "sram.sram0 vccd1 vssd1 vccd1 vssd1, sram.sram1 vccd1 vssd1 vccd1 vssd1, sram.sram2 vccd1 vssd1 vccd1 vssd1, sram.sram3 vccd1 vssd1 vccd1 vssd1, sram.sram4 vccd1 vssd1 vccd1 vssd1, sram.sram5 vccd1 vssd1 vccd1 vssd1, sram.sram6 vccd1 vssd1 vccd1 vssd1, sram.sram7 vccd1 vssd1 vccd1 vssd1, sram.sram8 vccd1 vssd1 vccd1 vssd1, sram.sram9 vccd1 vssd1 vccd1 vssd1, sram.sram10 vccd1 vssd1 vccd1 vssd1, sram.sram11 vccd1 vssd1 vccd1 vssd1",
Mitch Bailey
10/22/2023, 5:22 PMconfig.json
file.
"SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
Peter Herrmann
10/22/2023, 5:26 PMPeter Herrmann
10/22/2023, 5:29 PMMitch Bailey
10/22/2023, 6:14 PMverilog/gl/soc.v
file? Also, there might be a clue in the pdn logs (find openlane/soc -name '*pdn*'
).Peter Herrmann
10/22/2023, 6:50 PM[WARNING PSM-0030] VSRC location at (139.780um, 90.000um) and size 10.000um, is not located on an existing power stripe node. Moving to closest node at (175.440um, 89.760um).
Looking at the layout, the strips seem to stop at the edge of the macro and do not route in:Mitch Bailey
10/22/2023, 6:58 PMMitch Bailey
10/22/2023, 7:05 PMSYNTH_BUFFERING
is 0
. I’m no expert, but this might lead to timing problems.Peter Herrmann
10/22/2023, 7:11 PMSYNTH_BUFFERING
at 1
), will update when that finishes. Thanks!Mitch Bailey
10/22/2023, 7:20 PMsoc
into user_project_wrapper
. You’ve already used met5
.
You may want to eliminate the soc
level by renaming it to user_project_wrapper
and making sure all the pins are matched to user_project_wrapper
.Peter Herrmann
10/26/2023, 3:32 AM