lowRISC / lowRISC/opentitan

Improve get_toggle_excl_bits for non-power-of-two ranges

Open
#28,457 1 comment 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
SystemVerilog
Stars
3.6k
Forks
1.1k
Avg merge
2d 22h
Merged PRs (30d)
141

Description

`get_toggle_excl_bits()` computes the number if bits that do not toggle for coverage. This function only works for addresses of a power two currently but not with the relaxed contraint on the crossbars where comparators are sued for arbitrary address ranges.

I think we can do better than returning `[]` for the bits that cannot be toggled by a given address range if that address range is not a power of two. I see this as a DV improvement (likely important for coverage closure) more than a blocker for this PR, though. Suggest creating an tracking issue

_Originally posted by @andreaskurth in https://github.com/lowRISC/opentitan/pull/28452#discussion_r2415769822_

Contributor guide

Open the contributing guide

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 by locating get_toggle_excl_bits() and reading how its result is consumed by coverage and crossbar address-range handling. Compare the current power-of-two assumption with arbitrary comparator ranges; done means the function identifies bits that cannot toggle for non-power-of-two ranges instead of returning [] without degrading DV coverage behavior.

Written by the indexing model from the issue text.

Assessment

Domain
embedded-iot, testing-qa
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.