The-OpenROAD-Project / The-OpenROAD-Project/OpenSTA

Sequential activity propagation should consider duty and activity on the clock pin

Open
#283 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
Verilog
Stars
619
Forks
270
Avg merge
5d 15h
Merged PRs (30d)
4

Description

https://github.com/The-OpenROAD-Project/OpenSTA/blob/9c9b5659d6a7ecbe02ea1204aa89079a77db1d3e/power/Power.cc#L836-L838

Is what propagates power for a sequential element. It only depends on data() and not clock() hence does not consider activity and/or duty on the clock pins.
Propagation should be updated to depend on both clocked_on and not just next_state functions for flops. A similar update may be needed for latches.

Extract from the .lib for a flop.

  ff (IQ,IQN) {
    clocked_on : "CLK"; 
    next_state : "D";
  } 

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start at the propagation code in power/Power.cc around lines 836-838 and trace how data(), clock(), clocked_on, and next_state are used for sequential elements. Determine the corresponding behavior for flops and whether latches need the same treatment; done means propagation accounts for clock activity and duty as well as data activity.

Written by the indexing model from the issue text.

Assessment

Tech stack
cpp
Domain
devtools
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
42/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.