# Testing edge cases where ports are signed/have different widths/shift amounts # greater than the size read_verilog <> 20; assign shr_us = in_u >> 20; assign shr_su = in_s >> 20; assign shr_ss = in_s >> 20; assign sshl_uu = in_u <<< 20; assign sshl_us = in_u <<< 20; assign sshl_su = in_s <<< 20; assign sshl_ss = in_s <<< 20; assign sshr_uu = in_u >>> 20; assign sshr_us = in_u >>> 20; assign sshr_su = in_s >>> 20; assign sshr_ss = in_s >>> 20; wire [7:0] shamt = 20; assign shiftx_uu = in_u[shamt +: 8]; assign shiftx_us = in_u[shamt +: 8]; assign shiftx_su = in_s[shamt +: 8]; assign shiftx_ss = in_s[shamt +: 8]; endmodule EOT select -assert-count 4 t:$shl select -assert-count 4 t:$shr select -assert-count 4 t:$sshl select -assert-count 4 t:$sshr select -assert-count 4 t:$shiftx equiv_opt opt_expr design -load postopt select -assert-none t:$shl select -assert-none t:$shr select -assert-none t:$sshl select -assert-none t:$sshr select -assert-none t:$shiftx design -reset read_verilog <> 36'hfffffffff; assign sshl = in <<< 36'hfffffffff; assign sshr = in >>> 36'hfffffffff; assign shiftx = in[36'hfffffffff +: 8]; wire signed [35:0] shamt = 36'hfffffffff; assign shl_s = in << shamt; assign shr_s = in >> shamt; assign sshl_s = in <<< shamt; assign sshr_s = in >>> shamt; assign shiftx_s = in[shamt +: 8]; endmodule EOT select -assert-count 2 t:$shl select -assert-count 2 t:$shr select -assert-count 2 t:$sshl select -assert-count 2 t:$sshr select -assert-count 1 t:$shiftx equiv_opt opt_expr design -load postopt select -assert-none t:$shl select -assert-none t:$shr select -assert-none t:$sshl select -assert-none t:$sshr select -assert-none t:$shiftx