Check for non unique nusers/fanouts
authorEddie Hung <eddie@fpgeh.com>
Fri, 23 Aug 2019 21:32:36 +0000 (14:32 -0700)
committerEddie Hung <eddie@fpgeh.com>
Fri, 23 Aug 2019 21:32:36 +0000 (14:32 -0700)
passes/pmgen/xilinx_srl.pmg

index 5d74b91bc0daccf30c666efe98661d5663face35..99fefba00985eb81371044363587a190dbb0fb0a 100644 (file)
@@ -170,7 +170,7 @@ match first
        select first->type.in($_DFF_N_, $_DFF_P_, $_DFFE_NN_, $_DFFE_NP_, $_DFFE_PN_, $_DFFE_PP_, $dff, $dffe)
        select !first->has_keep_attr()
        slice idx GetSize(port(first, \Q))
-       select nusers(port(first, \Q)[idx]) == 2
+       select nusers(port(first, \Q)[idx], false /* unique */) == 2
        index <SigBit> port(first, \Q)[idx] === port(shiftx, \A)[shiftx_width-1]
        set slice idx
 endmatch
@@ -197,7 +197,7 @@ match next
        select !next->has_keep_attr()
        select !port(next, \D)[0].wire->get_bool_attribute(\keep)
        slice idx GetSize(port(next, \Q))
-       select nusers(port(next, \Q)[idx]) <= 3
+       select nusers(port(next, \Q)[idx], false /* unique */) == 3
        index <IdString> next->type === chain.back().first->type
        index <SigBit> port(next, \Q)[idx] === port(chain.back().first, \D)[chain.back().second]
        index <SigBit> port(next, \Q)[idx] === port(shiftx, \A)[shiftx_width-1-GetSize(chain)]