Coverage report: 86%

Files Functions Classes

coverage.py v7.16.1, created at 2026-09-17 19:08 +0000

File class   statements missing excluded   coverage
klayout_pex/__init__.py (no class)   0 0 0   100%
klayout_pex/common/__init__.py (no class)   0 0 0   100%
klayout_pex/common/capacitance_matrix.py CapacitanceMatrix   33 2 0   94%
klayout_pex/common/capacitance_matrix.py (no class)   16 0 0   100%
klayout_pex/common/path_validation.py FileValidationResult   0 0 0   100%
klayout_pex/common/path_validation.py FileValidationResult.Failure   0 0 0   100%
klayout_pex/common/path_validation.py (no class)   28 16 0   43%
klayout_pex/env.py EnvVar   10 1 0   90%
klayout_pex/env.py Env   23 2 0   91%
klayout_pex/env.py (no class)   28 0 0   100%
klayout_pex/extraction_engine.py ExtractionEngine   0 0 0   100%
klayout_pex/extraction_engine.py (no class)   6 0 0   100%
klayout_pex/fastcap/__init__.py (no class)   0 0 0   100%
klayout_pex/fastcap/fastcap_runner.py (no class)   61 27 0   56%
klayout_pex/fastcap/output_interpreter.py FastCapOutputInterpreter   1 1 0   0%
klayout_pex/fastcap/output_interpreter.py (no class)   3 0 0   100%
klayout_pex/fastercap/__init__.py (no class)   0 0 0   100%
klayout_pex/fastercap/fastercap_input_builder.py FasterCapInputBuilder   143 46 0   68%
klayout_pex/fastercap/fastercap_input_builder.py (no class)   17 0 0   100%
klayout_pex/fastercap/fastercap_model_generator.py FasterCapModelBuilder   57 4 0   93%
klayout_pex/fastercap/fastercap_model_generator.py HDielKey   3 0 0   100%
klayout_pex/fastercap/fastercap_model_generator.py HCondKey   2 0 0   100%
klayout_pex/fastercap/fastercap_model_generator.py VKey   0 0 0   100%
klayout_pex/fastercap/fastercap_model_generator.py Point   3 0 0   100%
klayout_pex/fastercap/fastercap_model_generator.py Triangle   14 2 0   86%
klayout_pex/fastercap/fastercap_model_generator.py Edge   2 0 0   100%
klayout_pex/fastercap/fastercap_model_generator.py FasterCapModelGenerator   457 27 0   94%
klayout_pex/fastercap/fastercap_model_generator.py (no class)   124 0 0   100%
klayout_pex/fastercap/fastercap_runner.py (no class)   57 5 0   91%
klayout_pex/fastercap/output_interpreter.py FasterCapOutputInterpreter   1 0 0   100%
klayout_pex/fastercap/output_interpreter.py (no class)   3 0 0   100%
klayout_pex/klayout/__init__.py (no class)   1 0 0   100%
klayout_pex/klayout/capacitance_matrix_interpreter.py CapacitanceMatrixInterpreter   1 1 0   0%
klayout_pex/klayout/capacitance_matrix_interpreter.py (no class)   5 0 0   100%
klayout_pex/klayout/lvs_runner.py LVSRunner   19 0 0   100%
klayout_pex/klayout/lvs_runner.py (no class)   8 0 0   100%
klayout_pex/klayout/lvsdb_extractor.py KLayoutExtractedLayerInfo   0 0 0   100%
klayout_pex/klayout/lvsdb_extractor.py KLayoutMergedExtractedLayerInfo   0 0 0   100%
klayout_pex/klayout/lvsdb_extractor.py KLayoutExtractionContext   206 19 0   91%
klayout_pex/klayout/lvsdb_extractor.py (no class)   58 0 0   100%
klayout_pex/klayout/netlist_csv.py NetlistCSVWriter   17 2 0   88%
klayout_pex/klayout/netlist_csv.py (no class)   6 0 0   100%
klayout_pex/klayout/netlist_expander.py NetlistExpander   60 2 0   97%
klayout_pex/klayout/netlist_expander.py (no class)   11 0 0   100%
klayout_pex/klayout/netlist_printer.py NetlistPrinter   25 0 0   100%
klayout_pex/klayout/netlist_printer.py (no class)   13 0 0   100%
klayout_pex/klayout/netlist_reducer.py NetlistReducer   16 3 0   81%
klayout_pex/klayout/netlist_reducer.py (no class)   6 0 0   100%
klayout_pex/klayout/pex25d_builder.py BuildError   0 0 0   100%
klayout_pex/klayout/pex25d_builder.py BuilderOptions   0 0 0   100%
klayout_pex/klayout/pex25d_builder.py PEX25DBuilder   376 148 0   61%
klayout_pex/klayout/pex25d_builder.py (no class)   68 2 2   97%
klayout_pex/klayout/repair_rdb.py (no class)   79 66 0   16%
klayout_pex/klayout/rex_core.py (no class)   26 2 0   92%
klayout_pex/klayout/shapes_pb2_converter.py ShapesConverter   53 13 0   75%
klayout_pex/klayout/shapes_pb2_converter.py (no class)   14 0 0   100%
klayout_pex/kpex_cli.py ArgumentValidationError   0 0 0   100%
klayout_pex/kpex_cli.py InputMode   0 0 0   100%
klayout_pex/kpex_cli.py KpexCLI   620 238 0   62%
klayout_pex/kpex_cli.py (no class)   111 2 0   98%
klayout_pex/log/__init__.py (no class)   1 0 0   100%
klayout_pex/log/logger.py LogLevel   1 1 0   0%
klayout_pex/log/logger.py LogLevelFormatter   6 0 0   100%
klayout_pex/log/logger.py LogLevelFilter   6 0 0   100%
klayout_pex/log/logger.py (no class)   68 0 10   100%
klayout_pex/magic/__init__.py (no class)   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py Port   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py Node   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py DeviceType   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py Device   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py ExtData   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py ResNode   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py Resistor   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py ResExtData   1 1 0   0%
klayout_pex/magic/magic_ext_data_structures.py CellExtData   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py MagicPEXRun   0 0 0   100%
klayout_pex/magic/magic_ext_data_structures.py (no class)   79 0 0   100%
klayout_pex/magic/magic_ext_file_parser.py (no class)   57 17 0   70%
klayout_pex/magic/magic_log_analyzer.py MagicLogAnalyzer   71 27 0   62%
klayout_pex/magic/magic_log_analyzer.py ArgumentValidationError   0 0 0   100%
klayout_pex/magic/magic_log_analyzer.py (no class)   43 18 0   58%
klayout_pex/magic/magic_runner.py MagicPEXMode   0 0 0   100%
klayout_pex/magic/magic_runner.py MagicShortMode   0 0 0   100%
klayout_pex/magic/magic_runner.py MagicMergeMode   0 0 0   100%
klayout_pex/magic/magic_runner.py MagicUniqueMode   9 9 0   0%
klayout_pex/magic/magic_runner.py (no class)   63 32 0   49%
klayout_pex/netlistsvg/netlist_json.py NetlistJSONWriter   65 1 0   98%
klayout_pex/netlistsvg/netlist_json.py (no class)   12 0 0   100%
klayout_pex/pdk_config.py PDKConfig   0 0 0   100%
klayout_pex/pdk_config.py PDK   19 6 0   68%
klayout_pex/pdk_config.py (no class)   22 0 0   100%
klayout_pex/pex25d/__init__.py _Proto   17 1 0   94%
klayout_pex/pex25d/__init__.py (no class)   33 0 0   100%
klayout_pex/pex25d/artifact.py ArtifactKind   0 0 0   100%
klayout_pex/pex25d/artifact.py ArtifactFormat   0 0 0   100%
klayout_pex/pex25d/artifact.py ArtifactNamingError   0 0 0   100%
klayout_pex/pex25d/artifact.py ArtifactSpec   4 0 0   100%
klayout_pex/pex25d/artifact.py (no class)   93 24 0   74%
klayout_pex/pex25d/codec.py (no class)   44 6 0   86%
klayout_pex/pex25d/diagnostics.py ExitCode   0 0 0   100%
klayout_pex/pex25d/diagnostics.py Severity   1 0 0   100%
klayout_pex/pex25d/diagnostics.py Tier   1 0 0   100%
klayout_pex/pex25d/diagnostics.py DiagnosticsFormat   0 0 0   100%
klayout_pex/pex25d/diagnostics.py SourceRef   6 6 0   0%
klayout_pex/pex25d/diagnostics.py Diagnostic   6 2 0   67%
klayout_pex/pex25d/diagnostics.py DiagnosticsReport   60 26 0   57%
klayout_pex/pex25d/diagnostics.py (no class)   86 13 0   85%
klayout_pex/pex25d/exporters.py SolverTarget   0 0 0   100%
klayout_pex/pex25d/exporters.py ExportError   0 0 0   100%
klayout_pex/pex25d/exporters.py ExporterUnavailable   0 0 0   100%
klayout_pex/pex25d/exporters.py ExporterOptions   0 0 0   100%
klayout_pex/pex25d/exporters.py (no class)   35 11 0   69%
klayout_pex/pex25d/format_version.py (no class)   3 0 0   100%
klayout_pex/pex25d/pex25d_cli.py ArgumentValidationError   0 0 0   100%
klayout_pex/pex25d/pex25d_cli.py Pex25DCLI   172 35 0   80%
klayout_pex/pex25d/pex25d_cli.py (no class)   48 0 0   100%
klayout_pex/pex25d/protobuf.py ProtobufNotGeneratedError   0 0 0   100%
klayout_pex/pex25d/protobuf.py (no class)   66 8 0   88%
klayout_pex/pex25d/reader.py ReadError   0 0 0   100%
klayout_pex/pex25d/reader.py Record   2 0 0   100%
klayout_pex/pex25d/reader.py Cursor   25 0 0   100%
klayout_pex/pex25d/reader.py Pex25DTextReader   424 67 0   84%
klayout_pex/pex25d/reader.py (no class)   121 3 0   98%
klayout_pex/pex25d/resolver.py ResolveError   0 0 0   100%
klayout_pex/pex25d/resolver.py Profile   0 0 0   100%
klayout_pex/pex25d/resolver.py ChainInfo   0 0 0   100%
klayout_pex/pex25d/resolver.py Resolver   325 23 0   93%
klayout_pex/pex25d/resolver.py (no class)   102 1 0   99%
klayout_pex/pex25d/show.py (no class)   92 10 0   89%
klayout_pex/pex25d/validator.py Validator   232 8 0   97%
klayout_pex/pex25d/validator.py Shape   2 0 0   100%
klayout_pex/pex25d/validator.py Polygon   4 0 0   100%
klayout_pex/pex25d/validator.py Item   0 0 0   100%
klayout_pex/pex25d/validator.py (no class)   207 10 0   95%
klayout_pex/pex25d/writer.py WriteError   0 0 0   100%
klayout_pex/pex25d/writer.py Pex25DTextWriter   180 24 0   87%
klayout_pex/pex25d/writer.py (no class)   62 1 0   98%
klayout_pex/rcx25/__init__.py (no class)   0 0 0   100%
klayout_pex/rcx25/c/__init__.py (no class)   0 0 0   100%
klayout_pex/rcx25/c/geometry_restorer.py GeometryRestorer   5 1 0   80%
klayout_pex/rcx25/c/geometry_restorer.py (no class)   8 0 0   100%
klayout_pex/rcx25/c/overlap_extractor.py OverlapExtractor   11 0 0   100%
klayout_pex/rcx25/c/overlap_extractor.py OverlapExtractor.PEXPolygonNeighborhoodVisitor   38 5 0   87%
klayout_pex/rcx25/c/overlap_extractor.py (no class)   12 0 0   100%
klayout_pex/rcx25/c/polygon_utils.py (no class)   24 2 0   92%
klayout_pex/rcx25/c/sidewall_and_fringe_extractor.py SidewallAndFringeExtractor   18 0 0   100%
klayout_pex/rcx25/c/sidewall_and_fringe_extractor.py SidewallAndFringeExtractor.PEXEdgeNeighborhoodVisitor   142 15 0   89%
klayout_pex/rcx25/c/sidewall_and_fringe_extractor.py (no class)   26 0 0   100%
klayout_pex/rcx25/extraction_reporter.py ExtractionReporter   166 29 0   83%
klayout_pex/rcx25/extraction_reporter.py (no class)   75 0 0   100%
klayout_pex/rcx25/extraction_results.py NodeRegion   0 0 0   100%
klayout_pex/rcx25/extraction_results.py SidewallKey   0 0 0   100%
klayout_pex/rcx25/extraction_results.py SidewallCap   0 0 0   100%
klayout_pex/rcx25/extraction_results.py OverlapKey   0 0 0   100%
klayout_pex/rcx25/extraction_results.py OverlapCap   0 0 0   100%
klayout_pex/rcx25/extraction_results.py SideOverlapKey   9 5 0   44%
klayout_pex/rcx25/extraction_results.py SideOverlapCap   1 1 0   0%
klayout_pex/rcx25/extraction_results.py NetCoupleKey   11 4 0   64%
klayout_pex/rcx25/extraction_results.py ExtractionSummary   8 0 0   100%
klayout_pex/rcx25/extraction_results.py CellExtractionResults   35 0 0   100%
klayout_pex/rcx25/extraction_results.py ExtractionResults   2 0 0   100%
klayout_pex/rcx25/extraction_results.py (no class)   83 0 0   100%
klayout_pex/rcx25/extractor.py RCX25Extractor   81 7 0   91%
klayout_pex/rcx25/extractor.py (no class)   22 0 0   100%
klayout_pex/rcx25/netlist_expander.py RCX25NetlistExpander   59 4 0   93%
klayout_pex/rcx25/netlist_expander.py (no class)   9 0 0   100%
klayout_pex/rcx25/pex_mode.py PEXMode   14 4 0   71%
klayout_pex/rcx25/pex_mode.py (no class)   8 0 0   100%
klayout_pex/rcx25/r/__init__.py (no class)   0 0 0   100%
klayout_pex/rcx25/r/r_extractor.py RExtractor   233 25 0   89%
klayout_pex/rcx25/r/r_extractor.py (no class)   21 0 0   100%
klayout_pex/rcx25/types.py (no class)   12 0 0   100%
klayout_pex/tech_info.py TechDefError   0 0 0   100%
klayout_pex/tech_info.py TechInfo   164 31 0   81%
klayout_pex/tech_info.py (no class)   89 0 0   100%
klayout_pex/tool_version_constraints.py Tool   28 11 0   61%
klayout_pex/tool_version_constraints.py Severity   0 0 0   100%
klayout_pex/tool_version_constraints.py VersionCheckMode   0 0 0   100%
klayout_pex/tool_version_constraints.py ToolVersionConstraint   3 0 0   100%
klayout_pex/tool_version_constraints.py (no class)   83 9 0   89%
klayout_pex/util/__init__.py (no class)   0 0 0   100%
klayout_pex/util/argparse_helpers.py (no class)   37 4 0   89%
klayout_pex/util/multiple_choice.py MultipleChoicePattern   21 7 0   67%
klayout_pex/util/multiple_choice.py (no class)   6 0 0   100%
klayout_pex/util/unit_formatter.py (no class)   34 7 0   79%
klayout_pex/version.py (no class)   1 0 0   100%
klayout_pex_protobuf/__init__.py (no class)   5 0 0   100%
klayout_pex_protobuf/kpex/c/capacitance_pb2.py (no class)   28 13 0   54%
klayout_pex_protobuf/kpex/geometry/shapes_pb2.py (no class)   25 13 0   48%
klayout_pex_protobuf/kpex/klayout/r_extractor_tech_pb2.py (no class)   22 9 0   59%
klayout_pex_protobuf/kpex/layout/device_pb2.py (no class)   21 7 0   67%
klayout_pex_protobuf/kpex/layout/layer_ref_pb2.py (no class)   15 3 0   80%
klayout_pex_protobuf/kpex/layout/layer_region_pb2.py (no class)   17 3 0   82%
klayout_pex_protobuf/kpex/layout/location_pb2.py (no class)   18 5 0   72%
klayout_pex_protobuf/kpex/layout/pin_pb2.py (no class)   17 3 0   82%
klayout_pex_protobuf/kpex/pex25d/pex25d_diagnostics_pb2.py (no class)   22 9 0   59%
klayout_pex_protobuf/kpex/pex25d/pex25d_dielectric_pb2.py (no class)   24 11 0   54%
klayout_pex_protobuf/kpex/pex25d/pex25d_domain_pb2.py (no class)   19 5 0   74%
klayout_pex_protobuf/kpex/pex25d/pex25d_file_pb2.py (no class)   35 15 0   57%
klayout_pex_protobuf/kpex/pex25d/pex25d_geometry_pb2.py (no class)   25 13 0   48%
klayout_pex_protobuf/kpex/pex25d/pex25d_meta_pb2.py (no class)   16 3 0   81%
klayout_pex_protobuf/kpex/pex25d/pex25d_resistance_pb2.py (no class)   22 9 0   59%
klayout_pex_protobuf/kpex/pex25d/pex25d_scene_pb2.py (no class)   43 23 0   47%
klayout_pex_protobuf/kpex/pex25d/pex25d_source_ref_pb2.py (no class)   15 3 0   80%
klayout_pex_protobuf/kpex/pex25d/pex25d_terminal_pb2.py (no class)   19 5 0   74%
klayout_pex_protobuf/kpex/pex25d/pex25d_units_pb2.py (no class)   17 5 0   71%
klayout_pex_protobuf/kpex/r/r_network_pb2.py (no class)   30 15 0   50%
klayout_pex_protobuf/kpex/request/pex_request_pb2.py (no class)   23 7 0   70%
klayout_pex_protobuf/kpex/result/pex_result_pb2.py (no class)   23 9 0   61%
klayout_pex_protobuf/kpex/tech/process_parasitics_pb2.py (no class)   35 23 0   34%
klayout_pex_protobuf/kpex/tech/process_stack_pb2.py (no class)   35 23 0   34%
klayout_pex_protobuf/kpex/tech/tech_pb2.py (no class)   27 13 0   52%
tests/__init__.py (no class)   0 0 0   100%
tests/common/__init__.py (no class)   0 0 0   100%
tests/common/capacitance_matrix_test.py Test   21 0 0   100%
tests/common/capacitance_matrix_test.py (no class)   15 0 0   100%
tests/env_test.py Test   21 1 0   95%
tests/env_test.py (no class)   14 0 0   100%
tests/fastcap/fastcap_runner_test.py Test   12 0 0   100%
tests/fastcap/fastcap_runner_test.py (no class)   10 0 0   100%
tests/fastercap/__init__.py (no class)   0 0 0   100%
tests/fastercap/fastercap_model_generator_test.py (no class)   60 0 0   100%
tests/fastercap/fastercap_runner_test.py Test   11 0 0   100%
tests/fastercap/fastercap_runner_test.py (no class)   10 0 0   100%
tests/fastercap/fastercap_test.py (no class)   63 0 0   100%
tests/klayout/lvs_runner_test.py Test   11 11 0   0%
tests/klayout/lvs_runner_test.py (no class)   13 0 0   100%
tests/klayout/netlist_expander_test.py Test   18 0 0   100%
tests/klayout/netlist_expander_test.py (no class)   20 0 0   100%
tests/klayout/netlist_reducer_test.py Test   16 0 0   100%
tests/klayout/netlist_reducer_test.py (no class)   17 0 0   100%
tests/klayout/pex25d_builder_test.py TerminalFixture   35 0 0   100%
tests/klayout/pex25d_builder_test.py Pex25DBuilderTerminalTest   64 0 0   100%
tests/klayout/pex25d_builder_test.py (no class)   30 0 0   100%
tests/klayout/shapes_pb2_converter_test.py ShapesConverterTest   106 0 0   100%
tests/klayout/shapes_pb2_converter_test.py (no class)   20 0 0   100%
tests/magic/magic_log_analyzer_test.py Test   36 0 0   100%
tests/magic/magic_log_analyzer_test.py (no class)   29 0 0   100%
tests/netlistsvg/netlist_json_test.py Test   19 0 0   100%
tests/netlistsvg/netlist_json_test.py (no class)   19 0 0   100%
tests/pex25d/__init__.py (no class)   0 0 0   100%
tests/pex25d/api_test.py Pex25DApiTest   44 0 0   100%
tests/pex25d/api_test.py (no class)   19 0 0   100%
tests/pex25d/artifact_test.py Pex25DArtifactTest   36 0 0   100%
tests/pex25d/artifact_test.py (no class)   21 0 0   100%
tests/pex25d/geometry_test.py Pex25DGeometryTest   42 0 0   100%
tests/pex25d/geometry_test.py (no class)   29 0 0   100%
tests/pex25d/pex25d_cli_test.py Workspace   10 1 0   90%
tests/pex25d/pex25d_cli_test.py Pex25DCLITest   51 0 0   100%
tests/pex25d/pex25d_cli_test.py (no class)   28 0 0   100%
tests/pex25d/pex25d_fixtures.py (no class)   26 1 0   96%
tests/pex25d/reader_test.py Pex25DReaderTest   72 0 0   100%
tests/pex25d/reader_test.py (no class)   33 0 0   100%
tests/pex25d/resolver_test.py Pex25DResolverTest   102 0 0   100%
tests/pex25d/resolver_test.py (no class)   61 0 0   100%
tests/pex25d/validator_test.py Pex25DValidatorTest   85 0 0   100%
tests/pex25d/validator_test.py (no class)   70 2 0   97%
tests/pex25d/writer_test.py Pex25DWriterTest   44 0 0   100%
tests/pex25d/writer_test.py (no class)   17 0 0   100%
tests/rcx25/extraction_results_test.py NetCoupleKeyTest   8 0 0   100%
tests/rcx25/extraction_results_test.py CellExtractionResultsTest   48 0 0   100%
tests/rcx25/extraction_results_test.py (no class)   13 0 0   100%
tests/rcx25/rcx25_CC_sky130A_test.py (no class)   89 0 0   100%
tests/rcx25/rcx25_R_sky130A_test.py (no class)   34 0 0   100%
tests/rcx25/rcx25_test.py (no class)   145 0 0   100%
tests/rcx25/rcx25_test_helpers.py PDKName   0 0 0   100%
tests/rcx25/rcx25_test_helpers.py PDKTestConfig   8 0 0   100%
tests/rcx25/rcx25_test_helpers.py RCX25Extraction   33 0 0   100%
tests/rcx25/rcx25_test_helpers.py (no class)   37 0 0   100%
tests/tech_info_test.py Test   18 0 0   100%
tests/tech_info_test.py (no class)   32 0 0   100%
tests/tool_version_constraints_test.py Test   28 0 0   100%
tests/tool_version_constraints_test.py (no class)   17 0 0   100%
tests/util/argparse_helpers_test.py Test   27 0 0   100%
tests/util/argparse_helpers_test.py Test.test_render_enum_help__nodefault__intenum.IntEnum1   0 0 0   100%
tests/util/argparse_helpers_test.py Test.test_render_enum_help__default__intenum.IntEnum2   0 0 0   100%
tests/util/argparse_helpers_test.py Test.test_render_enum_help__default__strenum.StrEnum1   0 0 0   100%
tests/util/argparse_helpers_test.py Test.test_render_enum_help__default__strenum__lowercased.StrEnum1   0 0 0   100%
tests/util/argparse_helpers_test.py (no class)   13 0 0   100%
tests/util/unit_formatter_test.py UnitFormatterTest   22 0 0   100%
tests/util/unit_formatter_test.py (no class)   13 1 0   92%
Total     10129 1457 12   86%

No items found using the specified filter.