Hi all, If I don't use the voltage and ground net...
# caravel
e
Hi all, If I don't use the voltage and ground nets "vccd2", "vdda1", "vdda2", "vssd2", "vssa1", "vssa2" Can I delete them from the template and send them to manufacture?
m
@Emilio Baungarten all 8 power/ground nets in the outer power ring are required in precheck for caravel/caravan, but I don’t think you need the unused ones in the actual power mesh over the user project area. However, I’m not sure how you go about creating that type of layout.
e
I am creating an FPGA with as much logic as the user area allow me, I have blocks that are right in the middle of the power grid and vccd1 cant be conectes to it , if I can't remove the other volt and ground connections, how could I connect those Macros that are right in the middle. I can't move them higher or lower as it would clash with other macros. (I am out of my office, so I can show you a picture of the whole system)
m
Have you looked into openframe? I think there were some projects that just used vccd1 and vssd1. I understand what you want to do. @Kareem Farid Any ideas how to automate this?
m
I have turned off unused ones by editing pdn tcl script,, then I used a tighter grid to catch all the little blocks
👍 2
e
Thanks for your answers I will check the pdn tcl script.
I have an error with the
FP_PDN_UPPER_LAYER
and
FP_PDN_LOWER_LAYER
variables. is correctly if i set those as:
set ::env(FP_PDN_UPPER_LAYER) "met5"
set ::env(FP_PDN_LOWER_LAYER) "met4"
because in the user area metal 4 and 5 are used to generate voltage and ground connections
m
If you’ve modified your
pdn_cfg.tcl
, can you share it? Can you share your
config.json
or
config.tcl
also?
e
Here are the files.
m
I don’t see
FP_PDN_UPPER_LAYER
or
FP_PDN_LOWER_LAYER
in your config.json file. Do these variables exist in the
openlane/user_project_wrapper/runs/user_project_wrapper/config.tcl
file?
e
I define the variables in the
pdn_cfg.tcl
file, lines 46 and 47.
m
Can you try defining the variables in the
config.json
file? The error is occurring in the
$OPENLANE_ROOT/scripts/openroad/pdn.tcl
file, so they need to be defined before that’s called.
e
An apology, maybe I didn't explain the problem well. The error occurs when I don't define manually the variables FP_PDN_UPPER_LAYER and FP_PDN_LOWER_LAYER, to solve the error I define those variables with met5 and met4, my question is if that is correct? and if can i send to manufactura the system with those configurations?
m
Sorry, I misunderstood your question. You’re saying by adding the definitions to the
pdn_cfg.tcl
file, you’re able to complete the flow. I wouldn’t recommend that, but if your design passes device level LVS, you should be ok. From what I can tell… Both of those variables should already be defined in
$PDK_ROOT/$PDK/libs.tech/openlane/config.tcl
.
Copy code
set ::env(FP_PDN_LOWER_LAYER) met4
set ::env(FP_PDN_UPPER_LAYER) met5
I don’t think you need to override the values with the same values. Can you
grep FP_PDN openlane/user_project_wrapper/runs/user_project_wrapper/config.tcl
?
e
Looking in the .tcl file of the direction
$PDK_ROOT/$PDK/libs.tech/openlane/config.tcl
the variables aren't defined. (attached tcl file) the output of the grep
FP_PDN
is:
Copy code
~/Desktop/Caravel_FPGA$ grep FP_PDN openlane/user_project_wrapper/runs/user_project_wrapper/config.tcl
set ::env(FP_PDN_AUTO_ADJUST) "1"
set ::env(FP_PDN_CFG) "/home/baungarten2/Desktop/Caravel_FPGA/openlane/user_project_wrapper/pdn_cfg.tcl"
set ::env(FP_PDN_CHECK_NODES) "0"
set ::env(FP_PDN_CORE_RING) "1"
set ::env(FP_PDN_CORE_RING_HOFFSET) "12.45"
set ::env(FP_PDN_CORE_RING_HSPACING) "1.7"
set ::env(FP_PDN_CORE_RING_HWIDTH) "3.1"
set ::env(FP_PDN_CORE_RING_VOFFSET) "12.45"
set ::env(FP_PDN_CORE_RING_VSPACING) "1.7"
set ::env(FP_PDN_CORE_RING_VWIDTH) "3.1"
set ::env(FP_PDN_ENABLE_GLOBAL_CONNECTIONS) "1"
set ::env(FP_PDN_ENABLE_MACROS_GRID) "1"
set ::env(FP_PDN_ENABLE_RAILS) "0"
set ::env(FP_PDN_HOFFSET) "1"
set ::env(FP_PDN_HORIZONTAL_HALO) "10"
set ::env(FP_PDN_HORIZONTAL_LAYER) "met5"
set ::env(FP_PDN_HPITCH) "30"
set ::env(FP_PDN_HSPACING) "3.1"
set ::env(FP_PDN_HWIDTH) "3.1"
set ::env(FP_PDN_IRDROP) "1"
set ::env(FP_PDN_MACRO_HOOKS) "grid.* vccd1 vssd1 vdd vss, sb.* vccd1 vssd1 vdd vss, cbx.* vccd1 vssd1 vdd vss, cby.* vccd1 vssd1 vdd vss"
set ::env(FP_PDN_RAIL_LAYER) "met1"
set ::env(FP_PDN_RAIL_OFFSET) "0"
set ::env(FP_PDN_RAIL_WIDTH) "0.48"
set ::env(FP_PDN_SKIPTRIM) "0"
set ::env(FP_PDN_VERTICAL_HALO) "10"
set ::env(FP_PDN_VERTICAL_LAYER) "met4"
set ::env(FP_PDN_VOFFSET) "1"
set ::env(FP_PDN_VPITCH) "180"
set ::env(FP_PDN_VSPACING) "15.5"
set ::env(FP_PDN_VWIDTH) "3.1"
m
What version of the pdk are you using? If you are using volare,
volare ls
, otherwise
cat $PDK_ROOT/$PDK/SOURCES
e
the version of volare is:
open_pdks cd1748bb197f9b7af62a54507de6624e30363943
m
I think I see the problem. Looks like you’re using a newer pdk with an older version of the
pdn_cfg.tcl
. The variable names have changed. Try comparing your modified
pdn_cfg.tcl
to the current version here.