Md Omar Faruque
04/04/2024, 6:44 AMMitch Bailey
04/04/2024, 8:47 AM"FP_PDN_MACRO_HOOKS": ["core_flat vdda1 vssa1 vdda1 vssa1,",
"core_flat vccd1 vssd1 vccd1 vssd1"
],
Mitch Bailey
04/04/2024, 8:48 AMMd Omar Faruque
04/04/2024, 10:36 PMMitch Bailey
04/05/2024, 1:41 AMprecheck_results/04_APR_2024___18_55_58/outputs/reports/soft.report
precheck_results/04_APR_2024___18_55_58/tmp/cvc.error.gz
Md Omar Faruque
04/05/2024, 4:26 AMMd Omar Faruque
04/05/2024, 5:00 AMMitch Bailey
04/05/2024, 7:39 AMCircuit 1: core_flat |Circuit 2: core_flat
---------------------------------------------------------------------------------------------------------------------------------------------------------------------
Net: vssd1 |Net: vssd1
sky130_fd_pr__res_generic_po/(end_a|end_b) = 6 | sky130_fd_pr__res_generic_po/(end_a|end_b) = 6
sky130_fd_pr__nfet_01v8/(1|3) = 21 |
sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 12 |
|
(no matching net) |Net: controller_layout_0.level_shifter_1.vssd1
| sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 4
| sky130_fd_pr__nfet_01v8/(1|3) = 2
|
(no matching net) |Net: controller_layout_2.level_shifter_1.vssd1
| sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 4
| sky130_fd_pr__nfet_01v8/(1|3) = 2
|
(no matching net) |Net: controller_layout_1.level_shifter_1.vssd1
| sky130_fd_pr__nfet_01v8/(1|3) = 2
| sky130_fd_pr__nfet_g5v0d10v5/(1|3) = 4
|
(no matching net) |Net: controller_layout_0.DEMUX_final_0.VSS
| sky130_fd_pr__nfet_01v8/(1|3) = 5
|
(no matching net) |Net: controller_layout_2.DEMUX_final_0.VSS
| sky130_fd_pr__nfet_01v8/(1|3) = 5
|
(no matching net) |Net: controller_layout_1.DEMUX_final_0.VSS
| sky130_fd_pr__nfet_01v8/(1|3) = 5
Mitch Bailey
04/05/2024, 7:42 AManalog_io[16:14]
are not defined in the cvc.power
file. Just to be certain, these are 1.8V input signals and not 3.3V signals, right?Md Omar Faruque
04/05/2024, 5:16 PMMitch Bailey
04/05/2024, 9:56 PManalog_io[16:14]
signals have been buffered using 1.8V devices.
/Xmprj(user_proj_example)/Xinput1 for analog_io[14]
/Xmprj(user_proj_example)/Xinput2 for analog_io[15]
/Xmprj(user_proj_example)/Xinput3 for analog_io[16]
If these are actual analog signals, they probably shouldn’t be buffered.
If they are 3.3V digital signals, you might consider using the io_in_3v3
connection which includes ESD protection.Md Omar Faruque
04/09/2024, 4:28 AMMitch Bailey
04/09/2024, 5:28 AManalog_io[16:14]
when you ran make user_proj_example
.
In the gate level verilog output verilog/gl/user_proj_example.v
, check Xinput1
, Xinput2
, and Xinput3
. I think there is a way to tell openlane to not buffer certain signals. Defining them as inout
in the core_flat
macro might work.
1. For LVS, you can add isosubstrate
in magic around your analog macro to separate vssa1
and vssd1
.
2. This may be what allowed the buffers to be added. LVS shouldn’t be a problem, though.
3. If your core_flat
module has vccd1
and vssd1
pins in the parent verilog and layout, this is correct.Md Omar Faruque
04/09/2024, 7:13 AMMitch Bailey
04/10/2024, 1:35 AMRSZ_DONT_TOUCH
to list nets or instances that should not be buffered.Md Omar Faruque
04/12/2024, 11:30 PMMitch Bailey
04/13/2024, 12:11 AMvccd1
is not connected to core_flat
---------------------------------------------------------------------------------------
Net: vccd1 |Net: vccd1
sky130_fd_sc_hd__tapvpwrvgnd_1/VPWR = 1 | sky130_fd_sc_hd__tapvpwrvgnd_1/VPWR = 1
sky130_fd_sc_hd__decap_6/VPB = 1 | sky130_fd_sc_hd__decap_6/VPB = 1
sky130_fd_sc_hd__decap_6/VPWR = 1 | sky130_fd_sc_hd__decap_6/VPWR = 1
sky130_ef_sc_hd__decap_12/VPB = 1 | sky130_ef_sc_hd__decap_12/VPB = 1
sky130_ef_sc_hd__decap_12/VPWR = 1 | sky130_ef_sc_hd__decap_12/VPWR = 1
sky130_fd_sc_hd__fill_1/VPB = 1 | sky130_fd_sc_hd__fill_1/VPB = 1
sky130_fd_sc_hd__fill_1/VPWR = 1 | sky130_fd_sc_hd__fill_1/VPWR = 1
sky130_fd_sc_hd__decap_8/VPB = 1 | sky130_fd_sc_hd__decap_8/VPB = 1
sky130_fd_sc_hd__decap_8/VPWR = 1 | sky130_fd_sc_hd__decap_8/VPWR = 1
sky130_fd_sc_hd__decap_3/VPB = 1 | sky130_fd_sc_hd__decap_3/VPB = 1
sky130_fd_sc_hd__decap_3/VPWR = 1 | sky130_fd_sc_hd__decap_3/VPWR = 1
sky130_fd_sc_hd__decap_4/VPB = 1 | sky130_fd_sc_hd__decap_4/VPB = 1
sky130_fd_sc_hd__decap_4/VPWR = 1 | sky130_fd_sc_hd__decap_4/VPWR = 1
sky130_fd_sc_hd__buf_4/VPB = 3 | sky130_fd_sc_hd__buf_4/VPB = 3
sky130_fd_sc_hd__buf_4/VPWR = 3 | sky130_fd_sc_hd__buf_4/VPWR = 3
sky130_fd_sc_hd__clkbuf_8/VPB = 2 | sky130_fd_sc_hd__clkbuf_8/VPB = 2
sky130_fd_sc_hd__clkbuf_8/VPWR = 2 | sky130_fd_sc_hd__clkbuf_8/VPWR = 2
sky130_fd_sc_hd__fill_2/VPB = 1 | sky130_fd_sc_hd__fill_2/VPB = 1
sky130_fd_sc_hd__fill_2/VPWR = 1 | sky130_fd_sc_hd__fill_2/VPWR = 1
sky130_fd_sc_hd__diode_2/VPB = 9 | sky130_fd_sc_hd__diode_2/VPB = 9
sky130_fd_sc_hd__diode_2/VPWR = 9 | sky130_fd_sc_hd__diode_2/VPWR = 9
sky130_fd_sc_hd__buf_2/VPB = 1 | sky130_fd_sc_hd__buf_2/VPB = 1
sky130_fd_sc_hd__buf_2/VPWR = 1 | sky130_fd_sc_hd__buf_2/VPWR = 1
sky130_fd_sc_hd__clkbuf_4/VPB = 1 | sky130_fd_sc_hd__clkbuf_4/VPB = 1
sky130_fd_sc_hd__clkbuf_4/VPWR = 1 | sky130_fd_sc_hd__clkbuf_4/VPWR = 1
sky130_fd_sc_hd__buf_8/VPB = 1 | sky130_fd_sc_hd__buf_8/VPB = 1
sky130_fd_sc_hd__buf_8/VPWR = 1 | sky130_fd_sc_hd__buf_8/VPWR = 1
| core_flat/vccd1 = 1
|
Net: core_flat/vccd1 |(no matching net)
core_flat/vccd1 = 1 |
Md Omar Faruque
04/13/2024, 5:04 AMMitch Bailey
04/13/2024, 7:01 AMuser_proj_example
level, the RSZ_DONT_TOUCH_LIST
is analog_io1
, analog_io2
, and analog_io3
, right?
Can you share 41-user_pro_example.lvs.lef.log
?Md Omar Faruque
04/13/2024, 7:10 AMMd Omar Faruque
04/13/2024, 7:30 AMMd Omar Faruque
04/13/2024, 7:49 AMMitch Bailey
04/13/2024, 3:13 PMverilog/gl/user_proj_example.v
file?Md Omar Faruque
04/13/2024, 11:27 PMMitch Bailey
04/14/2024, 2:19 PM-hide
and -pinonly
options.Md Omar Faruque
04/15/2024, 8:20 AMMitch Bailey
04/15/2024, 1:37 PMcvc.error
is still showing analog signals input to buffers. Can you share your current user_proj_example/config.json
file?
For precheck LVS, you’ll need to add the spice file for core_flat_v4
to the LVS_SPICE_FILES
section of lvs/user_analog_project_wrapper/lvs_config.json
.Mitch Bailey
04/15/2024, 1:42 PMsoft.report
is showing that some of the nfet sources may have a ground connection through psubstrate instead of metal.Md Omar Faruque
04/15/2024, 4:42 PMMitch Bailey
04/16/2024, 1:40 PMMd Omar Faruque
04/17/2024, 8:32 AMMitch Bailey
04/17/2024, 12:57 PMcore
.Mitch Bailey
04/17/2024, 5:13 PMvssa1
. The xschem/simulation/core.v
does however, separate vssd1
and vssa1
in core. You can use isosubstrate
to selectively separate psubstrate regions virtually.Md Omar Faruque
04/17/2024, 5:51 PMMitch Bailey
04/17/2024, 10:34 PMcore
uses both vssa1
and vssd1
connections to substrate. The layout does not use vssa1
. In order to make a layout that matches the schematic, connect the ground of the 3.3v/5.0v devices to vssa1
and the vss of the 1.8v devices to vssd1
. Then surround only the 3.3v/5.0v devices and their taps with isosubstate
.Md Omar Faruque
04/18/2024, 7:32 AMisosubstate
."By taps do you mean the power rings of vdda1 and vssa1?Mitch Bailey
04/18/2024, 8:54 AM