// Generated by SandPiper(TM) 1.9-2018/02/11-beta from Redwood EDA, LLC. // (Installed here: /home/steve/repos/mono/sandpiper/distro.) // Redwood EDA, LLC does not claim intellectual property rights to this file and provides no warranty regarding its correctness or quality. `include "sandpiper_gen.vh" // // Signals declared top-level. // // For |calc$aa. logic CALC_aa_a1; // For |calc$aa_squared. logic [7:0] CALC_aa_squared_a1, CALC_aa_squared_a2; // For |calc$bb. logic CALC_bb_a1; // For |calc$bb_squared. logic [7:0] CALC_bb_squared_a1, CALC_bb_squared_a2; // For |calc$cc. logic [4:0] CALC_cc_a3; // For |calc$cc_squared. logic [8:0] CALC_cc_squared_a2, CALC_cc_squared_a3; // For |calc$r_aa. logic [31:0] CALC_r_aa_a0, CALC_r_aa_a1; // For |calc$r_bb. logic [31:0] CALC_r_bb_a0, CALC_r_bb_a1; // For |calc$r_valid. logic [31:0] CALC_r_valid_a0, CALC_r_valid_a1; // For |calc$valid. logic CALC_valid_a1, CALC_valid_a2, CALC_valid_a3; // // Scope: |calc // // Clock signals. logic clkP_CALC_valid_a2 ; logic clkP_CALC_valid_a3 ; generate // // Scope: |calc // // For signal $aa, which had no assignment. // Assign to a random value. // verilator lint_save // verilator lint_off WIDTH assign CALC_aa_a1 = CALC_r_aa_a1; // verilator lint_restore // For $aa_squared. always_ff @(posedge clkP_CALC_valid_a2) CALC_aa_squared_a2[7:0] <= CALC_aa_squared_a1[7:0]; // For signal $bb, which had no assignment. // Assign to a random value. // verilator lint_save // verilator lint_off WIDTH assign CALC_bb_a1 = CALC_r_bb_a1; // verilator lint_restore // For $bb_squared. always_ff @(posedge clkP_CALC_valid_a2) CALC_bb_squared_a2[7:0] <= CALC_bb_squared_a1[7:0]; // For $cc_squared. always_ff @(posedge clkP_CALC_valid_a3) CALC_cc_squared_a3[8:0] <= CALC_cc_squared_a2[8:0]; // For random value for missing assignment. assign CALC_r_aa_a0[31:0] = $random() ^ {31'b0, clk}; always_ff @(posedge clk) CALC_r_aa_a1[31:0] <= CALC_r_aa_a0[31:0]; // For random value for missing assignment. assign CALC_r_bb_a0[31:0] = $random() ^ {31'b0, clk}; always_ff @(posedge clk) CALC_r_bb_a1[31:0] <= CALC_r_bb_a0[31:0]; // For random value for missing assignment. assign CALC_r_valid_a0[31:0] = $random() ^ {31'b0, clk}; always_ff @(posedge clk) CALC_r_valid_a1[31:0] <= CALC_r_valid_a0[31:0]; // For signal $valid, which had no assignment. // Assign to a random value. // verilator lint_save // verilator lint_off WIDTH assign CALC_valid_a1 = CALC_r_valid_a1; // verilator lint_restore always_ff @(posedge clk) CALC_valid_a2 <= CALC_valid_a1; always_ff @(posedge clk) CALC_valid_a3 <= CALC_valid_a2; endgenerate // // Gated clocks. // generate // // Scope: |calc // clk_gate gen_clkP_CALC_valid_a2(clkP_CALC_valid_a2, clk, 1'b1, (CALC_valid_a1 ? 1'b1 : 1'bx), 1'b0); clk_gate gen_clkP_CALC_valid_a3(clkP_CALC_valid_a3, clk, 1'b1, (CALC_valid_a2 ? 1'b1 : 1'bx), 1'b0); endgenerate generate // This is awkward, but we need to go into 'generate' context in the line that `includes the declarations file.
\TLV_version 1a: tl-x.org \SV // SystemVerilog module definition could go here. \TLV // enables TL-Verilog constructs |calc // a pipeline, called "calc" ?$valid // condition under which |calc transaction is valid // c = sqrt(a^2 + b^2), computed across 3 pipeline stages @1 $aa_squared[7:0] = $aa * $aa; $bb_squared[7:0] = $bb * $bb; @2 $cc_squared[8:0] = $aa_squared + $bb_squared; @3 $cc[4:0] = sqrt($cc_squared); \SV endmodule
`line 2 "top.m4" 0 //_\TLV_version 1a: tl-x.org, generated by SandPiper(TM) 1.9-2018/02/11-beta `include "sp_default.vh" //_\SV // SystemVerilog module definition could go here. `include "top_gen.sv" //_\TLV // enables TL-Verilog constructs //_|calc // a pipeline, called "calc" //_?$valid // condition under which |calc transaction is valid // c = sqrt(a^2 + b^2), computed across 3 pipeline stages //_@1 assign CALC_aa_squared_a1[7:0] = `WHEN(CALC_valid_a1) CALC_aa_a1 * CALC_aa_a1; assign CALC_bb_squared_a1[7:0] = `WHEN(CALC_valid_a1) CALC_bb_a1 * CALC_bb_a1; //_@2 assign CALC_cc_squared_a2[8:0] = `WHEN(CALC_valid_a2) CALC_aa_squared_a2 + CALC_bb_squared_a2; //_@3 assign CALC_cc_a3[4:0] = `WHEN(CALC_valid_a3) sqrt(CALC_cc_squared_a3); endgenerate //_\SV endmodule