FPGA 语言的编译器是否执行优化?

Do Compilers for FPGA Languages Perform Optimizations?

C/C++、Fortran、Julia 等计算机语言的现代编译器的一个更有用的功能是它们能够在生成二进制文件之前对代码执行优化。如果我要用 Verilog 编写一个函数来制作 FPGA "hardware" 特殊函数,编译器会执行任何优化吗?作为一个具体的例子,假设我想设置一个使用 Estrin's scheme for parallelized evaluation 的多项式求值器,并且一些系数为 0,编译器会看到并优化掉有效的 NOOP 吗?

是的。您示例中的优化称为“constant propagation”。在优化布尔或算术表达式时,所有编译器的技术都是相同的。编译器将尽可能简化任何表达式。另一个优化是“死代码消除”如果一个分支条件原来是一个常量,则可以消除未选择的分支,并且采用的分支变为无条件的。但RTL转换为硬件表示后,优化过程与软件编译器有很大不同。

Verilog 在生成语句中有循环,它们总是在综合时完全展开。