mirror of https://github.com/YosysHQ/yosys.git
Revert "Leave only real black box cells"
This reverts commit 43030db5ff
.
For a synthesis tool, generating EG_LOGIC cells are a good choice, as
they can be furtherly optimized when PnR, although sometimes EG_LOGIC is
not as blackbox as EG_PHY cells (because the latter is more close to the
hardware implementation).
Signed-off-by: Icenowy Zheng <icenowy@aosc.io>
This commit is contained in:
parent
dc6e63d8cd
commit
634d7d1c14
|
@ -1,6 +1,274 @@
|
|||
// Anlogic Eagle - Blackbox cells
|
||||
// FIXME: Create sim models
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_BUF(
|
||||
output o,
|
||||
input i
|
||||
);
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_BUFG(
|
||||
output o,
|
||||
input i
|
||||
);
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_BUFIO(
|
||||
input clki,
|
||||
input rst,
|
||||
input coe,
|
||||
output clko,
|
||||
output clkdiv1,
|
||||
output clkdivx
|
||||
);
|
||||
parameter GSR = "DISABLE";
|
||||
parameter DIV = 2;
|
||||
parameter STOPCLK = "DISABLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_BUFGMUX(
|
||||
output o,
|
||||
input i0,
|
||||
input i1,
|
||||
input s
|
||||
);
|
||||
parameter INIT_OUT = "0";
|
||||
parameter PRESELECT_I0 = "TRUE";
|
||||
parameter PRESELECT_I1 = "FALSE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_MBOOT(
|
||||
input rebootn,
|
||||
input [7:0] dynamic_addr
|
||||
);
|
||||
parameter ADDR_SOURCE_SEL = "STATIC";
|
||||
parameter STATIC_ADDR = 8'b00000000;
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_DNA(
|
||||
output dout,
|
||||
input clk,
|
||||
input din,
|
||||
input shift_en
|
||||
);
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_GCTRL(
|
||||
output done,
|
||||
output highz
|
||||
);
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_GSRN(
|
||||
input gsrn,
|
||||
input sync_clk
|
||||
);
|
||||
parameter GSRN_SYNC_SEL = "DISABLE";
|
||||
parameter USR_GSRN_EN = "DISABLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_CCLK(
|
||||
output cclk,
|
||||
input en
|
||||
);
|
||||
parameter FREQ = "4.5";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_IDELAY(
|
||||
output o,
|
||||
input i
|
||||
);
|
||||
parameter INDEL = 0;
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_IDDR(
|
||||
output q1,
|
||||
output q0,
|
||||
input clk,
|
||||
input d,
|
||||
input rst
|
||||
);
|
||||
parameter ASYNCRST = "ENABLE";
|
||||
parameter PIPEMODE = "PIPED";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_ODDR(
|
||||
output q,
|
||||
input clk,
|
||||
input d1,
|
||||
input d0,
|
||||
input rst
|
||||
);
|
||||
parameter ASYNCRST = "ENABLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_IDDRx2(
|
||||
output q3,
|
||||
output q2,
|
||||
output q1,
|
||||
output q0,
|
||||
input pclk,
|
||||
input sclk,
|
||||
input d,
|
||||
input rst
|
||||
);
|
||||
parameter ASYNCRST = "ENABLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_ODELAY(
|
||||
output o,
|
||||
input i
|
||||
);
|
||||
parameter OUTDEL = 0;
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_ODDRx2(
|
||||
output q,
|
||||
input pclk,
|
||||
input sclk,
|
||||
input d3,
|
||||
input d2,
|
||||
input d1,
|
||||
input d0,
|
||||
input rst
|
||||
);
|
||||
parameter ASYNCRST = "ENABLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_ODDRx2l(
|
||||
output q,
|
||||
input sclk,
|
||||
input d3,
|
||||
input d2,
|
||||
input d1,
|
||||
input d0,
|
||||
input rst
|
||||
);
|
||||
parameter ASYNCRST = "ENABLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_FIFO(
|
||||
input rst,
|
||||
input [DATA_WIDTH_W-1:0] di,
|
||||
output [DATA_WIDTH_R-1:0] do,
|
||||
input clkw,
|
||||
input we,
|
||||
input clkr,
|
||||
input re,
|
||||
input ore,
|
||||
input [2:0] csw,
|
||||
input [2:0] csr,
|
||||
output empty_flag,
|
||||
output aempty_flag,
|
||||
output full_flag,
|
||||
output afull_flag
|
||||
);
|
||||
parameter DATA_WIDTH_W = 9;
|
||||
parameter DATA_WIDTH_R = DATA_WIDTH_W;
|
||||
parameter DATA_DEPTH_W = 1024;
|
||||
parameter DATA_DEPTH_R = DATA_WIDTH_W * DATA_DEPTH_W / DATA_WIDTH_R;
|
||||
parameter MODE = "FIFO8K";
|
||||
parameter REGMODE_W = "NOREG";
|
||||
parameter REGMODE_R = "NOREG";
|
||||
parameter E = 0;
|
||||
parameter AE = 6;
|
||||
parameter AF = DATA_DEPTH_W - 6;
|
||||
parameter F = DATA_DEPTH_W;
|
||||
parameter GSR = "DISABLE";
|
||||
parameter RESETMODE = "ASYNC";
|
||||
parameter ASYNC_RESET_RELEASE = "SYNC";
|
||||
parameter ENDIAN = "LITTLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_DRAM(
|
||||
input [DATA_WIDTH_W-1:0] di,
|
||||
input [ADDR_WIDTH_W-1:0] waddr,
|
||||
input wclk,
|
||||
input we,
|
||||
output [DATA_WIDTH_R-1:0] do,
|
||||
input [ADDR_WIDTH_R-1:0] raddr
|
||||
);
|
||||
parameter DATA_WIDTH_W = 9;
|
||||
parameter ADDR_WIDTH_W = 10;
|
||||
parameter DATA_DEPTH_W = 2 ** ADDR_WIDTH_W;
|
||||
parameter DATA_WIDTH_R = 9;
|
||||
parameter ADDR_WIDTH_R = 10;
|
||||
parameter DATA_DEPTH_R = 2 ** ADDR_WIDTH_R;
|
||||
parameter INIT_FILE = "NONE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_DRAM16X4(
|
||||
input [3:0] di,
|
||||
input [3:0] waddr,
|
||||
input wclk,
|
||||
input we,
|
||||
input [3:0]raddr,
|
||||
output [3:0]do
|
||||
);
|
||||
parameter INIT_D0=16'h0000;
|
||||
parameter INIT_D1=16'h0000;
|
||||
parameter INIT_D2=16'h0000;
|
||||
parameter INIT_D3=16'h0000;
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_MULT(
|
||||
output [OUTPUT_WIDTH-1:0] p,
|
||||
input [INPUT_WIDTH_A-1:0] a,
|
||||
input [INPUT_WIDTH_B-1:0] b,
|
||||
input cea,
|
||||
input ceb,
|
||||
input cepd,
|
||||
input clk,
|
||||
input rstan,
|
||||
input rstbn,
|
||||
input rstpdn
|
||||
);
|
||||
parameter INPUT_WIDTH_A = 18;
|
||||
parameter INPUT_WIDTH_B = 18;
|
||||
parameter OUTPUT_WIDTH = 36;
|
||||
parameter INPUTFORMAT = "SIGNED";
|
||||
parameter INPUTREGA = "ENABLE";
|
||||
parameter INPUTREGB = "ENABLE";
|
||||
parameter OUTPUTREG = "ENABLE";
|
||||
parameter SRMODE = "ASYNC";
|
||||
parameter IMPLEMENT = "AUTO";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_SEQ_DIV(
|
||||
input clk,
|
||||
input rst,
|
||||
input start,
|
||||
input [NUMER_WIDTH-1:0] numer,
|
||||
input [DENOM_WIDTH-1:0] denom,
|
||||
output [NUMER_WIDTH-1:0] quotient,
|
||||
output [DENOM_WIDTH-1:0] remain,
|
||||
output done
|
||||
);
|
||||
parameter NUMER_WIDTH = 16;
|
||||
parameter DENOM_WIDTH = 16;
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_PHY_BRAM(
|
||||
output [8:0] doa,
|
||||
|
@ -695,6 +963,50 @@ module EG_PHY_PLL(
|
|||
parameter GEN_BASIC_CLOCK = "DISABLE";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_LOGIC_BRAM(
|
||||
output [DATA_WIDTH_A-1:0] doa,
|
||||
output [DATA_WIDTH_B-1:0] dob,
|
||||
input [DATA_WIDTH_A-1:0] dia,
|
||||
input [DATA_WIDTH_B-1:0] dib,
|
||||
input cea,
|
||||
input ocea,
|
||||
input clka,
|
||||
input wea,
|
||||
input rsta,
|
||||
input ceb,
|
||||
input oceb,
|
||||
input clkb,
|
||||
input web,
|
||||
input rstb,
|
||||
input [BYTE_A - 1 : 0] bea,
|
||||
input [BYTE_B - 1 : 0] beb,
|
||||
input [ADDR_WIDTH_A-1:0] addra,
|
||||
input [ADDR_WIDTH_B-1:0] addrb
|
||||
);
|
||||
parameter DATA_WIDTH_A = 9;
|
||||
parameter DATA_WIDTH_B = DATA_WIDTH_A;
|
||||
parameter ADDR_WIDTH_A = 10;
|
||||
parameter ADDR_WIDTH_B = ADDR_WIDTH_A;
|
||||
parameter DATA_DEPTH_A = 2 ** ADDR_WIDTH_A;
|
||||
parameter DATA_DEPTH_B = 2 ** ADDR_WIDTH_B;
|
||||
parameter BYTE_ENABLE = 0;
|
||||
parameter BYTE_A = BYTE_ENABLE == 0 ? 1 : DATA_WIDTH_A / BYTE_ENABLE;
|
||||
parameter BYTE_B = BYTE_ENABLE == 0 ? 1 : DATA_WIDTH_B / BYTE_ENABLE;
|
||||
parameter MODE = "DP";
|
||||
parameter REGMODE_A = "NOREG";
|
||||
parameter REGMODE_B = "NOREG";
|
||||
parameter WRITEMODE_A = "NORMAL";
|
||||
parameter WRITEMODE_B = "NORMAL";
|
||||
parameter RESETMODE = "SYNC";
|
||||
parameter DEBUGGABLE = "NO";
|
||||
parameter PACKABLE = "NO";
|
||||
parameter FORCE_KEEP = "OFF";
|
||||
parameter INIT_FILE = "NONE";
|
||||
parameter FILL_ALL = "NONE";
|
||||
parameter IMPLEMENT = "9K";
|
||||
endmodule
|
||||
|
||||
(* blackbox *)
|
||||
module EG_PHY_ADC(
|
||||
input clk,
|
||||
|
|
Loading…
Reference in New Issue