Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
067c268
add assert primitive and basic test
elamdf May 26, 2025
838ccc2
formatting and organization
elamdf May 27, 2025
a4570ad
rename to std_assert
elamdf May 27, 2025
03dc0d6
initial assert in cider
elamdf May 27, 2025
e2acddc
clean up test
elamdf May 29, 2025
c7d99d5
Merge branch 'main' of https://github.com/calyxir/calyx into add-asse…
elamdf Jul 29, 2025
074d094
dummy data so runt doesn't complain
elamdf Jul 29, 2025
3d8482f
expect ninja to crash
elamdf Jul 29, 2025
3f6ed29
lift karmic debt via TODO
elamdf Jul 29, 2025
ef3ae3d
add assert primitive and basic test
elamdf May 26, 2025
b90f8bf
formatting and organization
elamdf May 27, 2025
13e7314
rename to std_assert
elamdf May 27, 2025
86ee0d3
initial assert in cider
elamdf May 27, 2025
df7f872
clean up test
elamdf May 29, 2025
38a0dfc
dummy data so runt doesn't complain
elamdf Jul 29, 2025
ca4a9fa
expect ninja to crash
elamdf Jul 29, 2025
257a266
lift karmic debt via TODO
elamdf Jul 29, 2025
7cb4c1a
Merge branch 'main' into add-assert-primitive
elamdf Aug 1, 2025
5b5f65a
update comments
elamdf Aug 4, 2025
2ecd6c1
add todo and import
elamdf Aug 4, 2025
1def930
assertion errror message
elamdf Aug 4, 2025
58a488b
Merge branch 'add-assert-primitive' of github.com:elamdf/calyx into a…
elamdf Aug 4, 2025
b87a3fc
Merge branch 'main' into add-assert-primitive
elamdf Aug 5, 2025
f6aad81
Merge branch 'main' into add-assert-primitive
EclecticGriffin Aug 25, 2025
749a416
fix the cider primitive impl
EclecticGriffin Aug 25, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 42 additions & 0 deletions cider/tests/primitives/assert.futil
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
import "primitives/core.futil";
import "primitives/binary_operators.futil";
import "primitives/assert.futil";

component main() -> () {
cells {
a = std_const(32, 42);
b = std_const(32, 41);
eq = std_eq(32);
tmp_reg = std_reg(1);
my_assert = assert_prim();
}

wires {
eq.left = a.out;
eq.right = b.out;


my_assert.in = eq.out;
group check_assert {
tmp_reg.in = 1'b1;
tmp_reg.write_en = 1'b1;
my_assert.en = 1'b1;
check_assert[done] = my_assert.out;

}

group check_assert2 {
tmp_reg.in = eq.out;
tmp_reg.write_en = 1'b1;
check_assert2[done] = tmp_reg.done;

}
}

control {
check_assert;
check_assert2;


}
}
8 changes: 8 additions & 0 deletions primitives/assert.futil
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@

extern "assert.sv" {
primitive assert_prim(@data in: 1, en: 1, @clk clk:1, @reset reset: 1) -> (out: 1);
// WARNING: `done` must be referenced, or this will be optimized out
// TODO (elam) how do we `dont_touch` this?


}
14 changes: 14 additions & 0 deletions primitives/assert.sv
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
module assert_prim #() (
input wire logic clk,
input wire logic reset,
input logic in,
input logic en,
output logic out
);
always_ff @(posedge clk) begin
out <= in;
if (in == '0 & en) begin
$fatal(1, "Assertion failed in assert primitive: input was 0");
end
end
endmodule