Skip to content

Fix verification generation for event driven simulators #2455

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

Merged
merged 6 commits into from
May 21, 2025

Conversation

andrewb1999
Copy link
Collaborator

Event driven simulators (such as vivado xsim and synopsys vcs) behave fundamentally differently than cycle based simulators like icarus and verilator. Rather than taking a full cycle step at a time, individual values within a cycle can be updated independently of each other, which makes the current way of combinationally checking disjoint guards invalid. We can fix this issue by only performing disjoint checks at the positive edge of the clock, which is fine because it's the only time that we truly care about the guards being disjoint. Without these fixes you have to turn off verification to run calyx verilog through commercial simulators.

@rachitnigam
Copy link
Contributor

Thanks for the changes @andrewb1999! There are two failing tests. Could you please update them to retrigger the build?

@rachitnigam
Copy link
Contributor

Once the change is working, let's merge it!

@rachitnigam rachitnigam enabled auto-merge (squash) May 2, 2025 21:33
@rachitnigam rachitnigam merged commit 2892ee0 into main May 21, 2025
18 checks passed
@rachitnigam rachitnigam deleted the event-driven-sim branch May 21, 2025 21:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants