Many of your modules are just combinatorial. Those won't place and route without timing issues, when your input sizes are large and the frequency is high (eg. frq >= 300 Mhz). Alsoy why should I use modules, when I can just write my combinatorial logic in-place. E.g. my_reg <= a * b + c;
You should add pipelined versions of your comb modules.
For example, module multiply_piped #(.AW(32), .BW(32), .DELAY(5)) , and module multiply_data_piped #(.AW(32), .BW(32), .DATAW(64) .DELAY(5)).
The latter is also delaying data, to ensure they all make the same progress.
Many of your modules are just combinatorial. Those won't place and route without timing issues, when your input sizes are large and the frequency is high (eg. frq >= 300 Mhz). Alsoy why should I use modules, when I can just write my combinatorial logic in-place. E.g.
my_reg <= a * b + c;You should add pipelined versions of your comb modules.
For example,
module multiply_piped #(.AW(32), .BW(32), .DELAY(5)), andmodule multiply_data_piped #(.AW(32), .BW(32), .DATAW(64) .DELAY(5)).The latter is also delaying data, to ensure they all make the same progress.