read_verilog <> (w * (3'b110)); endmodule EOT prep -nokeepdc equiv_opt -assert peepopt design -load postopt clean select -assert-count 1 t:$shr select -assert-count 1 t:$mul select -assert-count 0 t:$shr t:$mul %% t:* %D #################### design -reset read_verilog <> (S*3); endmodule EOT prep design -save gold peepopt design -stash gate design -import gold -as gold peepopt_shiftmul_2 design -import gate -as gate peepopt_shiftmul_2 miter -equiv -make_assert -make_outputs -ignore_gold_x -flatten gold gate miter sat -verify -show-public -enable_undef -prove-asserts miter cd gate select -assert-count 1 t:$shr select -assert-count 1 t:$mul select -assert-count 0 t:$shr t:$mul %% t:* %D #################### design -reset read_verilog <> (S*5); endmodule EOT prep design -save gold peepopt design -stash gate design -import gold -as gold peepopt_shiftmul_3 design -import gate -as gate peepopt_shiftmul_3 miter -equiv -make_assert -make_outputs -ignore_gold_x -flatten gold gate miter sat -verify -show-public -enable_undef -prove-asserts miter cd gate clean select -assert-count 1 t:$bmux select -assert-count 0 t:$shr select -assert-count 0 t:$mul #################### design -reset read_verilog <> (S*8), checked by SAT miter design -reset read_verilog <> (S*8); endmodule EOT prep design -save gold peepopt design -stash gate design -import gold -as gold peepopt_shiftpow2_1 design -import gate -as gate peepopt_shiftpow2_1 miter -equiv -make_assert -make_outputs -ignore_gold_x -flatten gold gate miter sat -verify -show-public -enable_undef -prove-asserts miter cd gate clean select -assert-count 1 t:$bmux select -assert-count 0 t:$shr #################### # shiftpow2: width smaller than stride is non-overlapping design -reset read_verilog <> (S*8); endmodule EOT prep design -save gold peepopt design -stash gate design -import gold -as gold peepopt_shiftpow2_narrow design -import gate -as gate peepopt_shiftpow2_narrow miter -equiv -make_assert -make_outputs -ignore_gold_x -flatten gold gate miter sat -verify -show-public -enable_undef -prove-asserts miter cd gate clean select -assert-count 1 t:$bmux select -assert-count 0 t:$shr #################### # shiftpow2: signed part-select with out-of-range padding design -reset read_verilog <> (S*8); endmodule EOT prep design -save gold peepopt design -stash gate design -import gold -as gold peepopt_shiftpow2_signed_shr design -import gate -as gate peepopt_shiftpow2_signed_shr miter -equiv -make_assert -make_outputs -flatten gold gate miter sat -verify -show-public -prove-asserts miter cd gate clean select -assert-count 1 t:$bmux select -assert-count 0 t:$shr #################### # shiftpow2 must NOT fire for overlapping selections design -reset read_verilog <> (S*4); endmodule EOT prep -nokeepdc peepopt clean select -assert-count 0 t:$bmux select -assert-count 1 t:$shr #################### # shiftpow2: shiftmul can expose a non-overlapping power-of-two stride design -reset read_verilog <