-
Notifications
You must be signed in to change notification settings - Fork 1
Interface for determining package pins #38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
7647f03
to
7b415ce
Compare
|
chipflow_lib/platforms/utils.py
Outdated
|
||
@property | ||
@abc.abstractmethod | ||
def heartbeat(self) -> Dict(int, Pin): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The clock in some cases comes as two pins close to each other to be connected to XTAL.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
hmm, good point. Is that a config option to generate a oscillator?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Currently we have nothing to specify use of XTAL, this needs to be added somehow.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The clock in some cases comes as two pins close to each other to be connected to XTAL.
If you have external crystal you will need a crystal oscillator analog block on the chip. The actual clock will then be an output of this oscillator.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
What also can happen is that clock is delivered as differential signal; but this can also be for digital signals. Likely only to add when use case is there.
I've updated this PR to implement a complete interface for package pins as discussed. Key enhancements:
All tests are passing. Ready for review! |
|
4146e57
to
e14af0c
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Haven't looked through the tests yet, but these are my comments so far
chipflow_lib/platforms/utils.py
Outdated
core_jtag: JTAGPins | ||
|
||
def to_set(self) -> Set[Pin]: | ||
return {p for pp in self.core_power for p in asdict(pp).values()} | \ |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
what is the asdict
doing here?
chipflow_lib/platforms/utils.py
Outdated
ret = [] | ||
for q in range(0,3): | ||
ret.append(sorted(quadrants[q])) | ||
return ret |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
it's worth noting that this won't give pins in bonding pad order which might be relevant in some cases - this can only be determined on a pattern-by-package (or by custom design in the case of a substrate or RDL for a WLCSP package).
An example for the PGA144 we used for the previous tapeout is the table on page 3 of https://europractice-ic.com/wp-content/uploads/2019/06/CD_PGA144.pdf but this is always going to differ
7d71c83
to
5fc63cf
Compare
3ec99b5
to
203e0d6
Compare
2ceb202
to
d63aa26
Compare
…efinition Also enables grid array and quad format packages
Has some WIP for better pin allocation. This should become shell and padring aware |
Package Pin Interface
This PR implements a structured interface for determining package pins in ChipFlow.
Key Changes
Added abstract methods to define standard pin types in package definitions:
Implemented these methods in both package types:
Enhanced the Package class to:
Added comprehensive tests in test_package_pins.py
Created documentation in docs/package_pins.md
Backward Compatibility
The implementation maintains backward compatibility with the existing TOML configuration format while introducing a new, more flexible format.
Ready for Review
All tests are passing, and the implementation is ready for review.