Do not allow Q of last cell of variable length SRL to be (* keep *)
authorEddie Hung <eddie@fpgeh.com>
Sat, 24 Aug 2019 01:15:24 +0000 (18:15 -0700)
committerEddie Hung <eddie@fpgeh.com>
Sat, 24 Aug 2019 01:15:24 +0000 (18:15 -0700)
passes/pmgen/xilinx_srl.pmg

index 76134de1a9cb463fc5866c0153090eac1c12a9f0..cfa1cacfbd1f0837f56fc5f2a65998e8bc2ed5fd 100644 (file)
@@ -176,6 +176,7 @@ endcode
 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()
+       select !port(first, \Q)[0].wire->get_bool_attribute(\keep)
        slice idx GetSize(port(first, \Q))
        select nusers(port(first, \Q)[idx]) <= 2
        index <SigBit> port(first, \Q)[idx] === port(shiftx, \A)[shiftx_width-1]