<@U017X0NM2E7> I have a Netgen related question. W...
# ieee-sscs-dc-24
s
@Mitch Bailey I have a Netgen related question. While trying to run the current netgen LVS checks in gf180, I got an error saying
netgen is only supported in sky130
. This is somewhat fine as first to check the LVS in sky130 and then do DRCs in gf180 but is there a way to check LVS directly in GF180 ? Has anybody else also faced the same?
m
@Saptarshi Ghosh That sounds strange because netgen was used for the 2 Efabless gf180 shuttles. Maybe it’s talking about netgen in the glayout flow.
s
Might well be since I am using GLayout flow. Could you please guide me towards any material (from 2023) of using Netgen without GLayout?
m
@Saptarshi Ghosh Don’t know if this is what you’re looking for, but this is the netgen home page. http://opencircuitdesign.com/netgen/ What command or script are you running that gives the
netgen is only supported in sky130
message?
s
Hi @Mitch Bailey I was following the contributor guide here for the
{}.lvs_netgen
function.
But if you go to this function , line 547 , in the definition of
lvs_netgen
function, It gets the error here for
non-sky130
process
I am wondering if this is the input parameters of the lvs, then Can we supply necessary files to the function to do the LVS for gf180 as well? Given, that the required files already exists.
This is line 751 , which deals with the netgen command. If these files already exist, then this function can easily be extended to gf180
Seems like one would need the
lvs_schematic_ref_file
and the
lvs_setup_tcl_file
files for the gf180. Is that exists? Seems like what the code is doing is: The In-build Net-list is extracted by
Copy code
<http://layout.info['netlist'].generate_netlist()|layout.info['netlist'].generate_netlist()>
and a corresponding spice file is written
Copy code
write_spice(str(netlist_from_comp), str(spice_path), lvsschemref_file)
On Other hand: with this magic script , the spice is extracted from the component
Copy code
magic_script_content = f"""
gds flatglob *\\$\\$*
gds read {gds_path}
load {design_name}

select top cell
ext2resist all
extract all
ext2spice lvs
ext2spice extresist on 
ext2spice -o {str(lvsmag_path)}
load {design_name}
ext2sim cthresh 0
ext2sim -o {str(sim_path)}
exit
"""
Then both these spice is compared with where
lvs_mag_path
is the magic extracted spice and
spice_path
is the net-list generated spice code and, both are being compared with help of
lvs_setup_tcl_file
Copy code
netgen -batch lvs "{str(lvsmag_path)} {design_name}" "{str(spice_path)} {design_name}" {lvssetup_file} {str(report_path)}
Hope this deconstruction would be helpful
m
The process specific variables are
pdk_root
,
lvs_setup_tcl_file
, and
magic_drc_file
. If the correct values are passed to the function, I expect it will work.
m
@Tim Edwards Any thoughts?
t
Of course netgen works for gf180MCU; I used it to create and verify layout for the GF version of Caravel; for example, see in the
caravel-gf180mcu
repository (originally github/efabless, now github/fossi-foundation) the file
lvs/run_caravel_lvs.sh
. There is no reason why any LVS script should not be process-agnostic. Calls to netgen are the same in any case as the process-dependent part is all on the command line (path to the setup file). Calls to magic for extraction likewise should be process agnostic, which the script posted above is. I do not know how magic is being called, as the script makes a reference to a command that does not normally exist (
ext2resist
is not a magic command). The script appears to have been written by somebody who does not understand Magic very well and did not consider it helpful to consult somebody who does.
j
Hi @Saptarshi Ghosh, during the Chipathon 2023 we were able to do LVS in the Klayout GUI. In that time, we had to modify some files. Here is the link to the presentation that we did with @Gabriel Maranhão for DRC ok. I think the configuration for the LVS is pretty similar. I think you just need to include the path to the netlists. https://docs.google.com/presentation/d/1WjOg9-SLvlRabmkRcAND0_fhJpWTGAxBTggQHWZ6phs/edit?usp=sharing I am also sharing the link to the required files. https://drive.google.com/drive/folders/1gosADRQMarkyyGvOmhY-e_W-X_k-LHEp?usp=sharing I do not know if you need to replace the files for new tool and PDK versions. In that time we had to do it.
s
Thanks a ton Juan and Tim for both the scripts and the files. I will take a look how to integrate that into the standard GLayout flow.