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

New Rule: procedural_continuous_assignment #273

Closed
remes-codasip opened this issue Nov 21, 2023 · 3 comments
Closed

New Rule: procedural_continuous_assignment #273

remes-codasip opened this issue Nov 21, 2023 · 3 comments

Comments

@remes-codasip
Copy link
Contributor

The following code contains "Procesural Continuous Assignment" statement (assign in an always block) which is not synthesizable (at least not by all tools).

module test (
    input logic clk,
    input logic a,
    input logic b,
    output logic c
);

always_ff @(posedge clk)
    assign c = a + b;


endmodule

Can you please add a rule to check for such constructs?

@DaveMcEwan
Copy link
Contributor

Seems like a sensible idea. From the IEEE1800-2017, page 242:

NOTE - The procedural assign and deassign constructs are under consideration for deprecation. See Annex C.

@remes-codasip Would you like some assistance to create this rule? There are some guidelines here. I think you'd be looking to detect either ProceduralContinuousAssignmentAssign or other variants of procedural_continuous_assignment, depending on exactly what you're looking for. To implement this, you could modify this rule.

@remes-codasip
Copy link
Contributor Author

@DaveMcEwan thanks for the hints you sent me.

I have created #276 and would welcome feedback (I think the documentation of the rule could be better, but I'm not familiar enough with SystemVerilog to write it better).

@DaveMcEwan
Copy link
Contributor

@remes-codasip @dalance The PR was merged so this can be closed.

@dalance dalance closed this as completed Apr 1, 2024
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

No branches or pull requests

3 participants