Skip to main content

MUL_FUNC_F

Constant MUL_FUNC_F 

Source
pub const MUL_FUNC_F: &str = r#"  // The integer multiplies (MulHiU, MulOvfS) run on the engine's multiplier unit (ST_MU..ST_MUW); every other
  // integer func code that reaches here answers 0.
  function signed [63:0] func_f(input [7:0] op, input signed [63:0] a, input signed [63:0] x);
    begin
      func_f = 64'sd0;
    end
  endfunction
"#;
Expand description

The combinational func_f for the over-the-wire SoC: no integer func code computes here. DivS/ModS/FloorDivS/Pow (codes 0–3) run on the engine’s sequential datapath (wpe_soc_template.v st==6, a magnitude-restoring divider and a repeat-multiply), MulHiU (4) and MulOvfS (12) on its multiplier unit (ST_MU..ST_MUW), and the float lane on the FPU, so no multiply or divide shares a cycle with the cell walk. Shared by all three SoC engines (behavioral/synth/hw) so they agree byte-for-byte; the sequencing and results are proven ≡ FuncUnit::eval (== the VM) under iverilog.