`define default_netname none | |
module buffer_cell ( | |
input wire in, | |
output wire out | |
); | |
assign out = in; | |
endmodule | |
module and_cell ( | |
input wire a, | |
input wire b, | |
output wire out | |
); | |
assign out = a & b; | |
endmodule | |
module or_cell ( | |
input wire a, | |
input wire b, | |
output wire out | |
); | |
assign out = a | b; | |
endmodule | |
module xor_cell ( | |
input wire a, | |
input wire b, | |
output wire out | |
); | |
assign out = a ^ b; | |
endmodule | |
module nand_cell ( | |
input wire a, | |
input wire b, | |
output wire out | |
); | |
assign out = !(a&b); | |
endmodule | |
module not_cell ( | |
input wire in, | |
output wire out | |
); | |
assign out = !in; | |
endmodule | |
module mux_cell ( | |
input wire a, | |
input wire b, | |
input wire sel, | |
output wire out | |
); | |
assign out = sel ? b : a; | |
endmodule | |
module dff_cell ( | |
input wire clk, | |
input wire d, | |
output reg q, | |
output wire notq | |
); | |
assign notq = !q; | |
always @(posedge clk) | |
q <= d; | |
endmodule | |
module dffsr_cell ( | |
input wire clk, | |
input wire d, | |
input wire s, | |
input wire r, | |
output reg q, | |
output wire notq | |
); | |
assign notq = !q; | |
always @(posedge clk or posedge s or posedge r) begin | |
if (r) | |
q <= '0; | |
else if (s) | |
q <= '1; | |
else | |
q <= d; | |
end | |
endmodule |