Leo Moser
11/07/2023, 1:01 PMOEB
check in the precheck. I double checked that all io_oeb
signals are connected.
When I run it for my design, it fails with the following:
ERROR OEB FAILED, stat=5, see /path/to/precheck_results/07_NOV_2023___07_23_42/logs/OEB_check.log
The last lines in the log file are:
...
ERROR: No model match xpredec0_512x8m81/MX1 M pfet_03v3 ad=1.01p pd=4.6u as=0.439p ps=2.22u w=1.7u l=0.6u
ERROR: No model match xpredec0_512x8m81/MX2 M pfet_03v3 ad=0.439p pd=2.22u as=1.01p ps=4.6u w=1.7u l=0.6u
ERROR: No model match xpredec0_512x8m81/MX3 M pfet_03v3 ad=0.439p pd=2.22u as=0.448p ps=2.23u w=1.7u l=0.6u
Missing models
nfet_03v3 M
pfet_03v3 M
ERROR: Model file problem
[?1034h** Stage 1/7: Enter command ?> c 6
> c 6
continuing for 6 step(s)
ERROR: skipped due to problems in model/power/fuse files
gpio | in | out | analog | oeb min/sim/max | Message
Is this a problem on my end or with the precheck? @Mitch Bailey I think this is your area of expertise, I would appreciate any help.Leo Moser
11/07/2023, 1:03 PMgfmpw-1b
):Leo Moser
11/07/2023, 1:04 PMOEB
passes and only prints a warning:
WARNING ERC CHECK FAILED, stat=4, see /home/leo/Dokumente/workspace-gf-mpw-1/leosoc-gfmpw-1/precheck_results/07_NOV_2023___12_09_05/logs/OEB_check.log
The content of the log file is the same as before.Leo Moser
11/07/2023, 1:06 PMgfmpw-1c
Tim Edwards
11/07/2023, 2:25 PMTim Edwards
11/07/2023, 2:27 PMLeo Moser
11/07/2023, 2:32 PMLeo Moser
11/07/2023, 2:36 PMTim Edwards
11/07/2023, 3:14 PMTim Edwards
11/07/2023, 3:15 PMTim Edwards
11/07/2023, 3:17 PMLeo Moser
11/07/2023, 3:37 PMtmp/
folder of the precheck I see a mention of user_proj_example
which I do not use anymore, so maybe I need to update the lvs_config.json
also for the OEB check? I am currently not running LVS because of the SRAM and the issue noted above: https://open-source-silicon.slack.com/archives/C03R1GRP9LG/p1699021310239599Mitch Bailey
11/07/2023, 9:37 PMX
device mosfets to M
devices.
It looks like the problem is that there are 3.3V devices being extracted when only 6V devices should exist. This is probably caused by what magic considers to be invalid device structures in the sram. Implants are added at higher hierarchies. magic can not correctly extract cross hierarchy devices - all the layers for a device must exist at the same hierarchy. The solution is to flatten all the hierarchy of the srams. This is done with the hierarchical lvs_config.json
files.
Currently, only the 256x8 version of the lvs_config.json
file is in mpw_precheck. Here’s the 512x8 version.
{
"EXTRACT_FLATGLOB": [
"*018SRAM_*",
"*nmos_*",
"*pmos_*",
"*pmoscap*",
"*$$*",
"*M?_M*_*",
"*M?_?ACTIVE*_*",
"*M?_PSUB*_*",
"*M?_POLY*_*",
"*M?_NWEL*_*",
"*via1_*",
"*ypass_gate*",
"*power_route*",
"*alatch*",
"*Cell_array*",
"*dcap_*",
"*new_dummyrow*",
"*dummy*",
"*mux821_*",
"*strapx2b_bndry*",
"*predec?_*",
"*rarray*",
"*prexdec_top*",
"*xdec_*",
"*xdec8_*",
"*xdec32_*",
"*xdec64_*",
"*din_*",
"*sacntl_*",
"*sa_*",
"*m2_saout*",
"*outbuf_oe*",
"*wen_wm1_*",
"*saout_*",
"*m2m3_*",
"*wen_*",
"*gen_*",
"*G_ring_*",
"*x8M8W_PWR_*",
"*power_*",
"*control_*",
"*GF018_*x8M8WM1_*",
"*col_*",
"*rcol4_*",
"*lcol4_*"
],
"EXTRACT_ABSTRACT": [
""
],
"LVS_FLATTEN": [
""
],
"LVS_NOFLATTEN": [
""
],
"LVS_IGNORE": [
""
],
"LVS_SPICE_FILES": [
"$PDK_ROOT/$PDK/libs.ref/gf180mcu_fd_ip_sram/spice/gf180mcu_fd_ip_sram__sram512x8m8wm1.spice"
],
"LVS_VERILOG_FILES": [
""
]
}
If you save this as lvs/lvs_config.sram512x8m8wm1.json
you can reference it in your lvs/user_project_wrapper/lvs_config.json
file like this
"STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
"INCLUDE_CONFIGS": [
"$LVS_ROOT/tech/$PDK/lvs_config.base.json",
"$LVS_ROOT/tech/$PDK/lvs_config.sram512x8m8wm1.json"
],
"TOP_SOURCE": "user_project_wrapper",
"TOP_LAYOUT": "$TOP_SOURCE",
"EXTRACT_FLATGLOB": [
""
],
"EXTRACT_ABSTRACT": [
""
],
"LVS_FLATTEN": [
""
],
"LVS_NOFLATTEN": [
""
],
"LVS_IGNORE": [
""
],
"LVS_SPICE_FILES": [
""
],
"LVS_VERILOG_FILES": [
"$UPRJ_ROOT/verilog/gl/user_proj_example.v",
"$UPRJ_ROOT/verilog/gl/$TOP_SOURCE.v"
],
"LAYOUT_FILE": "$UPRJ_ROOT/gds/$TOP_LAYOUT.gds"
}
Mitch Bailey
11/07/2023, 9:39 PMTim Edwards
11/08/2023, 12:39 AMLeo Moser
11/08/2023, 8:03 AMmpw_precheck/checks/be_checks/tech/gf180mcuD
there are already two files lvs_config.sram256x8m8wm1.json
and lvs_config.sram512x8m8wm1.json
with slightly less entries in EXTRACT_FLATGLOB
and they are referencing a .cdl
file in LVS_SPICE_FILES
. I don't know if that has any relevance or whether they are even used, but just so you know.Mitch Bailey
11/08/2023, 8:21 AMLeo Moser
11/08/2023, 1:54 PM> q
gpio | in | out | analog | oeb min/sim/max | Message
35 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
26 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
17 | 4 | 2 | | vss/ / |
4 | | 1 | | / / | ERROR: oeb must have possible low for output
36 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
27 | 4 | 2 | | vss/ / |
18 | 4 | 2 | | vss/ / |
5 | | 2 | | / / | ERROR: oeb must have possible low for output
37 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
28 | 4 | 2 | | vss/ / |
19 | 4 | 2 | | vss/ / |
6 | | 2 | | / / | ERROR: oeb must have possible low for output
29 | 4 | 2 | | vss/ / |
7 | 4 | | | / / |
8 | | 2 | | / / | ERROR: oeb must have possible low for output
9 | 4 | | | / / |
10 | | 2 | | / / | ERROR: oeb must have possible low for output
20 | 4 | 2 | | vss/ / |
11 | 4 | | | / / |
30 | 4 | 2 | | vss/ / |
21 | 4 | 2 | | vss/ / |
12 | | 2 | | vss/ / |
31 | 4 | 2 | | vss/ / |
22 | 4 | 2 | | vss/ / |
13 | | | | vss/ / |
0 | | 1 | | / / | ERROR: oeb must have possible low for output
32 | 4 | 2 | | vss/ / |
23 | 4 | 2 | | vss/ / |
14 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
1 | | 1 | | / / | ERROR: oeb must have possible low for output
33 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
24 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
15 | 4 | 2 | | vss/ / |
2 | | 1 | | / / | ERROR: oeb must have possible low for output
34 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
25 | 4 | 2 | | / / | ERROR: oeb must have possible low for output
16 | 4 | 2 | | vss/ / |
3 | | 1 | | / / | ERROR: oeb must have possible low for output
The gpio column is the number of io_out/io_in/io_oeb, correct? What does the in and out column mean?
For some of my gpios the error makes sense I think: I have some I/Os that I use only for input, therefore io_oeb is tied high and io_out is set to zero. But the oeb check expects for all gpios with a io_out value that io_oeb can become low, right? This would mean I need to set io_out as not connected. But if I do not assign any value to io_out
than I get e.g.: Warning: Wire user_project_wrapper.\io_out [11] is used but has no driver.
during synthesis.
These are my connections:
/*--------------------------------------*/
/* User project is instantiated here */
/*--------------------------------------*/
// Not used
assign io_out[4:0] = 5'b00000;
assign io_oeb[4:0] = 5'b11111;
// SPI
assign io_oeb[8:5] = 4'b0100;
assign io_out[7] = 1'b0;
// UART0
assign io_oeb[10:9] = 2'b01;
assign io_out[9] = 1'b0;
// UART1
assign io_oeb[12:11] = 2'b01;
assign io_out[11] = 1'b0;
// Blinky
assign io_oeb[13] = 1'b0;
// GPIO - use 24 bits
wire [31:0] gpio0_in;
wire [31:0] gpio0_out;
wire [31:0] gpio0_oe;
assign io_oeb[37:14] = ~gpio0_oe[23:0];
assign io_out[37:14] = gpio0_out[23:0];
assign gpio0_in = {8'b00000000, io_in[37:14]};
leosoc leosoc_i (
`ifdef USE_POWER_PINS
.vdd(vdd), // User area 1 1.8V power
.vss(vss), // User area 1 digital ground
`endif
.clk (wb_clk_i),
.reset (wb_rst_i),
.uart0_rx (io_in[9]),
.uart0_tx (io_out[10]),
.uart1_rx (io_in[11]),
.uart1_tx (io_out[12]),
.gpio0_in (gpio0_in),
.gpio0_out (gpio0_out),
.gpio0_oe (gpio0_oe),
.blink (io_out[13]),
// SPI signals
.sck (io_out[5]),
.sdo (io_out[6]),
.sdi (io_in[7]),
.cs (io_out[8])
);
Mitch Bailey
11/08/2023, 2:51 PMin
is the io_in
connection, out
is the io_out
connection.
If this is your user_project_wrapper
level, you probably don’t want to run synthesis at this level.
You might try adding a tie_low and tie_high pin to leosoc and putting the assign statement there.
Then you can connect the actual top level io_out
and io_oeb
to those signals as appropriate.
It bothers be that your vdd signal is not showing up. Is it shorted? You can check precheck_results/<tag>/tmp/ext.log
Leo Moser
11/08/2023, 2:57 PMuser_project_wrapper
? Are there issues with the precheck? Because with gfmpw-1b I was even able to successfully finish the tapeout job.
This is how my design currently looks:Leo Moser
11/08/2023, 2:59 PMLeo Moser
11/08/2023, 3:00 PMTim Edwards
11/08/2023, 3:21 PMMitch Bailey
11/08/2023, 3:22 PMuser_proj_example
equivalent block, and use SYNTH_ELABORATE_ONLY
on user_project_wrapper
to just do the connections. Since you’re not placing any standard cell rows, you won’t have adjustments for timing or be able to tie anything.
@Tim Edwards that’s in the rtl. We need to check how that’s being synthesize in the gl.Leo Moser
11/08/2023, 3:27 PMuser_project_wrapper
. For this I enabled the placement of standard cell rows. The sea of gates you see in the picture is just that.Leo Moser
11/08/2023, 3:29 PMconfig.json
:
{
"PDK": "gf180mcuD",
"DESIGN_NAME": "user_project_wrapper",
"STD_CELL_LIBRARY": "gf180mcu_fd_sc_mcu7t5v0",
"VERILOG_FILES": [
"dir::../../verilog/rtl/defines.v",
"dir::../../verilog/rtl/user_project_wrapper.v",
"dir::../../verilog/rtl/leorv32/rtl/leorv32_pkg.sv",
"dir::../../verilog/rtl/leorv32/rtl/leorv32.sv",
"dir::../../verilog/rtl/soc/rtl/leosoc.sv",
"dir::../../verilog/rtl/soc/rtl/core_wrapper.sv",
"dir::../../verilog/rtl/cache/rtl/direct_mapped_cache.sv",
"dir::../../verilog/rtl/sram/rtl/sram_gf180.sv",
"dir::../../verilog/rtl/arbiter/rtl/arbiter.sv",
"dir::../../verilog/rtl/uart/rtl/uart_rx.sv",
"dir::../../verilog/rtl/uart/rtl/uart_tx.sv",
"dir::../../verilog/rtl/uart/rtl/peripheral_uart.sv",
"dir::../../verilog/rtl/gpio/rtl/peripheral_gpio.sv",
"dir::../../verilog/rtl/peripheral_trng/rtl/peripheral_trng.sv",
"dir::../../verilog/rtl/spi_flash/rtl/spi_flash.sv",
"dir::../../verilog/rtl/util/rtl/synchronizer.sv"
],
"CLOCK_PORT": "wb_clk_i",
"CLOCK_PERIOD": 25,
"RUN_CTS": 1,
"MACRO_PLACEMENT_CFG": "dir::macro.cfg",
"VERILOG_FILES_BLACKBOX": [
"dir::../../verilog/gl/gf180_ram_512x8_wrapper.v",
"dir::../../verilog/gl/trng_1x3.v",
"dir::../../verilog/gl/trng_1x5.v",
"dir::../../verilog/gl/trng_1x7.v",
"dir::../../verilog/gl/trng_2x3.v",
"dir::../../verilog/gl/trng_2x5.v",
"dir::../../verilog/gl/trng_2x7.v",
"dir::../../verilog/gl/trng_8x3.v",
"dir::../../verilog/gl/trng_8x5.v",
"dir::../../verilog/gl/trng_8x7.v",
"dir::../../verilog/gl/trng_32x3.v",
"dir::../../verilog/gl/trng_32x5.v",
"dir::../../verilog/gl/trng_32x7.v",
"dir::../../verilog/gl/trng_128x3.v",
"dir::../../verilog/gl/trng_128x5.v",
"dir::../../verilog/gl/trng_128x7.v"
],
"EXTRA_LEFS": [
"dir::../../lef/gf180_ram_512x8_wrapper.lef",
"dir::../../lef/trng_1x3.lef",
"dir::../../lef/trng_1x5.lef",
"dir::../../lef/trng_1x7.lef",
"dir::../../lef/trng_2x3.lef",
"dir::../../lef/trng_2x5.lef",
"dir::../../lef/trng_2x7.lef",
"dir::../../lef/trng_8x3.lef",
"dir::../../lef/trng_8x5.lef",
"dir::../../lef/trng_8x7.lef",
"dir::../../lef/trng_32x3.lef",
"dir::../../lef/trng_32x5.lef",
"dir::../../lef/trng_32x7.lef",
"dir::../../lef/trng_128x3.lef",
"dir::../../lef/trng_128x5.lef",
"dir::../../lef/trng_128x7.lef"
],
"EXTRA_GDS_FILES": [
"dir::../../gds/gf180_ram_512x8_wrapper.gds",
"dir::../../gds/trng_1x3.gds",
"dir::../../gds/trng_1x5.gds",
"dir::../../gds/trng_1x7.gds",
"dir::../../gds/trng_2x3.gds",
"dir::../../gds/trng_2x5.gds",
"dir::../../gds/trng_2x7.gds",
"dir::../../gds/trng_8x3.gds",
"dir::../../gds/trng_8x5.gds",
"dir::../../gds/trng_8x7.gds",
"dir::../../gds/trng_32x3.gds",
"dir::../../gds/trng_32x5.gds",
"dir::../../gds/trng_32x7.gds",
"dir::../../gds/trng_128x3.gds",
"dir::../../gds/trng_128x5.gds",
"dir::../../gds/trng_128x7.gds"
],
"EXTRA_LIBS": [
"dir::../../lib/gf180_ram_512x8_wrapper.lib",
"dir::../../lib/trng_1x3.lib",
"dir::../../lib/trng_1x5.lib",
"dir::../../lib/trng_1x7.lib",
"dir::../../lib/trng_2x3.lib",
"dir::../../lib/trng_2x5.lib",
"dir::../../lib/trng_2x7.lib",
"dir::../../lib/trng_8x3.lib",
"dir::../../lib/trng_8x5.lib",
"dir::../../lib/trng_8x7.lib",
"dir::../../lib/trng_32x3.lib",
"dir::../../lib/trng_32x5.lib",
"dir::../../lib/trng_32x7.lib",
"dir::../../lib/trng_128x3.lib",
"dir::../../lib/trng_128x5.lib",
"dir::../../lib/trng_128x7.lib"
],
"EXTRA_SPEFS": [
"gf180_ram_512x8_wrapper",
"dir::../../spef/multicorner/gf180_ram_512x8_wrapper.min.spef",
"dir::../../spef/multicorner/gf180_ram_512x8_wrapper.nom.spef",
"dir::../../spef/multicorner/gf180_ram_512x8_wrapper.max.spef",
"trng_1x3",
"dir::../../spef/multicorner/trng_1x3.min.spef",
"dir::../../spef/multicorner/trng_1x3.nom.spef",
"dir::../../spef/multicorner/trng_1x3.max.spef",
"trng_1x5",
"dir::../../spef/multicorner/trng_1x5.min.spef",
"dir::../../spef/multicorner/trng_1x5.nom.spef",
"dir::../../spef/multicorner/trng_1x5.max.spef",
"trng_1x7",
"dir::../../spef/multicorner/trng_1x7.min.spef",
"dir::../../spef/multicorner/trng_1x7.nom.spef",
"dir::../../spef/multicorner/trng_1x7.max.spef",
"trng_2x3",
"dir::../../spef/multicorner/trng_2x3.min.spef",
"dir::../../spef/multicorner/trng_2x3.nom.spef",
"dir::../../spef/multicorner/trng_2x3.max.spef",
"trng_2x5",
"dir::../../spef/multicorner/trng_2x5.min.spef",
"dir::../../spef/multicorner/trng_2x5.nom.spef",
"dir::../../spef/multicorner/trng_2x5.max.spef",
"trng_2x7",
"dir::../../spef/multicorner/trng_2x7.min.spef",
"dir::../../spef/multicorner/trng_2x7.nom.spef",
"dir::../../spef/multicorner/trng_2x7.max.spef",
"trng_8x3",
"dir::../../spef/multicorner/trng_8x3.min.spef",
"dir::../../spef/multicorner/trng_8x3.nom.spef",
"dir::../../spef/multicorner/trng_8x3.max.spef",
"trng_8x5",
"dir::../../spef/multicorner/trng_8x5.min.spef",
"dir::../../spef/multicorner/trng_8x5.nom.spef",
"dir::../../spef/multicorner/trng_8x5.max.spef",
"trng_8x7",
"dir::../../spef/multicorner/trng_8x7.min.spef",
"dir::../../spef/multicorner/trng_8x7.nom.spef",
"dir::../../spef/multicorner/trng_8x7.max.spef",
"trng_32x3",
"dir::../../spef/multicorner/trng_32x3.min.spef",
"dir::../../spef/multicorner/trng_32x3.nom.spef",
"dir::../../spef/multicorner/trng_32x3.max.spef",
"trng_32x5",
"dir::../../spef/multicorner/trng_32x5.min.spef",
"dir::../../spef/multicorner/trng_32x5.nom.spef",
"dir::../../spef/multicorner/trng_32x5.max.spef",
"trng_32x7",
"dir::../../spef/multicorner/trng_32x7.min.spef",
"dir::../../spef/multicorner/trng_32x7.nom.spef",
"dir::../../spef/multicorner/trng_32x7.max.spef",
"trng_128x3",
"dir::../../spef/multicorner/trng_128x3.min.spef",
"dir::../../spef/multicorner/trng_128x3.nom.spef",
"dir::../../spef/multicorner/trng_128x3.max.spef",
"trng_128x5",
"dir::../../spef/multicorner/trng_128x5.min.spef",
"dir::../../spef/multicorner/trng_128x5.nom.spef",
"dir::../../spef/multicorner/trng_128x5.max.spef",
"trng_128x7",
"dir::../../spef/multicorner/trng_128x7.min.spef",
"dir::../../spef/multicorner/trng_128x7.nom.spef",
"dir::../../spef/multicorner/trng_128x7.max.spef"
],
"FP_PDN_MACRO_HOOKS": [
"leosoc_i.wram.*sram512x8_i0 vdd vss vdd vss",
"leosoc_i.wram.*sram512x8_i1 vdd vss vdd vss",
"leosoc_i.wram.*sram512x8_i2 vdd vss vdd vss",
"leosoc_i.wram.*sram512x8_i3 vdd vss vdd vss",
"leosoc_i.peripheral_trng_i.trng.* vdd vss vdd vss"
],
"PL_BASIC_PLACEMENT": 0,
"PL_TARGET_DENSITY": 0.3,
"ROUTING_CORES": 14,
"MAX_FANOUT_CONSTRAINT": 4,
"#QUIT_ON_SYNTH_CHECKS": 0,
"#FP_PDN_CHECK_NODES": 0,
"#RUN_CVC": 0,
"#RUN_LINTER": 0,
"RUN_LVS": 0,
"SYNTH_READ_BLACKBOX_LIB": 1,
"FP_PDN_ENABLE_RAILS": 0,
"MAGIC_ZEROIZE_ORIGIN": 0,
"FP_SIZING": "absolute",
"DIE_AREA": "0 0 2980.2 2980.2",
"CORE_AREA": "12 12 2968.2 2968.2",
"FP_PIN_ORDER_CFG": "dir::pin_order.cfg",
"UNIT": 2.4,
"FP_IO_VEXTEND": "expr::2 * $UNIT",
"FP_IO_HEXTEND": "expr::2 * $UNIT",
"FP_IO_VLENGTH": "expr::$UNIT",
"FP_IO_HLENGTH": "expr::$UNIT",
"FP_IO_VTHICKNESS_MULT": 4,
"FP_IO_HTHICKNESS_MULT": 4,
"FP_PDN_CORE_RING": 1,
"FP_PDN_CORE_RING_VWIDTH": 3.1,
"FP_PDN_CORE_RING_HWIDTH": 3.1,
"FP_PDN_CORE_RING_VOFFSET": 14,
"FP_PDN_CORE_RING_HOFFSET": 16,
"FP_PDN_CORE_RING_VSPACING": 1.7,
"FP_PDN_CORE_RING_HSPACING": 1.7,
"FP_PDN_HOFFSET": 5,
"FP_PDN_HPITCH_MULT": 1,
"FP_PDN_HPITCH": "expr::60 + $FP_PDN_HPITCH_MULT * 30",
"FP_PDN_VWIDTH": 3.1,
"FP_PDN_HWIDTH": 3.1,
"FP_PDN_VSPACING": "expr::5 * $FP_PDN_CORE_RING_VWIDTH",
"FP_PDN_HSPACING": 26.9,
"VDD_NETS": [
"vdd"
],
"GND_NETS": [
"vss"
],
"SYNTH_USE_PG_PINS_DEFINES": "USE_POWER_PINS",
"FP_DEF_TEMPLATE": "dir::fixed_dont_change/user_project_wrapper.def",
"BASE_SDC_FILE": "dir::base_user_project_wrapper.sdc",
"SIGNOFF_SDC_FILE": "dir::signoff.sdc"
}
Leo Moser
11/08/2023, 3:31 PMSYNTH_READ_BLACKBOX_LIB
could also be removed again. I had this initially because I instantiated some gates directly which are now in a macro.Leo Moser
11/08/2023, 3:39 PMio_oeb
is indeed connected to tie cells:
$ grep -n 'io_oeb' user_project_wrapper.v
11: io_oeb,
31: output [37:0] io_oeb;
299016: .Z(io_oeb[14]),
299022: .Z(io_oeb[15]),
299028: .Z(io_oeb[16]),
299034: .Z(io_oeb[17]),
299040: .Z(io_oeb[18]),
299046: .Z(io_oeb[19]),
299052: .Z(io_oeb[20]),
299058: .Z(io_oeb[21]),
299064: .Z(io_oeb[22]),
299070: .Z(io_oeb[23]),
299076: .Z(io_oeb[24]),
299082: .Z(io_oeb[25]),
299088: .Z(io_oeb[26]),
299094: .Z(io_oeb[27]),
299100: .Z(io_oeb[28]),
299106: .Z(io_oeb[29]),
299112: .Z(io_oeb[30]),
299118: .Z(io_oeb[31]),
299124: .Z(io_oeb[32]),
299130: .Z(io_oeb[33]),
299136: .Z(io_oeb[34]),
299142: .Z(io_oeb[35]),
299148: .Z(io_oeb[36]),
299154: .Z(io_oeb[37]),
983668: assign io_oeb[0] = net348;
983669: assign io_oeb[10] = net118;
983670: assign io_oeb[11] = net355;
983671: assign io_oeb[12] = net119;
983672: assign io_oeb[13] = net120;
983673: assign io_oeb[1] = net349;
983674: assign io_oeb[2] = net350;
983675: assign io_oeb[3] = net351;
983676: assign io_oeb[4] = net352;
983677: assign io_oeb[5] = net115;
983678: assign io_oeb[6] = net116;
983679: assign io_oeb[7] = net353;
983680: assign io_oeb[8] = net117;
983681: assign io_oeb[9] = net354;
$ grep -n 'net348' user_project_wrapper.v
24769: wire net348;
205481: gf180mcu_fd_sc_mcu7t5v0__tieh user_project_wrapper_348 (.Z(net348),
983668: assign io_oeb[0] = net348;
$ grep -n 'net349' user_project_wrapper.v
21406: wire net349;
204275: gf180mcu_fd_sc_mcu7t5v0__tieh user_project_wrapper_349 (.Z(net349),
983673: assign io_oeb[1] = net349;
Mitch Bailey
11/08/2023, 5:58 PMFP_PDN_ENABLE_RAILS
is set to zero. I bet none of your standard cell row nwells are connected to power! Can you check the gds?Leo Moser
11/08/2023, 6:34 PMuser_project_wrapper
. I started OpenLane with that change, let's see if that was it 👍Leo Moser
11/08/2023, 9:21 PM