mirror of https://github.com/YosysHQ/yosys.git
Merge pull request #928 from litghost/add_xc7_sim_models
Add additional cells sim models for core 7-series primitives.
This commit is contained in:
commit
db1a5ec6a2
|
@ -30,10 +30,15 @@ module GND(output G);
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module IBUF(output O, input I);
|
module IBUF(output O, input I);
|
||||||
|
parameter IOSTANDARD = "default";
|
||||||
|
parameter IBUF_LOW_PWR = 0;
|
||||||
assign O = I;
|
assign O = I;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module OBUF(output O, input I);
|
module OBUF(output O, input I);
|
||||||
|
parameter IOSTANDARD = "default";
|
||||||
|
parameter DRIVE = 12;
|
||||||
|
parameter SLEW = "SLOW";
|
||||||
assign O = I;
|
assign O = I;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
@ -41,6 +46,42 @@ module BUFG(output O, input I);
|
||||||
assign O = I;
|
assign O = I;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
module BUFGCTRL(
|
||||||
|
output O,
|
||||||
|
input I0, input I1,
|
||||||
|
input S0, input S1,
|
||||||
|
input CE0, input CE1,
|
||||||
|
input IGNORE0, input IGNORE1);
|
||||||
|
|
||||||
|
parameter [0:0] INIT_OUT = 1'b0;
|
||||||
|
parameter PRESELECT_I0 = "FALSE";
|
||||||
|
parameter PRESELECT_I1 = "FALSE";
|
||||||
|
parameter [0:0] IS_CE0_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_CE1_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_S0_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_S1_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_IGNORE0_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_IGNORE1_INVERTED = 1'b0;
|
||||||
|
|
||||||
|
wire I0_internal = ((CE0 ^ IS_CE0_INVERTED) ? I0 : INIT_OUT);
|
||||||
|
wire I1_internal = ((CE1 ^ IS_CE1_INVERTED) ? I1 : INIT_OUT);
|
||||||
|
wire S0_true = (S0 ^ IS_S0_INVERTED);
|
||||||
|
wire S1_true = (S1 ^ IS_S1_INVERTED);
|
||||||
|
|
||||||
|
assign O = S0_true ? I0_internal : (S1_true ? I1_internal : INIT_OUT);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
||||||
|
module BUFHCE(output O, input I, input CE);
|
||||||
|
|
||||||
|
parameter [0:0] INIT_OUT = 1'b0;
|
||||||
|
parameter CE_TYPE = "SYNC";
|
||||||
|
parameter [0:0] IS_CE_INVERTED = 1'b0;
|
||||||
|
|
||||||
|
assign O = ((CE ^ IS_CE_INVERTED) ? I : INIT_OUT);
|
||||||
|
|
||||||
|
endmodule
|
||||||
|
|
||||||
// module OBUFT(output O, input I, T);
|
// module OBUFT(output O, input I, T);
|
||||||
// assign O = T ? 1'bz : I;
|
// assign O = T ? 1'bz : I;
|
||||||
// endmodule
|
// endmodule
|
||||||
|
@ -98,6 +139,22 @@ module LUT6(output O, input I0, I1, I2, I3, I4, I5);
|
||||||
assign O = I0 ? s1[1] : s1[0];
|
assign O = I0 ? s1[1] : s1[0];
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
module LUT6_2(output O6, output O5, input I0, I1, I2, I3, I4, I5);
|
||||||
|
parameter [63:0] INIT = 0;
|
||||||
|
wire [31: 0] s5 = I5 ? INIT[63:32] : INIT[31: 0];
|
||||||
|
wire [15: 0] s4 = I4 ? s5[31:16] : s5[15: 0];
|
||||||
|
wire [ 7: 0] s3 = I3 ? s4[15: 8] : s4[ 7: 0];
|
||||||
|
wire [ 3: 0] s2 = I2 ? s3[ 7: 4] : s3[ 3: 0];
|
||||||
|
wire [ 1: 0] s1 = I1 ? s2[ 3: 2] : s2[ 1: 0];
|
||||||
|
assign O6 = I0 ? s1[1] : s1[0];
|
||||||
|
|
||||||
|
wire [15: 0] s5_4 = I4 ? INIT[31:16] : INIT[15: 0];
|
||||||
|
wire [ 7: 0] s5_3 = I3 ? s5_4[15: 8] : s5_4[ 7: 0];
|
||||||
|
wire [ 3: 0] s5_2 = I2 ? s5_3[ 7: 4] : s5_3[ 3: 0];
|
||||||
|
wire [ 1: 0] s5_1 = I1 ? s5_2[ 3: 2] : s5_2[ 1: 0];
|
||||||
|
assign O5 = I0 ? s5_1[1] : s5_1[0];
|
||||||
|
endmodule
|
||||||
|
|
||||||
module MUXCY(output O, input CI, DI, S);
|
module MUXCY(output O, input CI, DI, S);
|
||||||
assign O = S ? CI : DI;
|
assign O = S ? CI : DI;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
@ -28,12 +28,12 @@ function xtract_cell_decl()
|
||||||
# xtract_cell_decl BUFG
|
# xtract_cell_decl BUFG
|
||||||
xtract_cell_decl BUFGCE
|
xtract_cell_decl BUFGCE
|
||||||
xtract_cell_decl BUFGCE_1
|
xtract_cell_decl BUFGCE_1
|
||||||
xtract_cell_decl BUFGCTRL
|
#xtract_cell_decl BUFGCTRL
|
||||||
xtract_cell_decl BUFGMUX
|
xtract_cell_decl BUFGMUX
|
||||||
xtract_cell_decl BUFGMUX_1
|
xtract_cell_decl BUFGMUX_1
|
||||||
xtract_cell_decl BUFGMUX_CTRL
|
xtract_cell_decl BUFGMUX_CTRL
|
||||||
xtract_cell_decl BUFH
|
xtract_cell_decl BUFH
|
||||||
xtract_cell_decl BUFHCE
|
#xtract_cell_decl BUFHCE
|
||||||
xtract_cell_decl BUFIO
|
xtract_cell_decl BUFIO
|
||||||
xtract_cell_decl BUFMR
|
xtract_cell_decl BUFMR
|
||||||
xtract_cell_decl BUFMRCE
|
xtract_cell_decl BUFMRCE
|
||||||
|
@ -92,7 +92,7 @@ function xtract_cell_decl()
|
||||||
# xtract_cell_decl LUT4
|
# xtract_cell_decl LUT4
|
||||||
# xtract_cell_decl LUT5
|
# xtract_cell_decl LUT5
|
||||||
# xtract_cell_decl LUT6
|
# xtract_cell_decl LUT6
|
||||||
xtract_cell_decl LUT6_2
|
#xtract_cell_decl LUT6_2
|
||||||
xtract_cell_decl MMCME2_ADV
|
xtract_cell_decl MMCME2_ADV
|
||||||
xtract_cell_decl MMCME2_BASE
|
xtract_cell_decl MMCME2_BASE
|
||||||
# xtract_cell_decl MUXF7
|
# xtract_cell_decl MUXF7
|
||||||
|
|
|
@ -30,29 +30,6 @@ module BUFGCE_1 (...);
|
||||||
input CE, I;
|
input CE, I;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module BUFGCTRL (...);
|
|
||||||
output O;
|
|
||||||
input CE0;
|
|
||||||
input CE1;
|
|
||||||
input I0;
|
|
||||||
input I1;
|
|
||||||
input IGNORE0;
|
|
||||||
input IGNORE1;
|
|
||||||
input S0;
|
|
||||||
input S1;
|
|
||||||
parameter integer INIT_OUT = 0;
|
|
||||||
parameter PRESELECT_I0 = "FALSE";
|
|
||||||
parameter PRESELECT_I1 = "FALSE";
|
|
||||||
parameter [0:0] IS_CE0_INVERTED = 1'b0;
|
|
||||||
parameter [0:0] IS_CE1_INVERTED = 1'b0;
|
|
||||||
parameter [0:0] IS_I0_INVERTED = 1'b0;
|
|
||||||
parameter [0:0] IS_I1_INVERTED = 1'b0;
|
|
||||||
parameter [0:0] IS_IGNORE0_INVERTED = 1'b0;
|
|
||||||
parameter [0:0] IS_IGNORE1_INVERTED = 1'b0;
|
|
||||||
parameter [0:0] IS_S0_INVERTED = 1'b0;
|
|
||||||
parameter [0:0] IS_S1_INVERTED = 1'b0;
|
|
||||||
endmodule
|
|
||||||
|
|
||||||
module BUFGMUX (...);
|
module BUFGMUX (...);
|
||||||
parameter CLK_SEL_TYPE = "SYNC";
|
parameter CLK_SEL_TYPE = "SYNC";
|
||||||
output O;
|
output O;
|
||||||
|
@ -77,15 +54,6 @@ module BUFH (...);
|
||||||
input I;
|
input I;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module BUFHCE (...);
|
|
||||||
parameter CE_TYPE = "SYNC";
|
|
||||||
parameter integer INIT_OUT = 0;
|
|
||||||
parameter [0:0] IS_CE_INVERTED = 1'b0;
|
|
||||||
output O;
|
|
||||||
input CE;
|
|
||||||
input I;
|
|
||||||
endmodule
|
|
||||||
|
|
||||||
module BUFIO (...);
|
module BUFIO (...);
|
||||||
output O;
|
output O;
|
||||||
input I;
|
input I;
|
||||||
|
@ -2420,12 +2388,6 @@ module LDPE (...);
|
||||||
input D, G, GE, PRE;
|
input D, G, GE, PRE;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module LUT6_2 (...);
|
|
||||||
parameter [63:0] INIT = 64'h0000000000000000;
|
|
||||||
input I0, I1, I2, I3, I4, I5;
|
|
||||||
output O5, O6;
|
|
||||||
endmodule
|
|
||||||
|
|
||||||
module MMCME2_ADV (...);
|
module MMCME2_ADV (...);
|
||||||
parameter BANDWIDTH = "OPTIMIZED";
|
parameter BANDWIDTH = "OPTIMIZED";
|
||||||
parameter real CLKFBOUT_MULT_F = 5.000;
|
parameter real CLKFBOUT_MULT_F = 5.000;
|
||||||
|
|
Loading…
Reference in New Issue