aquiles viza
12/29/2023, 6:03 PM* cap_mim example
*****************
* Xschem
.subckt cap_mim_2f IN2 IN1
C1 IN2 IN1 cap_mim_2f0_m4m5_noshield c_width=5e-6 c_length=5e-6 m=1
.ends
.end
* Klayout
.SUBCKT cap_mim_2f IN2 IN1
C$1 IN2 IN1 5e-14 cap_mim_2f0_m4m5_noshield A=25P P=20U
.ENDS cap_mim_2f
* errors
Net IN2 is not matching any net from reference netlist
Net IN1 is not matching any net from reference netlist
* Resistor example
******************
* xschem
.subckt resistor_core IN2 IN1 B
R2 IN2 IN1 B ppolyf_u r_width=1e-6 r_length=1e-20 m=1
.ends
.end
* Klayout
.SUBCKT resistor_core B IN1 IN2
R$1 IN1 IN2 B 7000 ppolyf_u L=20U W=1U
.ENDS resistor_core
* Errors
Net IN1 is not matching any net from reference netlist
Net IN2 is not matching any net from reference netlist
Net B is not matching any net from reference netlist
I see that the only difference between the netlists is a extra number in the klayout extracted circuit. The commands I'm using to generate both are the following
xschem --rcfile ./xschemrc \
--netlist \
--netlist_path $(TOP_DIR) \
--netlist_filename $(TOP).spice \
--preinit 'set lvs_netlist 1; set spiceprefix 0' \
--no_x \
--quit
python $(KLAYOUT_HOME)/lvs/run_lvs.py \
--variant=D \
--run_mode=flat \
--spice_comments \
--verbose \
--run_dir=$(TOP_DIR) \
--layout=$(TOP_GDS) \
--netlist=$(TOP_NETLIST_SCH) \
--top_lvl_pins \
--lvs_sub=B \
--purge \
--combine || true
I think the problem happens because I'm not using the right parameters. Which parameters should I use?
@Amro Tork @Tim Edwards @Gabriel Maranhão @Mitch Bailey @Mitch Bailey
12/29/2023, 6:35 PMaquiles viza
12/29/2023, 8:21 PMTim Edwards
12/29/2023, 8:34 PMaquiles viza
12/29/2023, 8:43 PMAmro Tork
12/29/2023, 10:35 PMAmro Tork
12/29/2023, 10:37 PMAmro Tork
12/29/2023, 10:37 PMaquiles viza
12/30/2023, 12:37 AMCell pin lists for cap_mim and cap_mim_2f altered to match.
but ignoring it, it's good.aquiles viza
12/30/2023, 12:39 AMTim Edwards
12/30/2023, 1:15 AMaltered to match
indicates that netgen thinks that between cap_mim
and cap_mim_2f
, the pins IN2
and IN1
are swapped between the schematic and layout, or in other words, that the tools disagree on which side of the MiM cap is the positive side and which is the negative. I don't have your layout and schematic, but otherwise I don't see anything obviously wrong in any of the tools, tool setups, or models.aquiles viza
12/30/2023, 4:48 AMaquiles viza
12/30/2023, 5:02 AMsed -i '/C.*cap_mim_2f0_m4m5_noshield/s/c_width/W/' $(TOP_DIR)/$(TOP).spice
sed -i '/C.*cap_mim_2f0_m4m5_noshield/s/c_length/L/' $(TOP_DIR)/$(TOP).spice
EDIT: for poly resistor matching
sed -i '/R.*ppoly/s/r_width/W/' $(TOP_DIR)/$(TOP).spice
sed -i '/R.*ppoly/s/r_length/L/' $(TOP_DIR)/$(TOP).spice
aquiles viza
12/30/2023, 5:29 AMGabriel Maranhão
01/02/2024, 7:08 PMAmro Tork
01/02/2024, 8:53 PMaquiles viza
01/03/2024, 12:39 AM