diff --git a/dataflow_neuro/cell_lib_async.act b/dataflow_neuro/cell_lib_async.act index e6b8e6a..cb76535 100644 --- a/dataflow_neuro/cell_lib_async.act +++ b/dataflow_neuro/cell_lib_async.act @@ -276,6 +276,20 @@ namespace tmpl { y {-1}; _y{-1}} } + export defcell A_2C_RB_X4 (bool ! y; bool? c1, c2, pr_B, sr_B; bool? vdd, vss) + { + bool _y; + prs{ + (~c1 & ~c2) | ~pr_B -> _y+ + c1 & c2 & sr_B -> _y- + _y => y- + } + sizing { + leak_adjust <- 1; + p_n_mode <- 1; + y {-4}; _y{-1}} + } + export defcell A_2C_R_X1 (bool ! y; bool? c1, c2, pr_B, sr_B; bool? vdd, vss) { prs{ @@ -478,24 +492,24 @@ namespace tmpl { p_n_mode <- 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) - } - } + // 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) + // } + // } }}