mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-24 01:25:33 +00:00
Added support for dlatchsr cells
This commit is contained in:
parent
a3b9692a68
commit
d4a1b0af5b
5 changed files with 207 additions and 1 deletions
|
@ -325,3 +325,107 @@ always @* begin
|
|||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_NNN_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 0)
|
||||
Q <= 0;
|
||||
else if (S == 0)
|
||||
Q <= 1;
|
||||
else if (E == 0)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_NNP_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 1)
|
||||
Q <= 0;
|
||||
else if (S == 0)
|
||||
Q <= 1;
|
||||
else if (E == 0)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_NPN_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 0)
|
||||
Q <= 0;
|
||||
else if (S == 1)
|
||||
Q <= 1;
|
||||
else if (E == 0)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_NPP_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 1)
|
||||
Q <= 0;
|
||||
else if (S == 1)
|
||||
Q <= 1;
|
||||
else if (E == 0)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_PNN_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 0)
|
||||
Q <= 0;
|
||||
else if (S == 0)
|
||||
Q <= 1;
|
||||
else if (E == 1)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_PNP_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 1)
|
||||
Q <= 0;
|
||||
else if (S == 0)
|
||||
Q <= 1;
|
||||
else if (E == 1)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_PPN_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 0)
|
||||
Q <= 0;
|
||||
else if (S == 1)
|
||||
Q <= 1;
|
||||
else if (E == 1)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
module \$_DLATCHSR_PPP_ (E, S, R, D, Q);
|
||||
input E, S, R, D;
|
||||
output reg Q;
|
||||
always @* begin
|
||||
if (R == 1)
|
||||
Q <= 0;
|
||||
else if (S == 1)
|
||||
Q <= 1;
|
||||
else if (E == 1)
|
||||
Q <= D;
|
||||
end
|
||||
endmodule
|
||||
|
||||
|
|
|
@ -1097,6 +1097,38 @@ endmodule
|
|||
|
||||
// --------------------------------------------------------
|
||||
|
||||
module \$dlatchsr (EN, SET, CLR, D, Q);
|
||||
|
||||
parameter WIDTH = 0;
|
||||
parameter EN_POLARITY = 1'b1;
|
||||
parameter SET_POLARITY = 1'b1;
|
||||
parameter CLR_POLARITY = 1'b1;
|
||||
|
||||
input EN;
|
||||
input [WIDTH-1:0] SET, CLR, D;
|
||||
output reg [WIDTH-1:0] Q;
|
||||
|
||||
wire pos_en = EN == EN_POLARITY;
|
||||
wire [WIDTH-1:0] pos_set = SET_POLARITY ? SET : ~SET;
|
||||
wire [WIDTH-1:0] pos_clr = CLR_POLARITY ? CLR : ~CLR;
|
||||
|
||||
genvar i;
|
||||
generate
|
||||
for (i = 0; i < WIDTH; i = i+1) begin:bit
|
||||
always @*
|
||||
if (pos_clr[i])
|
||||
Q[i] <= 0;
|
||||
else if (pos_set[i])
|
||||
Q[i] <= 1;
|
||||
else if (pos_en)
|
||||
Q[i] <= D[i];
|
||||
end
|
||||
endgenerate
|
||||
|
||||
endmodule
|
||||
|
||||
// --------------------------------------------------------
|
||||
|
||||
module \$fsm (CLK, ARST, CTRL_IN, CTRL_OUT);
|
||||
|
||||
parameter NAME = "";
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue