blob: e29b7f3411cb21193f82c5d763f32e46ffc52c2c [file] [log] [blame]
// Copyright 2020-2022 F4PGA Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.
//
// SPDX-License-Identifier: Apache-2.0
module my_dff (
input d,
clk,
output reg q
);
always @(posedge clk) q <= d;
endmodule
module my_dffe (
input d,
clk,
en,
output reg q
);
initial begin
q = 0;
end
always @(posedge clk) if (en) q <= d;
endmodule
module my_dffr_p (
input d,
clk,
clr,
output reg q
);
always @(posedge clk or posedge clr)
if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffr_p_2 (
input d1,
input d2,
clk,
clr,
output reg q1,
output reg q2
);
always @(posedge clk or posedge clr)
if (clr) begin
q1 <= 1'b0;
q2 <= 1'b0;
end else begin
q1 <= d1;
q2 <= d2;
end
endmodule
module my_dffr_n (
input d,
clk,
clr,
output reg q
);
always @(posedge clk or negedge clr)
if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffre_p (
input d,
clk,
clr,
en,
output reg q
);
always @(posedge clk or posedge clr)
if (clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffre_n (
input d,
clk,
clr,
en,
output reg q
);
always @(posedge clk or negedge clr)
if (!clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffs_p (
input d,
clk,
pre,
output reg q
);
always @(posedge clk or posedge pre)
if (pre) q <= 1'b1;
else q <= d;
endmodule
module my_dffs_n (
input d,
clk,
pre,
output reg q
);
always @(posedge clk or negedge pre)
if (!pre) q <= 1'b1;
else q <= d;
endmodule
module my_dffse_p (
input d,
clk,
pre,
en,
output reg q
);
always @(posedge clk or posedge pre)
if (pre) q <= 1'b1;
else if (en) q <= d;
endmodule
module my_dffse_n (
input d,
clk,
pre,
en,
output reg q
);
always @(posedge clk or negedge pre)
if (!pre) q <= 1'b1;
else if (en) q <= d;
endmodule
module my_dffn (
input d,
clk,
output reg q
);
initial q <= 1'b0;
always @(negedge clk) q <= d;
endmodule
module my_dffnr_p (
input d,
clk,
clr,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or posedge clr)
if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffnr_n (
input d,
clk,
clr,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or negedge clr)
if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffns_p (
input d,
clk,
pre,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or posedge pre)
if (pre) q <= 1'b1;
else q <= d;
endmodule
module my_dffns_n (
input d,
clk,
pre,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or negedge pre)
if (!pre) q <= 1'b1;
else q <= d;
endmodule
module my_dffsr_ppp (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or posedge pre or posedge clr)
if (pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsr_pnp (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or negedge pre or posedge clr)
if (!pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsr_ppn (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or posedge pre or negedge clr)
if (pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsr_pnn (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or negedge pre or negedge clr)
if (!pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsr_npp (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or posedge pre or posedge clr)
if (pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsr_nnp (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or negedge pre or posedge clr)
if (!pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsr_npn (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or posedge pre or negedge clr)
if (pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsr_nnn (
input d,
clk,
pre,
clr,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or negedge pre or negedge clr)
if (!pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_dffsre_ppp (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or posedge pre or posedge clr)
if (pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffsre_pnp (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or negedge pre or posedge clr)
if (!pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffsre_ppn (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or posedge pre or negedge clr)
if (pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffsre_pnn (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(posedge clk or negedge pre or negedge clr)
if (!pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffsre_npp (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or posedge pre or posedge clr)
if (pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffsre_nnp (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or negedge pre or posedge clr)
if (!pre) q <= 1'b1;
else if (clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffsre_npn (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or posedge pre or negedge clr)
if (pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_dffsre_nnn (
input d,
clk,
pre,
clr,
en,
output reg q
);
initial q <= 1'b0;
always @(negedge clk or negedge pre or negedge clr)
if (!pre) q <= 1'b1;
else if (!clr) q <= 1'b0;
else if (en) q <= d;
endmodule
module my_sdffr_n (
input d,
clk,
clr,
output reg q
);
initial q <= 0;
always @(posedge clk)
if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_sdffs_n (
input d,
clk,
pre,
output reg q
);
initial q <= 0;
always @(posedge clk)
if (!pre) q <= 1'b1;
else q <= d;
endmodule
module my_sdffnr_n (
input d,
clk,
clr,
output reg q
);
initial q <= 0;
always @(negedge clk)
if (!clr) q <= 1'b0;
else q <= d;
endmodule
module my_sdffns_n(
input d,
clk,
pre,
output reg q
);
initial q <= 0;
always @(negedge clk)
if (!pre) q <= 1'b1;
else q <= d;
endmodule
module my_sdffr_p (
input d,
clk,
clr,
output reg q
);
initial q <= 0;
always @(posedge clk)
if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_sdffs_p (
input d,
clk,
pre,
output reg q
);
initial q <= 0;
always @(posedge clk)
if (pre) q <= 1'b1;
else q <= d;
endmodule
module my_sdffnr_p (
input d,
clk,
clr,
output reg q
);
initial q <= 0;
always @(negedge clk)
if (clr) q <= 1'b0;
else q <= d;
endmodule
module my_sdffns_p (
input d,
clk,
pre,
output reg q
);
initial q <= 0;
always @(negedge clk)
if (pre) q <= 1'b1;
else q <= d;
endmodule
module my_latch (
input wire d, g,
output reg q
);
always @(*)
if (g) q <= d;
endmodule
module my_latchn (
input wire d, g,
output reg q
);
always @(*)
if (!g) q <= d;
endmodule
module my_latchs_p (
input wire d, g, s,
output reg q
);
always @(*)
if (s)
q <= 1'b1;
else if (g)
q <= d;
endmodule
module my_latchs_n (
input wire d, g, s,
output reg q
);
always @(*)
if (!s)
q <= 1'b1;
else if (g)
q <= d;
endmodule
module my_latchr_p (
input wire d, g, r,
output reg q
);
always @(*)
if (r)
q <= 1'b0;
else if (g)
q <= d;
endmodule
module my_latchr_n (
input wire d, g, r,
output reg q
);
always @(*)
if (!r)
q <= 1'b0;
else if (g)
q <= d;
endmodule
module my_latchns_p (
input wire d, g, s,
output reg q
);
always @(*)
if (s)
q <= 1'b1;
else if (!g)
q <= d;
endmodule
module my_latchns_n (
input wire d, g, s,
output reg q
);
always @(*)
if (!s)
q <= 1'b1;
else if (!g)
q <= d;
endmodule
module my_latchnr_p (
input wire d, g, r,
output reg q
);
always @(*)
if (r)
q <= 1'b0;
else if (!g)
q <= d;
endmodule
module my_latchnr_n (
input wire d, g, r,
output reg q
);
always @(*)
if (!r)
q <= 1'b0;
else if (!g)
q <= d;
endmodule