trying arbiter
This commit is contained in:
parent
68fea3633e
commit
97b0be5af0
@ -478,6 +478,24 @@ namespace tmpl {
|
|||||||
p_n_mode <- 1;
|
p_n_mode <- 1;
|
||||||
y {-1}}
|
y {-1}}
|
||||||
}
|
}
|
||||||
|
export defcell arbiter_handshake(bool in1_r, in1_a,in2_r, in2_a out_r, out_a)
|
||||||
|
{
|
||||||
|
bool _u, _v;
|
||||||
|
A_2C_B_X1 cel1(.c1 = out_a,.c2 = v,.y = in1_a);
|
||||||
|
A_2C_B_X1 cel2(.c1 = out_a,.c2 = u,.y = in2_a);
|
||||||
|
prs {
|
||||||
|
[keeper=0] in1_v & _v -> _u-
|
||||||
|
[keeper=0] ~in1_v | ~_v -> _u+
|
||||||
|
[keeper=0] in2_v & _u -> _v-
|
||||||
|
[keeper=0] ~in2_v | ~_u -> _v+
|
||||||
|
[keeper=0] ~_u | ~in2_a => u+
|
||||||
|
[keeper=0] ~_v | ~in1_a => v+
|
||||||
|
[keeper=0] u | v => out_r
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
mk_excllo(_u, _v)
|
||||||
|
}
|
||||||
|
}
|
||||||
}}
|
}}
|
||||||
|
|
||||||
|
|
||||||
|
33
test/unit_tests/arbiter_2/test.act
Normal file
33
test/unit_tests/arbiter_2/test.act
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
defproc arbiter (bool a, b, u, v)
|
||||||
|
{
|
||||||
|
bool _u, _v;
|
||||||
|
prs {
|
||||||
|
[keeper=0] a & _v -> _u-
|
||||||
|
[keeper=0] ~a | ~_v -> _u+
|
||||||
|
[keeper=0] b & _u -> _v-
|
||||||
|
[keeper=0] ~b | ~_u -> _v+
|
||||||
|
[keeper=0] _u => u-
|
||||||
|
[keeper=0] _v => v-
|
||||||
|
}
|
||||||
|
spec {
|
||||||
|
mk_excllo(_u, _v)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
bool Reset;
|
||||||
|
|
||||||
|
defproc driver(bool r, a)
|
||||||
|
{
|
||||||
|
prs {
|
||||||
|
Reset | a => r-
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
defproc test()
|
||||||
|
{
|
||||||
|
driver d1, d2;
|
||||||
|
arbiter a(d1.r, d2.r, d1.a, d2.a);
|
||||||
|
}
|
||||||
|
|
||||||
|
test t;
|
8
test/unit_tests/arbiter_2/test.prsim
Normal file
8
test/unit_tests/arbiter_2/test.prsim
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
watchall
|
||||||
|
cycle
|
||||||
|
set Reset 0
|
||||||
|
cycle
|
||||||
|
|
||||||
|
status X
|
||||||
|
mode run
|
||||||
|
system "echo 'finished'"
|
Loading…
Reference in New Issue
Block a user