Skip to content
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

[asserts] Different assert disable condition for clocks #4035

Open
tjaychen opened this issue Nov 3, 2020 · 7 comments
Open

[asserts] Different assert disable condition for clocks #4035

tjaychen opened this issue Nov 3, 2020 · 7 comments
Assignees
Labels
Component:DV DV issue: testbench, test case, etc. Earlgrey-PROD Candidate Temporary label to triage issues into Earlgrey-PROD Milestones IP:clkmgr Milestone:V3 Type:Enhancement Feature requests, enhancements

Comments

@tjaychen
Copy link

tjaychen commented Nov 3, 2020

For known output asserts in clocking modules, see here, the clocks technically should be known even before the reset release.

There should be a different condition for these specific cases other than reset.

estimate 12

@tjaychen tjaychen self-assigned this Nov 3, 2020
@cindychip
Copy link
Contributor

cindychip commented Nov 6, 2020

Hey Tim,
Not sure if this is what you are looking for. I wonder if this would work-
ASSERT_KNOWN(ExportClocksKownO_A, clocks_${intf}_o, clk_i, 0)

@tjaychen
Copy link
Author

tjaychen commented Nov 6, 2020

ah that's not QUITE it. Because i think the clocks will be unknown at some point (when the system is still spinning up). But they do need to become known before the reset release.

So I think i need to find a different signal somehow..except that signal might not exist in clkmgr itself :)

@msfschaffner
Copy link
Contributor

@tjaychen can this issue be updated?

@msfschaffner msfschaffner added Component:DV DV issue: testbench, test case, etc. Priority:P2 Priority: medium Type:Enhancement Feature requests, enhancements labels Mar 25, 2022
@msfschaffner msfschaffner added this to the Project: M2 milestone Mar 25, 2022
@msfschaffner msfschaffner modified the milestones: Project: M2, Project: M3 Oct 28, 2022
@andreaskurth
Copy link
Contributor

Triaged for clkmgr. Assigning to M2.5 with Priority:P3 Priority: low because I think it would be nice to have stricter assertions but what we have covers the essentials.

@andreaskurth andreaskurth added Priority:P3 Priority: low Triaged and removed Priority:P2 Priority: medium labels Feb 27, 2023
@msfschaffner
Copy link
Contributor

CC @matutem

@msfschaffner msfschaffner added the Earlgrey-PROD Candidate Temporary label to triage issues into Earlgrey-PROD Milestones label Oct 6, 2023
@matutem
Copy link
Contributor

matutem commented Oct 7, 2023

Hmm, maybe we should clock these assertions on each clock's reset. Something like

assert property @(posedge rst_ni) !$isunknown(clk) else error;

Or we could use clk_aon for an assertion as in this pseudo code

`ASSERT(the clock known, $rose |-> !$isunknown($past(the clock)), clk_aon_i)

@matutem
Copy link
Contributor

matutem commented Aug 16, 2024

Creating per clock and reset pair SVA for this condition seems tricky. Perhaps we can change strategy and check that when the root resets are released the AST clk_en outputs are active. We can create assertions that rely on this for some derived resets, like those that are software triggered, since we can check a clock is active against a root clock by checking it at the root clock negedges, similar to what is done in https:/lowRISC/opentitan/blob/master/hw/ip_templates/clkmgr/dv/sva/clkmgr_div_sva_if.sv.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Component:DV DV issue: testbench, test case, etc. Earlgrey-PROD Candidate Temporary label to triage issues into Earlgrey-PROD Milestones IP:clkmgr Milestone:V3 Type:Enhancement Feature requests, enhancements
Projects
None yet
Development

No branches or pull requests

6 participants