现代编译器(如C / C ++,Fortran,Julia等)的一个更有用的功能是它们能够在生成二进制文件之前对代码执行优化。如果我在Verilog编写一个函数来制作FPGA“硬件”特殊功能,那么编译器会执行任何优化吗?作为一个具体的例子,假设我想设置一个使用Estrin's scheme for parallelized evaluation的多项式求值器,并且一些系数为0,编译器会看到并优化掉有效的NOOP吗?
答案 0 :(得分:5)
是。您的示例中的优化称为" 常量传播"。在优化布尔或算术表达式时,所有编译器中的技术都是相同的。编译器将简化它可以表达的任何表达式。另一个优化是" 死代码消除"如果分支条件变为常数,则可以消除未选择的分支,并且分支变为无条件。但是在将RTL转换为硬件表示之后,优化过程与软件编译器有很大不同。
答案 1 :(得分:0)
Verilog在generate语句中有循环,在合成时总是完全展开。