There is an issue with the multiplier and finger counting in the Fet Netlist generation code, which appears when using the connect_netlist automated netlist generation in upper-level Design.
A minimal problem example will be as following. Few snippets are addded for IIC-OSIC Docker which can be remove if not being used. The working combination is Width=3,Fingers=4. Everything else doesn't work including the example in following.
The reason that is suspected is incorrect translation of fingers and width to the fet_netlist function as linked on top. It uses 'mtop = fingers * multipliers; dmtop = multipliers; mult': mtop / 2, which doesn't seem correct.
from glayout import MappedPDK, sky130,gf180
from gdsfactory.component import Component
###### Only Required for IIC-OSIC Docker, Ignore for other OS setup####################
import os
import subprocess
from typing import ClassVar, Optional, Any, Union, Literal, Iterable, TypedDict
from pathlib import Path
# Run a shell, source .bashrc, then printenv
cmd = 'bash -c "source ~/.bashrc && printenv"'
result = subprocess.run(cmd, shell=True, text=True, capture_output=True)
env_vars = {}
for line in result.stdout.splitlines():
if '=' in line:
key, value = line.split('=', 1)
env_vars[key] = value
# Now, update os.environ with these
os.environ.update(env_vars)
######Importing the design from blocks folder#######################
import sys
sys.path.append('gLayout/blocks/elementary/diff_pair/')
from diff_pair import diff_pair,add_df_labels
comp = diff_pair(gf180,width=3,fingers=1)
comp = add_df_labels(comp,gf180)
comp.name = "FVF"
#comp.show()
print("...Running LVS...")
lvs_res=gf180.lvs_netgen(comp, "FVF",copy_intermediate_files=True,show_scripts=True)
There is an issue with the multiplier and finger counting in the
FetNetlist generation code, which appears when using the connect_netlist automated netlist generation in upper-level Design.gLayout/src/glayout/primitives/fet.py
Line 109 in fc0627b
A minimal problem example will be as following. Few snippets are addded for IIC-OSIC Docker which can be remove if not being used. The working combination is
Width=3,Fingers=4. Everything else doesn't work including the example in following.The reason that is suspected is incorrect translation of fingers and width to the
fet_netlistfunction as linked on top. It uses'mtop = fingers * multipliers; dmtop = multipliers; mult': mtop / 2,which doesn't seem correct.