mirror of https://github.com/YosysHQ/yosys.git
ice40: move over to specify blocks for -abc9
This commit is contained in:
parent
a85c55113f
commit
fb60d82971
|
@ -29,12 +29,6 @@ $(eval $(call add_share_file,share/ice40,techlibs/ice40/brams.txt))
|
|||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/brams_map.v))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/dsp_map.v))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/abc9_model.v))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/abc9_hx.box))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/abc9_hx.lut))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/abc9_lp.box))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/abc9_lp.lut))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/abc9_u.box))
|
||||
$(eval $(call add_share_file,share/ice40,techlibs/ice40/abc9_u.lut))
|
||||
|
||||
$(eval $(call add_gen_share_file,share/ice40,techlibs/ice40/brams_init1.vh))
|
||||
$(eval $(call add_gen_share_file,share/ice40,techlibs/ice40/brams_init2.vh))
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_hx8k.txt
|
||||
|
||||
# NB: Box inputs/outputs must each be in the same order
|
||||
# as their corresponding module definition
|
||||
# (with exceptions detailed below)
|
||||
|
||||
# Box 1 : $__ICE40_CARRY_WRAPPER (private cell used to preserve
|
||||
# SB_LUT4+SB_CARRY)
|
||||
# (Exception: carry chain input/output must be the
|
||||
# last input and output and the entire bus has been
|
||||
# moved there overriding the otherwise
|
||||
# alphabetical ordering)
|
||||
# name ID w/b ins outs
|
||||
$__ICE40_CARRY_WRAPPER 1 1 5 2
|
||||
#A B I0 I3 CI
|
||||
400 379 449 316 316 # O
|
||||
259 231 - - 126 # CO
|
|
@ -1,6 +0,0 @@
|
|||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_hx8k.txt
|
||||
# I3 I2 I1 I0
|
||||
1 1 316
|
||||
2 1 316 379
|
||||
3 1 316 379 400
|
||||
4 1 316 379 400 449
|
|
@ -1,17 +0,0 @@
|
|||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_lp8k.txt
|
||||
|
||||
# NB: Box inputs/outputs must each be in the same order
|
||||
# as their corresponding module definition
|
||||
# (with exceptions detailed below)
|
||||
|
||||
# Box 1 : $__ICE40_CARRY_WRAPPER (private cell used to preserve
|
||||
# SB_LUT4+SB_CARRY)
|
||||
# (Exception: carry chain input/output must be the
|
||||
# last input and output and the entire bus has been
|
||||
# moved there overriding the otherwise
|
||||
# alphabetical ordering)
|
||||
# name ID w/b ins outs
|
||||
$__ICE40_CARRY_WRAPPER 1 1 5 2
|
||||
#A B I0 I3 CI
|
||||
589 558 661 465 465 # O
|
||||
675 609 - - 186 # CO
|
|
@ -1,6 +0,0 @@
|
|||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_lp8k.txt
|
||||
# I3 I2 I1 I0
|
||||
1 1 465
|
||||
2 1 465 558
|
||||
3 1 465 558 589
|
||||
4 1 465 558 589 661
|
|
@ -1,4 +1,4 @@
|
|||
(* abc9_box_id = 1, lib_whitebox *)
|
||||
(* abc9_box, lib_whitebox *)
|
||||
module \$__ICE40_CARRY_WRAPPER (
|
||||
(* abc9_carry *)
|
||||
output CO,
|
||||
|
@ -26,4 +26,61 @@ module \$__ICE40_CARRY_WRAPPER (
|
|||
.I3(I3_OR_CI),
|
||||
.O(O)
|
||||
);
|
||||
`ifdef ICE40_HX
|
||||
specify
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L79
|
||||
(CI => O) = (126, 105);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L80
|
||||
(I0 => O) = (449, 386);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L82
|
||||
(A => CO) = (259, 245);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L83
|
||||
(A => O) = (400, 379);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L85
|
||||
(B => CO) = (231, 133);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L86
|
||||
(B => O) = (379, 351);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_hx1k.txt#L88
|
||||
(I3 => O) = (316, 288);
|
||||
(CI => O) = (316, 288);
|
||||
endspecify
|
||||
`endif
|
||||
`ifdef ICE40_LP
|
||||
specify
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L79
|
||||
(CI => O) = (186, 155);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L80
|
||||
(I0 => O) = (662, 569);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L82
|
||||
(A => CO) = (382, 362);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L83
|
||||
(A => O) = (589, 558);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L85
|
||||
(B => CO) = (341, 196);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L86
|
||||
(B => O) = (558, 517);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_lp1k.txt#L88
|
||||
(I3 => O) = (465, 423);
|
||||
(CI => O) = (465, 423);
|
||||
endspecify
|
||||
`endif
|
||||
`ifdef ICE40_U
|
||||
specify
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L91
|
||||
(CI => O) = (278, 278);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L92
|
||||
(I0 => O) = (1245, 1285);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L94
|
||||
(A => CO) = (675, 662);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L95
|
||||
(A => O) = (1179, 1232);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L97
|
||||
(B => CO) = (609, 358);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L98
|
||||
(B => O) = (1179, 1205);
|
||||
// https://github.com/cliffordwolf/icestorm/blob/be0bca0230d6fe1102e0a360b953fbb0d273a39f/icefuzz/timings_up5k.txt#L100
|
||||
(I3 => O) = (861, 874);
|
||||
(CI => O) = (861, 874);
|
||||
endspecify
|
||||
`endif
|
||||
endmodule
|
||||
|
|
|
@ -1,17 +0,0 @@
|
|||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_up5k.txt
|
||||
|
||||
# NB: Box inputs/outputs must each be in the same order
|
||||
# as their corresponding module definition
|
||||
# (with exceptions detailed below)
|
||||
|
||||
# Box 1 : $__ICE40_CARRY_WRAPPER (private cell used to preserve
|
||||
# SB_LUT4+SB_CARRY)
|
||||
# (Exception: carry chain input/output must be the
|
||||
# last input and output and the entire bus has been
|
||||
# moved there overriding the otherwise
|
||||
# alphabetical ordering)
|
||||
# name ID w/b ins outs
|
||||
$__ICE40_CARRY_WRAPPER 1 1 5 2
|
||||
#A B I0 I3 CI
|
||||
1231 1205 1285 874 874 # O
|
||||
675 609 - - 278 # CO
|
|
@ -1,6 +0,0 @@
|
|||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_up5k.txt
|
||||
# I3 I2 I1 I0
|
||||
1 1 874
|
||||
2 1 874 1205
|
||||
3 1 874 1205 1231
|
||||
4 1 874 1205 1231 1285
|
File diff suppressed because it is too large
Load Diff
|
@ -245,7 +245,7 @@ struct SynthIce40Pass : public ScriptPass
|
|||
define = "-D ICE40_U";
|
||||
else
|
||||
define = "-D ICE40_HX";
|
||||
run("read_verilog " + define + " -lib +/ice40/cells_sim.v");
|
||||
run("read_verilog " + define + " -lib -specify +/ice40/cells_sim.v");
|
||||
run(stringf("hierarchy -check %s", help_mode ? "-top <top>" : top_opt.c_str()));
|
||||
run("proc");
|
||||
}
|
||||
|
@ -352,7 +352,7 @@ struct SynthIce40Pass : public ScriptPass
|
|||
}
|
||||
if (!noabc) {
|
||||
if (abc9) {
|
||||
run("read_verilog -icells -lib +/ice40/abc9_model.v");
|
||||
run("read_verilog -icells -lib -specify +/abc9_model.v +/ice40/abc9_model.v");
|
||||
int wire_delay;
|
||||
if (device_opt == "lp")
|
||||
wire_delay = 400;
|
||||
|
@ -360,7 +360,7 @@ struct SynthIce40Pass : public ScriptPass
|
|||
wire_delay = 750;
|
||||
else
|
||||
wire_delay = 250;
|
||||
run(stringf("abc9 -W %d -lut +/ice40/abc9_%s.lut -box +/ice40/abc9_%s.box", wire_delay, device_opt.c_str(), device_opt.c_str()));
|
||||
run(stringf("abc9 -W %d", wire_delay, device_opt.c_str(), device_opt.c_str()));
|
||||
}
|
||||
else
|
||||
run("abc -dress -lut 4", "(skip if -noabc)");
|
||||
|
|
Loading…
Reference in New Issue