{"id":51007621,"url":"https://github.com/chipfoundry/cf-precheck","last_synced_at":"2026-06-20T22:02:13.782Z","repository":{"id":325526288,"uuid":"975011409","full_name":"chipfoundry/cf-precheck","owner":"chipfoundry","description":null,"archived":false,"fork":false,"pushed_at":"2026-05-07T22:46:31.000Z","size":58072,"stargazers_count":2,"open_issues_count":43,"forks_count":1,"subscribers_count":1,"default_branch":"main","last_synced_at":"2026-05-08T00:32:02.133Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/chipfoundry.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-04-29T16:35:30.000Z","updated_at":"2026-05-05T05:43:44.000Z","dependencies_parsed_at":null,"dependency_job_id":null,"html_url":"https://github.com/chipfoundry/cf-precheck","commit_stats":null,"previous_names":["chipfoundry/mpw_precheck"],"tags_count":48,"template":false,"template_full_name":null,"purl":"pkg:github/chipfoundry/cf-precheck","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chipfoundry%2Fcf-precheck","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chipfoundry%2Fcf-precheck/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chipfoundry%2Fcf-precheck/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chipfoundry%2Fcf-precheck/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/chipfoundry","download_url":"https://codeload.github.com/chipfoundry/cf-precheck/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/chipfoundry%2Fcf-precheck/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":34586666,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-06-20T02:00:06.407Z","response_time":98,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2026-06-20T22:02:13.106Z","updated_at":"2026-06-20T22:02:13.775Z","avatar_url":"https://github.com/chipfoundry.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cf-precheck\n\nChipFoundry MPW tapeout precheck tool. Validates user projects before shuttle submission by running a sequence of design-rule and consistency checks.\n\n## Installation\n\n```bash\npip install cf-precheck\n```\n\n### External tool dependencies\n\nSome checks invoke external EDA tools that must be available on `$PATH`:\n\n- [KLayout](https://www.klayout.de/) — used by all Klayout DRC checks and the XOR check\n- [Magic](http://opencircuitdesign.com/magic/) — used by the optional Magic DRC check and LVS\n- [Netgen](http://opencircuitdesign.com/netgen/) — used by the LVS check\n\n## Usage\n\n```\ncf-precheck -i \u003cproject_dir\u003e -p \u003cpdk_path\u003e -c \u003ccaravel_root\u003e [options] [check ...]\n```\n\n### Required arguments\n\n| Flag | Description |\n|------|-------------|\n| `-i`, `--input-directory` | Path to the user project directory |\n| `-p`, `--pdk-path` | Path to the PDK installation (variant-specific, e.g. `$PDK_ROOT/sky130A`) |\n| `-c`, `--caravel-root` | Path to the golden Caravel root (or set `$GOLDEN_CARAVEL`) |\n\n### Optional arguments\n\n| Flag | Description |\n|------|-------------|\n| `-o`, `--output-directory` | Output directory (default: `\u003cproject\u003e/precheck_results/\u003ctimestamp\u003e`) |\n| `--magic-drc` | Include the Magic DRC check (off by default) |\n| `--skip-checks check [...]` | Skip specific checks |\n| `-v`, `--verbose` | Show verbose/debug output |\n| `--version` | Print version and exit |\n\n### Positional arguments\n\nPass one or more check names to run only those checks. If omitted, all applicable checks are run.\n\n### Example\n\n```bash\n# Run all checks\ncf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel\n\n# Run only specific checks\ncf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel topcell_check gpio_defines\n\n# Include the optional Magic DRC check\ncf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel --magic-drc\n\n# Skip certain checks\ncf-precheck -i ./my_project -p $PDK_ROOT/sky130A -c ./caravel --skip-checks lvs oeb\n```\n\n## Checks\n\n| Check | Description |\n|-------|-------------|\n| `topcell_check` | Validates the top cell name in the GDS |\n| `gpio_defines` | Validates GPIO directives in `verilog/rtl/user_defines.v` |\n| `pdn` | Power distribution network check |\n| `metal_check` | Metal density check |\n| `xor` | XOR comparison against the golden wrapper to detect out-of-bounds edits |\n| `magic_drc` | Full DRC using Magic *(optional, off by default)* |\n| `klayout_feol` | Klayout Front End Of Line DRC |\n| `klayout_beol` | Klayout Back End Of Line DRC |\n| `klayout_offgrid` | Klayout off-grid violations check |\n| `klayout_metal_minimum_clear_area_density` | Klayout metal density check |\n| `klayout_pin_label_purposes_overlapping_drawing` | Klayout pin/label overlap check |\n| `klayout_zero_area` | Klayout zero-area cell check |\n| `spike_check` | Detects invalid paths in the design |\n| `illegal_cellname_check` | Detects cells with illegal names |\n| `oeb` | Output-enable-bar signal connectivity check |\n| `lvs` | Layout vs. Schematic check |\n\n## Results\n\nCheck results are saved to `\u003cproject\u003e/.cf/project.json` under the `precheck` key:\n\n```json\n{\n  \"precheck\": {\n    \"version\": \"1.0.0\",\n    \"timestamp\": \"2026-03-17T12:00:00+00:00\",\n    \"pdk\": \"sky130A\",\n    \"passed\": false,\n    \"checks\": {\n      \"topcell_check\": { \"status\": \"pass\", \"duration_s\": 1.2 },\n      \"gpio_defines\": { \"status\": \"fail\", \"duration_s\": 0.8, \"details\": \"...\" }\n    }\n  }\n}\n```\n\nDetailed logs are written to `\u003cproject\u003e/precheck_results/\u003ctimestamp\u003e/logs/precheck.log`.\n\n## License\n\nApache-2.0\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchipfoundry%2Fcf-precheck","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fchipfoundry%2Fcf-precheck","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fchipfoundry%2Fcf-precheck/lists"}