From 6bbb8ebdd5a95f00ec994c5df5152eab41e39d1c Mon Sep 17 00:00:00 2001 From: Yann Herklotz Date: Fri, 12 Apr 2019 17:15:10 +0100 Subject: Add vivado bugs --- bugs/vivado/2_original.v | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 bugs/vivado/2_original.v (limited to 'bugs/vivado/2_original.v') diff --git a/bugs/vivado/2_original.v b/bugs/vivado/2_original.v new file mode 100644 index 0000000..f60b789 --- /dev/null +++ b/bugs/vivado/2_original.v @@ -0,0 +1,44 @@ +(* use_dsp48="no" *) module top + (y, clk, wire0, wire1, wire2, wire3); + output wire [163:0] y; + input wire clk; + input wire signed [11:0] wire0; + input wire [13:0] wire1; + input wire signed [7:0] wire2; + input wire signed [3:0] wire3; + wire signed [12:0] wire19; + wire [6:0] wire18; + wire [4:0] wire17; + wire signed [12:0] wire16; + wire signed [19:0] wire15; + wire [7:0] wire14; + wire wire13; + wire [10:0] wire12; + wire signed [9:0] wire11; + wire signed [16:0] wire10; + reg [15:0] reg9; + reg signed [11:0] reg8; + wire [6:0] wire7; + wire signed [6:0] wire6; + wire [10:0] wire5; + wire [5:0] wire4; + assign wire4 = $unsigned(($unsigned((-6'h11)) ? ((wire3 ? wire3 : (8'h0)) && $signed(wire2)) : (19'he))); + assign wire5 = wire0; + assign wire6 = (5'h4); + assign wire7 = (wire4 ? {wire2, wire3, wire0, (-9'h6), (20'h10), wire1, (-1'hd), (-2'h10), (6'hc), (-16'hd), wire0} : $unsigned($unsigned((16'h5)))); + always @(posedge clk) begin + reg8 = wire6; + reg9 = wire0; + end + assign wire10 = (+wire0); + assign wire11 = $unsigned({(wire6 || (1'h2))}); + assign wire12 = (12'h7); + assign wire13 = {wire5, $unsigned(((-17'hd) ? wire5 : (-18'he))), (((9'h8) ? (11'he) : reg8) <<< (~&(-8'h2))), ({reg9, wire1, (3'h12), (-5'hc)} | (&(-1'h12)))}; + assign wire14 = ((3'h5) >>> ($unsigned((wire6 ? reg9 : (-16'hb))) > ((wire2 ^ (-20'h1)) ? ((11'h14) ? wire12 : (-10'h13)) : {(-15'h11), wire0, (-3'he), (-12'h14), (-3'hd), (-19'h11)}))); + assign wire15 = $unsigned(wire14); + assign wire16 = ({((-15'hc) >= (2'ha)), (wire15 || reg8), $signed(wire12), {(-10'h12), wire7, wire1, (-19'h14), (5'ha), wire0, wire4, (15'h2), (14'hc), reg9, (19'hb), wire5, (8'h8), wire11, (-11'hc), wire5, wire2, (17'h0), (13'hb), wire2}, (1'h13), (11'hc), (9'h13), (-5'h2), $signed((1'hf)), (reg9 << wire2), {(11'h6), reg8, wire15, wire5, (16'ha), (20'ha), (-5'h8), wire14, (-4'h7), wire4, (4'ha), reg9, (-1'h2)}, $unsigned(reg9), ((-12'h1) ? wire3 : (11'h0)), (|(3'h3)), reg9, {(-13'h2), (-16'h13)}, wire2, (^~wire1), $signed(reg8)} == $signed({(-12'hf), wire11, (-14'h2), (13'he), wire4, reg8, (6'h7), reg9, reg8, wire4, wire3})); + assign wire17 = ((wire13 ? ((7'h14) ? (-14'hb) : (-9'h7)) : (wire6 ? (14'he) : wire0)) ? $unsigned($unsigned(((-2'h5) * wire7))) : $unsigned($unsigned((wire13 || wire2)))); + assign wire18 = wire3; + assign wire19 = wire2; + assign y = {wire19, wire18, wire17, wire16, wire15, wire14, wire13, wire12, wire11, wire10, reg9, reg8, wire7, wire6, wire5, wire4}; +endmodule -- cgit