mirror of https://github.com/YosysHQ/yosys.git
Fix and cleanup ice40 boxes for carry in/out
This commit is contained in:
parent
7903ebe3e0
commit
63182ed57d
|
@ -1,113 +1,17 @@
|
||||||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_hx8k.txt
|
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_hx8k.txt
|
||||||
|
|
||||||
# NB: Inputs/Outputs must be ordered alphabetically
|
# NB: Inputs/Outputs must be ordered alphabetically
|
||||||
|
# (with exceptions for carry in/out)
|
||||||
|
|
||||||
# Inputs: C D
|
# Inputs: I0 I1 CI
|
||||||
# Outputs: Q
|
|
||||||
SB_DFF 1 0 2 1
|
|
||||||
- -
|
|
||||||
|
|
||||||
# Inputs: C D E
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFE 2 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFSR 3 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFR 4 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFSS 5 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFS 6 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFESR 7 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFER 8 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFESS 9 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFES 10 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFN 11 0 2 1
|
|
||||||
- -
|
|
||||||
|
|
||||||
# Inputs: C D E
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNE 12 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNSR 13 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNR 14 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNSS 15 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNS 16 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNESR 17 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNER 18 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNESS 19 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNES 20 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: CI I0 I1
|
|
||||||
# Outputs: CO
|
# Outputs: CO
|
||||||
SB_CARRY 21 1 3 1
|
# (NB: carry chain input/output must be last
|
||||||
126 259 231
|
# input/output and have been moved there
|
||||||
|
# overriding the alphabetical ordering)
|
||||||
|
SB_CARRY 1 1 3 1
|
||||||
|
259 231 126
|
||||||
|
|
||||||
# Inputs: I0 I1 I2 I3
|
# Inputs: I0 I1 I2 I3
|
||||||
# Outputs: O
|
# Outputs: O
|
||||||
SB_LUT4 22 1 4 1
|
SB_LUT4 2 1 4 1
|
||||||
449 400 379 316
|
449 400 379 316
|
||||||
|
|
|
@ -1,113 +1,17 @@
|
||||||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_lp8k.txt
|
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_lp8k.txt
|
||||||
|
|
||||||
# NB: Inputs/Outputs must be ordered alphabetically
|
# NB: Inputs/Outputs must be ordered alphabetically
|
||||||
|
# (with exceptions for carry in/out)
|
||||||
# Inputs: C D
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFF 1 0 2 1
|
|
||||||
- -
|
|
||||||
|
|
||||||
# Inputs: C D E
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFE 2 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFSR 3 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFR 4 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFSS 5 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFS 6 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFESR 7 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFER 8 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFESS 9 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFES 10 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFN 11 0 2 1
|
|
||||||
- -
|
|
||||||
|
|
||||||
# Inputs: C D E
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNE 12 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNSR 13 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNR 14 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNSS 15 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNS 16 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNESR 17 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNER 18 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNESS 19 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNES 20 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: CI I0 I1
|
# Inputs: CI I0 I1
|
||||||
# Outputs: CO
|
# Outputs: CO
|
||||||
SB_CARRY 21 1 3 1
|
# (NB: carry chain input/output must be last
|
||||||
186 675 609
|
# input/output and have been moved there
|
||||||
|
# overriding the alphabetical ordering)
|
||||||
|
SB_CARRY 1 1 3 1
|
||||||
|
675 609 186
|
||||||
|
|
||||||
# Inputs: I0 I1 I2 I3
|
# Inputs: I0 I1 I2 I3
|
||||||
# Outputs: O
|
# Outputs: O
|
||||||
SB_LUT4 22 1 4 1
|
SB_LUT4 2 1 4 1
|
||||||
661 589 558 465
|
661 589 558 465
|
||||||
|
|
|
@ -1,113 +1,17 @@
|
||||||
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_up5k.txt
|
# From https://github.com/cliffordwolf/icestorm/blob/be0bca0/icefuzz/timings_up5k.txt
|
||||||
|
|
||||||
# NB: Inputs/Outputs must be ordered alphabetically
|
# NB: Inputs/Outputs must be ordered alphabetically
|
||||||
|
# (with exceptions for carry in/out)
|
||||||
|
|
||||||
# Inputs: C D
|
# Inputs: I0 I1 CI
|
||||||
# Outputs: Q
|
|
||||||
SB_DFF 1 0 2 1
|
|
||||||
- -
|
|
||||||
|
|
||||||
# Inputs: C D E
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFE 2 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFSR 3 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFR 4 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFSS 5 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFS 6 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFESR 7 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFER 8 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFESS 9 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFES 10 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFN 11 0 2 1
|
|
||||||
- -
|
|
||||||
|
|
||||||
# Inputs: C D E
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNE 12 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNSR 13 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNR 14 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNSS 15 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNS 16 0 3 1
|
|
||||||
- - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNESR 17 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E R
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNER 18 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNESS 19 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: C D E S
|
|
||||||
# Outputs: Q
|
|
||||||
SB_DFFNES 20 0 4 1
|
|
||||||
- - - -
|
|
||||||
|
|
||||||
# Inputs: CI I0 I1
|
|
||||||
# Outputs: CO
|
# Outputs: CO
|
||||||
SB_CARRY 21 1 3 1
|
# (NB: carry chain input/output must be last
|
||||||
278 675 609
|
# input/output and have been moved there
|
||||||
|
# overriding the alphabetical ordering)
|
||||||
|
SB_CARRY 1 1 3 1
|
||||||
|
675 609 278
|
||||||
|
|
||||||
# Inputs: I0 I1 I2 I3
|
# Inputs: I0 I1 I2 I3
|
||||||
# Outputs: O
|
# Outputs: O
|
||||||
SB_LUT4 22 1 4 1
|
SB_LUT4 2 1 4 1
|
||||||
1285 1231 1205 874
|
1285 1231 1205 874
|
||||||
|
|
|
@ -127,7 +127,7 @@ endmodule
|
||||||
|
|
||||||
// SiliconBlue Logic Cells
|
// SiliconBlue Logic Cells
|
||||||
|
|
||||||
(* abc_box_id = 22, lib_whitebox *)
|
(* abc_box_id = 2, lib_whitebox *)
|
||||||
module SB_LUT4 (output O, input I0, I1, I2, I3);
|
module SB_LUT4 (output O, input I0, I1, I2, I3);
|
||||||
parameter [15:0] LUT_INIT = 0;
|
parameter [15:0] LUT_INIT = 0;
|
||||||
wire [7:0] s3 = I3 ? LUT_INIT[15:8] : LUT_INIT[7:0];
|
wire [7:0] s3 = I3 ? LUT_INIT[15:8] : LUT_INIT[7:0];
|
||||||
|
@ -136,7 +136,7 @@ module SB_LUT4 (output O, input I0, I1, I2, I3);
|
||||||
assign O = I0 ? s1[1] : s1[0];
|
assign O = I0 ? s1[1] : s1[0];
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
(* abc_box_id = 21, abc_carry, lib_whitebox *)
|
(* abc_box_id = 1, abc_carry, lib_whitebox *)
|
||||||
module SB_CARRY ((* abc_carry_out *) output CO, input I0, I1, (* abc_carry_in *) input CI);
|
module SB_CARRY ((* abc_carry_out *) output CO, input I0, I1, (* abc_carry_in *) input CI);
|
||||||
assign CO = (I0 && I1) || ((I0 || I1) && CI);
|
assign CO = (I0 && I1) || ((I0 || I1) && CI);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
Loading…
Reference in New Issue