pattern ql_dsp_macc

state <IdString> add_ba
state <IdString> mux_ab

state <int> mul_nusers
state <int> add_nusers
state <int> mux_nusers
state <int> ff_d_nusers
state <int> ff_q_nusers

match mul
    select mul->type.in($mul)
    select nusers(port(mul, \Y)) <= 3
    set mul_nusers nusers(port(mul, \Y))
endmatch

match add
    select add->type.in($add, $sub)
    choice <IdString> AB {\A, \B}
    define <IdString> BA (AB == \A ? \B : \A)
    index <SigSpec> port(add, AB) === port(mul, \Y)
    select nusers(port(add, \Y)) <= 3
    set add_nusers nusers(port(add, \Y))
    set add_ba BA
endmatch

match mux
    select mux->type.in($mux)
    choice <IdString> AB {\A, \B}
    define <IdString> BA (AB == \A ? \B : \A)
    index <SigSpec> port(mux, AB) === port(mul, \Y)
    index <SigSpec> port(mux, BA) === port(add, \Y)
    select nusers(port(mux, \Y)) <= 3
    set mux_nusers nusers(port(mux, \Y))
    set mux_ab AB
    optional
endmatch

match ff
    select ff->type.in($dff, $adff, $dffe, $adffe)
    index <SigSpec> port(ff, \D) === (mux == nullptr ? port(add, \Y) : port(mux, \Y))
    index <SigSpec> port(ff, \Q) === port(add, add_ba)
    set ff_d_nusers nusers(port(ff, \D))
    set ff_q_nusers nusers(port(ff, \Q))
endmatch

code
    accept;
endcode
