Skip to content

Commit

Permalink
Merge pull request #4607 from povik/ql-nodiv
Browse files Browse the repository at this point in the history
quicklogic: Avoid carry chains in division mapping
  • Loading branch information
povik authored Oct 7, 2024
2 parents 1f517d6 + ca5c2fd commit 6c1450f
Show file tree
Hide file tree
Showing 3 changed files with 18 additions and 2 deletions.
3 changes: 2 additions & 1 deletion techlibs/common/techmap.v
Original file line number Diff line number Diff line change
Expand Up @@ -304,6 +304,7 @@ endmodule
// Divide and Modulo
// --------------------------------------------------------

`ifndef NODIV
module \$__div_mod_u (A, B, Y, R);
parameter WIDTH = 1;

Expand Down Expand Up @@ -531,7 +532,7 @@ module _90_modfloor (A, B, Y);
.R(Y)
);
endmodule

`endif

// --------------------------------------------------------
// Power
Expand Down
3 changes: 2 additions & 1 deletion techlibs/quicklogic/synth_quicklogic.cc
Original file line number Diff line number Diff line change
Expand Up @@ -266,7 +266,8 @@ struct SynthQuickLogicPass : public ScriptPass {

if (check_label("map_gates")) {
if (inferAdder && family == "qlf_k6n10f") {
run("techmap -map +/techmap.v -map " + lib_path + family + "/arith_map.v", "(unless -no_adder)");
run("techmap -map +/techmap.v -map " + lib_path + family + "/arith_map.v -D NODIV", "(unless -no_adder)");
run("techmap", "(unless -no_adder)");
} else {
run("techmap");
}
Expand Down
14 changes: 14 additions & 0 deletions tests/arch/quicklogic/qlf_k6n10f/div.ys
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# division by constants should not infer carry chains.
read_verilog <<EOF

module top (input [15:0] a, output [15:0] y);
assign y = a / 3;
endmodule

EOF

equiv_opt -assert -map +/quicklogic/qlf_k6n10f/cells_sim.v synth_quicklogic -family qlf_k6n10f
design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design)
cd top # Constrain all select calls below inside the top module
select -assert-max 100 t:$lut
select -assert-none t:$lut %% t:* %D

0 comments on commit 6c1450f

Please sign in to comment.