mirror of https://github.com/YosysHQ/yosys.git
xilinx: Add FDRSE_1, FDCPE_1.
This commit is contained in:
parent
a77fa6709b
commit
cd6f0732f3
|
@ -633,6 +633,41 @@ module FDRSE (
|
||||||
Q <= d;
|
Q <= d;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
module FDRSE_1 (
|
||||||
|
output reg Q,
|
||||||
|
(* clkbuf_sink *)
|
||||||
|
(* invertible_pin = "IS_C_INVERTED" *)
|
||||||
|
input C,
|
||||||
|
(* invertible_pin = "IS_CE_INVERTED" *)
|
||||||
|
input CE,
|
||||||
|
(* invertible_pin = "IS_D_INVERTED" *)
|
||||||
|
input D,
|
||||||
|
(* invertible_pin = "IS_R_INVERTED" *)
|
||||||
|
input R,
|
||||||
|
(* invertible_pin = "IS_S_INVERTED" *)
|
||||||
|
input S
|
||||||
|
);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
parameter [0:0] IS_C_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_CE_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_D_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_R_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_S_INVERTED = 1'b0;
|
||||||
|
initial Q <= INIT;
|
||||||
|
wire c = C ^ IS_C_INVERTED;
|
||||||
|
wire ce = CE ^ IS_CE_INVERTED;
|
||||||
|
wire d = D ^ IS_D_INVERTED;
|
||||||
|
wire r = R ^ IS_R_INVERTED;
|
||||||
|
wire s = S ^ IS_S_INVERTED;
|
||||||
|
always @(negedge c)
|
||||||
|
if (r)
|
||||||
|
Q <= 0;
|
||||||
|
else if (s)
|
||||||
|
Q <= 1;
|
||||||
|
else if (ce)
|
||||||
|
Q <= d;
|
||||||
|
endmodule
|
||||||
|
|
||||||
(* abc9_box, lib_whitebox *)
|
(* abc9_box, lib_whitebox *)
|
||||||
module FDCE (
|
module FDCE (
|
||||||
output reg Q,
|
output reg Q,
|
||||||
|
@ -837,6 +872,51 @@ module FDCPE (
|
||||||
assign Q = qs ? qp : qc;
|
assign Q = qs ? qp : qc;
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
|
module FDCPE_1 (
|
||||||
|
output wire Q,
|
||||||
|
(* clkbuf_sink *)
|
||||||
|
(* invertible_pin = "IS_C_INVERTED" *)
|
||||||
|
input C,
|
||||||
|
input CE,
|
||||||
|
(* invertible_pin = "IS_CLR_INVERTED" *)
|
||||||
|
input CLR,
|
||||||
|
input D,
|
||||||
|
(* invertible_pin = "IS_PRE_INVERTED" *)
|
||||||
|
input PRE
|
||||||
|
);
|
||||||
|
parameter [0:0] INIT = 1'b0;
|
||||||
|
parameter [0:0] IS_C_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_CLR_INVERTED = 1'b0;
|
||||||
|
parameter [0:0] IS_PRE_INVERTED = 1'b0;
|
||||||
|
wire c = C ^ IS_C_INVERTED;
|
||||||
|
wire clr = CLR ^ IS_CLR_INVERTED;
|
||||||
|
wire pre = PRE ^ IS_PRE_INVERTED;
|
||||||
|
// Hacky model to avoid simulation-synthesis mismatches.
|
||||||
|
reg qc, qp, qs;
|
||||||
|
initial qc = INIT;
|
||||||
|
initial qp = INIT;
|
||||||
|
initial qs = 0;
|
||||||
|
always @(negedge c, posedge clr) begin
|
||||||
|
if (clr)
|
||||||
|
qc <= 0;
|
||||||
|
else if (CE)
|
||||||
|
qc <= D;
|
||||||
|
end
|
||||||
|
always @(negedge c, posedge pre) begin
|
||||||
|
if (pre)
|
||||||
|
qp <= 1;
|
||||||
|
else if (CE)
|
||||||
|
qp <= D;
|
||||||
|
end
|
||||||
|
always @* begin
|
||||||
|
if (clr)
|
||||||
|
qs <= 0;
|
||||||
|
else if (pre)
|
||||||
|
qs <= 1;
|
||||||
|
end
|
||||||
|
assign Q = qs ? qp : qc;
|
||||||
|
endmodule
|
||||||
|
|
||||||
module LDCE (
|
module LDCE (
|
||||||
output reg Q,
|
output reg Q,
|
||||||
(* invertible_pin = "IS_CLR_INVERTED" *)
|
(* invertible_pin = "IS_CLR_INVERTED" *)
|
||||||
|
|
Loading…
Reference in New Issue