Here's another example that shows just how far removed we are from high-level synthesis.
I need to multiply a 10-bit number by 956. I could use a DSP48, but it's overkill, and to meet timing I'd probably have to pipeline it fully and have 3 cycles of latency. So I write this code and force Vivado not to use DSP48s:
reg [9:0] x; // multiplicand reg [19:0] p; // product always@(posedge clk) p