Skip to content

Combinational Loops arise when updating from Clash .99 #1677

Open
@jamieChipscan

Description

@jamieChipscan

Hi all,

I'm a bit new to Clash, but am working on bringing some legacy code from .99 up to the most recent version. The original code has lines like:

nsec2 = mux (count .==. 0) nsec nsec2
That previously compiled to

always @(*) begin if(b_1) result_4 = t_1; else result_4 = result_4; end

However, the same lines now introduce a non-stable combinational loop when synthesized.

assign result_2 = b ? s_0 : result_2;
Is there some general solution to these errors, like explicitly adding an intermediary register? I didn't notice note of this in the migration guide or blog posts.

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions