Conversation
|
Warning Review limit reached
More reviews will be available in 3 minutes and 13 seconds. Learn how PR review limits work. Your organization has run out of usage credits. Purchase more in the billing tab. ⌛ How to resolve this issue?After more reviews become available, a review can be triggered using the We recommend that you space out your commits to avoid hitting the rate limit. 🚦 How do rate limits work?CodeRabbit enforces hourly rate limits for each developer per organization. Our paid plans include higher PR review limits than trial, open-source, and free plans. In all cases, reviews become available again over time. During sustained high-volume PR review activity, CodeRabbit may temporarily slow when the next review becomes available. Please see our Fair Usage Limits Policy for further information. ℹ️ Review info⚙️ Run configurationConfiguration used: defaults Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (16)
📝 WalkthroughWalkthroughThis PR introduces the complete GT2N PDK—a 2nm GAAFET technology node with 72 standard cells—into the lambdapdk repository. The changes include the PDK infrastructure definition, standard-cell library classes for multiple voltage thresholds and track widths, APR configuration files, and a demo SiliconCompiler target. ChangesGT2N PDK and Libraries
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes Poem
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 7
🧹 Nitpick comments (1)
lambdapdk/gt2n/target.py (1)
20-22: ⚡ Quick winAlign docs/comments with implemented constraints and scenarios.
The docstring/comments describe slow/typical/fast analysis and a 4.8µm margin, but the code only creates
typicaland sets core margin to1.0. Please update text (or behavior) so the target contract is unambiguous.Also applies to: 63-67, 77-78
🤖 Prompt for AI Agents
Verify each finding against current code. Fix only still-valid issues, skip the rest with a brief reason, keep changes minimal, and validate. In `@lambdapdk/gt2n/target.py` around lines 20 - 22, The module docstring/comments currently claim slow/typical/fast STA and a 4.8µm margin, but the implementation only creates a "typical" scenario and sets core margin to 1.0; update the lambdapdk.gt2n.target docstring and any inline comments to accurately state that only the "typical" STA scenario is created and that core_margin is 1.0 (remove references to slow/fast scenarios and the 4.8µm margin), or alternatively implement the missing behavior by adding creation of "slow" and "fast" scenarios and changing core_margin to 4.8µm—pick one approach and make comments match the chosen behavior; look for references to "typical" and "core_margin" in the file to locate the relevant code and docs.
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@lambdapdk/gt2n/base/setup/klayout/gt2n.lyt`:
- Line 8: The layer-properties filename in gt2n.lyt is incorrect: change the
<layer-properties_file> entry from "gt2.lyp" to "gt2n.lyp" so it matches the
registered resource name used in lambdapdk/gt2n/__init__.py (the registration
call that registers "gt2n.lyp"); update gt2n.lyt accordingly to ensure KLayout
can load the correct properties file.
- Line 54: The <lef-files> entry in gt2n.lyt is hardcoded to
./platforms/gt2n/lef/gt2_tech.lef which does not match the registered dataroot
path (techlib/gt2_tech.lef) set up in lambdapdk/gt2n/__init__.py; update the
<lef-files> value in gt2n.lyt to the dataroot-relative path (for example
./techlib/gt2_tech.lef) or modify gt2n.lyt to use a configurable base-path
variable and reference ./techlib/gt2_tech.lef via that variable so KLayout
resolves the LEF against active_dataroot("gt2n") correctly.
In `@lambdapdk/gt2n/libs/gt2_6t_w13_elvt/apr/openroad/tapcells.tcl`:
- Around line 1-4: The tapcell invocation references a master name
"gt2_6t_tapbspdn_w13_elvt" for both -tapcell_master and -endcap_master that does
not exist in the LEF library; either add a corresponding MACRO definition named
exactly "gt2_6t_tapbspdn_w13_elvt" to the project's LEF files or change the
-tapcell_master and -endcap_master arguments in the tapcell call to the correct
existing MACRO name(s) (e.g., replace "gt2_6t_tapbspdn_w13_elvt" with the actual
macro identifier present in the LEF), ensuring the names match exactly including
underscores and casing.
In `@lambdapdk/gt2n/libs/stdcells.py`:
- Around line 67-74: The cap_table dictionary lookup in the set_yosys_abc call
uses cap_table[vt] without validating that the voltage threshold parameter vt
exists as a valid key. Add validation before accessing the dictionary to check
if vt is present in cap_table, and raise a descriptive error with the invalid
threshold value if it is not found, preventing KeyError exceptions from
unexpected threshold strings.
In `@lambdapdk/gt2n/README.md`:
- Line 5: Update the citation line in README.md that currently ends with the
literal word "link." (the GT2N citation string) by either replacing "link." with
the actual URL to the ISCAS 2026 paper or removing the "link." token entirely if
no URL is available; ensure the citation punctuation remains correct after the
change.
In `@lambdapdk/gt2n/target.py`:
- Line 5: The import uses incorrect GT2N stdcell class names (GT2N6TLVT,
GT2N6THVT, etc.) which don't match the registered GT2N classes used elsewhere;
replace those imports with the actual registered names (e.g. GT2N6TW13* and
GT2N6TW31* variants) so the module can import at runtime — update the import
statement that currently references
GT2N6TLVT/GT2N6THVT/GT2N6TSVT/GT2N6TULVT/GT2N6TEVT to the corresponding
GT2N6TW13... (and GT2N6TW31... where appropriate) classes and ensure the demo
target defaults to the W13 variants.
In `@README.md`:
- Line 38: The GT2N table row is missing its trailing pipe which breaks
pipe-style table formatting; edit the GT2N row (the line containing "GT2N | 2nm
GAAFET | Standard cells (HVT/SVT/LVT/ULVT/ELVT) | Georgia Institute of
Technology") and add a closing "|" at the end of the line so the row ends with a
pipe and conforms to pipe-style markdown table formatting.
---
Nitpick comments:
In `@lambdapdk/gt2n/target.py`:
- Around line 20-22: The module docstring/comments currently claim
slow/typical/fast STA and a 4.8µm margin, but the implementation only creates a
"typical" scenario and sets core margin to 1.0; update the lambdapdk.gt2n.target
docstring and any inline comments to accurately state that only the "typical"
STA scenario is created and that core_margin is 1.0 (remove references to
slow/fast scenarios and the 4.8µm margin), or alternatively implement the
missing behavior by adding creation of "slow" and "fast" scenarios and changing
core_margin to 4.8µm—pick one approach and make comments match the chosen
behavior; look for references to "typical" and "core_margin" in the file to
locate the relevant code and docs.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: defaults
Review profile: CHILL
Plan: Pro
Run ID: cf4e5791-5028-4149-bf53-0a8943443ea1
📒 Files selected for processing (21)
README.mdlambdapdk/__init__.pylambdapdk/gt2n/README.mdlambdapdk/gt2n/__init__.pylambdapdk/gt2n/base/pex/openroad/typical.tcllambdapdk/gt2n/base/setup/klayout/gt2n.lyplambdapdk/gt2n/base/setup/klayout/gt2n.lytlambdapdk/gt2n/libs/gt2_6t/apr/openroad/global_connect.tcllambdapdk/gt2n/libs/gt2_6t/apr/openroad/pdngen.tcllambdapdk/gt2n/libs/gt2_6t_w13_elvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w13_hvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w13_lvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w13_svt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w13_ulvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w31_elvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w31_hvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w31_lvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w31_svt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/gt2_6t_w31_ulvt/apr/openroad/tapcells.tcllambdapdk/gt2n/libs/stdcells.pylambdapdk/gt2n/target.py
Summary by CodeRabbit
Release Notes
New Features
Documentation