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.gzMd 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) = 5Mitch 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