Skip to content

[ImportVerilog] comb.shrs with operand time mismatch #8695

@fabianschuiki

Description

@fabianschuiki
$ circt-verilog
rtl/expression_00154.v:73:61: error: 'comb.shrs' op requires all operands to have the same type
  assign y16 = ({1{((b4>>a3)!==$signed((b1)))}}!=({4{p8}}<<((a3>>>p5)>>>(b3>=a5))));
                                                            ^
rtl/expression_00154.v:73:61: note: see current operation: %108 = "comb.shrs"(%105, %107) : (i15, i4) -> i4
module expression_00154(a0, a1, a2, a3, a4, a5, b0, b1, b2, b3, b4, b5, y);
  input [3:0] a0;
  input [4:0] a1;
  input [5:0] a2;
  input signed [3:0] a3;
  input signed [4:0] a4;
  input signed [5:0] a5;

  input [3:0] b0;
  input [4:0] b1;
  input [5:0] b2;
  input signed [3:0] b3;
  input signed [4:0] b4;
  input signed [5:0] b5;

  wire [3:0] y0;
  wire [4:0] y1;
  wire [5:0] y2;
  wire signed [3:0] y3;
  wire signed [4:0] y4;
  wire signed [5:0] y5;
  wire [3:0] y6;
  wire [4:0] y7;
  wire [5:0] y8;
  wire signed [3:0] y9;
  wire signed [4:0] y10;
  wire signed [5:0] y11;
  wire [3:0] y12;
  wire [4:0] y13;
  wire [5:0] y14;
  wire signed [3:0] y15;
  wire signed [4:0] y16;
  wire signed [5:0] y17;

  output [89:0] y;
  assign y = {y0,y1,y2,y3,y4,y5,y6,y7,y8,y9,y10,y11,y12,y13,y14,y15,y16,y17};

  localparam [3:0] p0 = (({4{(3'd7)}}<<{(-5'sd12)})?{((5'd8)<=(2'd1)),{(5'd9)}}:((3'd2)?(4'd15):(-5'sd14)));
  localparam [4:0] p1 = ((((2'd2)>=(2'd0))|{((4'sd1)>=(5'sd6))})>>{{(4'sd4),(-3'sd3)},((-5'sd3)>>(-4'sd3))});
  localparam [5:0] p2 = (^{1{{{(5'sd4),(4'sd5),(-5'sd10)},{(3'd5),(5'd10),(-3'sd2)}}}});
  localparam signed [3:0] p3 = (((4'd7)<=(2'sd1))?(5'sd6):(5'sd15));
  localparam signed [4:0] p4 = ((~&(~|(!({4{(2'sd0)}}>>{(3'd5),(2'd3),(-4'sd2)}))))!=((~{1{(-3'sd1)}})&&(2'd3)));
  localparam signed [5:0] p5 = {4{(-3'sd3)}};
  localparam [3:0] p6 = (^({(~(~&{(4'sd0)}))}?{(~^(2'd3)),((-5'sd7)?(4'd5):(-3'sd2))}:(-(!(&((5'd16)>(2'sd1)))))));
  localparam [4:0] p7 = (+((4'sd6)|(-5'sd0)));
  localparam [5:0] p8 = {((3'd7)!==(-5'sd8))};
  localparam signed [3:0] p9 = (&{2{((3'd1)<=(4'sd0))}});
  localparam signed [4:0] p10 = (((2'd2)+(3'sd3))>=((-4'sd4)^~(3'd2)));
  localparam signed [5:0] p11 = (3'd7);
  localparam [3:0] p12 = {1{{2{{1{((3'd0)?(5'sd2):(3'd6))}}}}}};
  localparam [4:0] p13 = (2'd1);
  localparam [5:0] p14 = {(5'sd14),((!(+(5'd25)))?{1{(2'sd1)}}:(5'd7))};
  localparam signed [3:0] p15 = ((^{(-4'sd0),(2'd1)})!=(3'd3));
  localparam signed [4:0] p16 = (~^(^(~^(+(~^(^(4'd7)))))));
  localparam signed [5:0] p17 = (|(!((((2'd2)<<<(5'sd1))-((5'd16)>=(3'sd0)))===(((-4'sd1)^(3'd6))^~((-2'sd0)-(4'sd1))))));

  assign y0 = {2{(b4?a4:b2)}};
  assign y1 = (b0?a0:b5);
  assign y2 = (((b0/b4)));
  assign y3 = {{b0,p2},{p11,p16,b4}};
  assign y4 = (5'sd6);
  assign y5 = (+(+((4'd5)^~(a1<<a2))));
  assign y6 = (2'sd1);
  assign y7 = (((((^a1)+(b5-a4))==={(4'sd2),(a3^~b5)}))-(|((~|(+{a0,b3,b2}))==={(a3^a4)})));
  assign y8 = (3'd4);
  assign y9 = (~^({2{a1}}>>$unsigned((a5&&b4))));
  assign y10 = (|{3{{{p11,p10},{2{p17}}}}});
  assign y11 = (|p8);
  assign y12 = {2{((p17||a5)-(|p12))}};
  assign y13 = ((a2^b2)===(b5>>>a4));
  assign y14 = (((a5?b1:b3)>$unsigned(a5))^~($unsigned(b2)?{b1,b2,b3}:$signed(b5)));
  assign y15 = (p16>>>b1);
  assign y16 = ({1{((b4>>a3)!==$signed((b1)))}}!=({4{p8}}<<((a3>>>p5)>>>(b3>=a5))));
  assign y17 = (|((&(a2<=b0))+$unsigned((b1+b4))));
endmodule

Metadata

Metadata

Assignees

No one assigned

    Type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions