diff --git a/flow/platforms/common/lcu_kogge_stone.v b/flow/platforms/common/lcu_kogge_stone.v new file mode 100644 index 0000000..e865c07 --- /dev/null +++ b/flow/platforms/common/lcu_kogge_stone.v @@ -0,0 +1,34 @@ +(* techmap_celltype = "$lcu" *) +module _80_lcu_kogge_stone (P, G, CI, CO); + parameter WIDTH = 2; + + (* force_downto *) + input [WIDTH-1:0] P, G; + input CI; + + (* force_downto *) + output [WIDTH-1:0] CO; + + integer i, j; + (* force_downto *) + reg [WIDTH-1:0] p, g; + + wire [1023:0] _TECHMAP_DO_ = "proc; opt -fast"; + + always @* begin + p = P; + g = G; + + // in almost all cases CI will be constant zero + g[0] = g[0] | (p[0] & CI); + + for (i = 0; i < $clog2(WIDTH); i = i + 1) begin + for (j = WIDTH - 1; j >= 2**i; j = j - 1) begin + g[j] = g[j] | p[j] & g[j - 2**i]; + p[j] = p[j] & p[j - 2**i]; + end + end + end + + assign CO = g; +endmodule diff --git a/flow/scripts/global_place_skip_io.tcl b/flow/scripts/global_place_skip_io.tcl index b528856..ff05f36 100644 --- a/flow/scripts/global_place_skip_io.tcl +++ b/flow/scripts/global_place_skip_io.tcl @@ -4,8 +4,6 @@ load_design 2_floorplan.odb 2_floorplan.sdc if { [env_var_exists_and_non_empty FLOORPLAN_DEF] } { puts "FLOORPLAN_DEF is set. Skipping global placement without IOs" -} elseif { [all_pins_placed] } { - puts "All pins are placed. Skipping global placement without IOs" } else { log_cmd global_placement -skip_io -density [place_density_with_lb_addon] \ -pad_left $::env(CELL_PAD_IN_SITES_GLOBAL_PLACEMENT) \ diff --git a/tools/yosys b/tools/yosys index 863f409..9ed031d 160000 --- a/tools/yosys +++ b/tools/yosys @@ -1 +1 @@ -Subproject commit 863f40978e798f8002bac989a1cb1c755ef1165e +Subproject commit 9ed031ddd588442f22be13ce608547a5809b62f0