Skip to content

Conversation

@widlarizer
Copy link
Collaborator

@widlarizer widlarizer commented Nov 20, 2025

Fixes #5491. Retention cells seem to be advanced PDK cells that allow retention of flop state, usually while the main power domain is off. Balloon retention cells loop the output of a DFFSR through a latch to its input. For this reason, to construct them correctly in read_liberty, we have to create latch and ff group state wires before we build the logic that models them.

Additionally, to test this change, this PR modifies filterlib -verilogsim to avoid emitting unsynthesizable verilog when possible. This is possible whenever both clear_preset_var* are defined as either low or high by emitting a process for either state variable separately and adjusting the precedence of clear and preset.

This allowed me to cover the new functionality with tests/liberty/read_liberty.ys which proves equivalence between the cell model for retention.lib created by read_liberty and by filterlib -verilogsim.

@widlarizer widlarizer self-assigned this Nov 20, 2025
@ShinyKate ShinyKate requested a review from gussmith23 November 24, 2025 14:16
@widlarizer widlarizer added the merge-before-release Merge: PR should be included in the next release label Nov 28, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merge-before-release Merge: PR should be included in the next release

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Can't resolve wire name in proprietary Liberty file

2 participants