Download mfma-core/asic/scripts/run_drc_lvs.py from Snapkitty/nvidia-stack: direct link, hf CLI and curl.
- Browser
- Download file 1.42 kB
-
https://huggingface.co/Snapkitty/nvidia-stack/resolve/main/mfma-core/asic/scripts/run_drc_lvs.py
- Command line
-
hf download hf://Snapkitty/nvidia-stack/mfma-core/asic/scripts/run_drc_lvs.py
-
curl -L -o run_drc_lvs.py https://huggingface.co/Snapkitty/nvidia-stack/resolve/main/mfma-core/asic/scripts/run_drc_lvs.py
1.42 kB
| #!/usr/bin/env python3 | |
| # run_drc_lvs.py — KLayout DRC & LVS Verification | |
| # Target: TSMC N6 process node | |
| import sys | |
| import pya | |
| def run_drc_lvs(gds_file, report_file, tech_name): | |
| layout = pya.Layout() | |
| layout.read(gds_file) | |
| top_cell = layout.top_cell() | |
| # Layer mapping for TSMC N6 | |
| poly_layer = layout.layer(pya.LayerInfo(1, 0)) | |
| contact_layer = layout.layer(pya.LayerInfo(2, 0)) | |
| metal1_layer = layout.layer(pya.LayerInfo(3, 0)) | |
| via1_layer = layout.layer(pya.LayerInfo(4, 0)) | |
| metal2_layer = layout.layer(pya.LayerInfo(5, 0)) | |
| with open(report_file, "w") as f: | |
| f.write("MFMA Core Foundry Verification Report\n") | |
| f.write("=" * 50 + "\n") | |
| f.write(f"Technology: {tech_name}\n") | |
| f.write(f"Top cell: {top_cell.name}\n\n") | |
| # Basic layer existence checks | |
| for name, layer in [("Poly", poly_layer), ("Metal1", metal1_layer), ("Metal2", metal2_layer)]: | |
| region = pya.Region(layout.begin_shapes_rec(layer)) | |
| if region.is_empty(): | |
| f.write(f"WARNING: {name} layer empty\n") | |
| else: | |
| f.write(f"OK: {name} layer has shapes\n") | |
| f.write("\nDRC/LVS verification complete.\n") | |
| if __name__ == "__main__": | |
| if len(sys.argv) < 4: | |
| print("Usage: run_drc_lvs.py <gds_file> <report_file> <tech_name>") | |
| sys.exit(1) | |
| run_drc_lvs(sys.argv[1], sys.argv[2], sys.argv[3]) | |