mirror of https://github.com/YosysHQ/yosys.git
50 lines
2.5 KiB
Plaintext
50 lines
2.5 KiB
Plaintext
### Replace FFs with a const.
|
|
|
|
read_verilog -icells <<EOT
|
|
|
|
module top(...);
|
|
|
|
input CLK;
|
|
input EN;
|
|
(* init=84'haaaaaaaaaaaaaaaaaaaaa *)
|
|
output [83:0] Q;
|
|
input SRST;
|
|
input ARST;
|
|
input [3:0] CLR;
|
|
input [3:0] SET;
|
|
|
|
$dff #(.CLK_POLARITY(1'b1), .WIDTH(4)) ff0 (.CLK(CLK), .D(4'hc), .Q(Q[3:0]));
|
|
$dffe #(.CLK_POLARITY(1'b1), .EN_POLARITY(1'b1), .WIDTH(4)) ff1 (.CLK(CLK), .EN(EN), .D(4'hc), .Q(Q[7:4]));
|
|
$adff #(.CLK_POLARITY(1'b1), .ARST_POLARITY(1'b1), .ARST_VALUE(8'hf0), .WIDTH(8)) ff2 (.CLK(CLK), .ARST(ARST), .D(8'hcc), .Q(Q[15:8]));
|
|
$adffe #(.CLK_POLARITY(1'b1), .EN_POLARITY(1'b0), .ARST_POLARITY(1'b1), .ARST_VALUE(8'hf0), .WIDTH(8)) ff3 (.CLK(CLK), .EN(EN), .ARST(ARST), .D(8'hcc), .Q(Q[23:16]));
|
|
$sdff #(.CLK_POLARITY(1'b1), .SRST_POLARITY(1'b1), .SRST_VALUE(8'hf0), .WIDTH(8)) ff4 (.CLK(CLK), .SRST(SRST), .D(8'hcc), .Q(Q[31:24]));
|
|
$sdffe #(.CLK_POLARITY(1'b1), .EN_POLARITY(1'b1), .SRST_POLARITY(1'b1), .SRST_VALUE(8'hf0), .WIDTH(8)) ff5 (.CLK(CLK), .EN(EN), .SRST(SRST), .D(8'hcc), .Q(Q[39:32]));
|
|
$sdffce #(.CLK_POLARITY(1'b1), .EN_POLARITY(1'b1), .SRST_POLARITY(1'b1), .SRST_VALUE(8'hf0), .WIDTH(8)) ff6 (.CLK(CLK), .EN(EN), .SRST(SRST), .D(8'hcc), .Q(Q[47:40]));
|
|
$dffsr #(.CLK_POLARITY(1'b1), .CLR_POLARITY(1'b1), .SET_POLARITY(1'b0), .WIDTH(8)) ff7 (.CLK(CLK), .SET({SET, 4'hf}), .CLR({4'h0, CLR}), .D(8'hcc), .Q(Q[55:48]));
|
|
$dffsre #(.CLK_POLARITY(1'b1), .EN_POLARITY(1'b0), .CLR_POLARITY(1'b0), .SET_POLARITY(1'b1), .WIDTH(8)) ff8 (.CLK(CLK), .EN(EN), .SET({SET, 4'h0}), .CLR({4'hf, CLR}), .D(8'hcc), .Q(Q[63:56]));
|
|
|
|
$dlatch #(.EN_POLARITY(1'b1), .WIDTH(4)) ff9 (.EN(EN), .D(4'hc), .Q(Q[67:64]));
|
|
$adlatch #(.EN_POLARITY(1'b0), .ARST_POLARITY(1'b1), .ARST_VALUE(8'hf0), .WIDTH(8)) ff10 (.EN(EN), .ARST(ARST), .D(8'hcc), .Q(Q[75:68]));
|
|
$dlatchsr #(.EN_POLARITY(1'b0), .CLR_POLARITY(1'b1), .SET_POLARITY(1'b1), .WIDTH(8)) ff11 (.EN(EN), .SET({SET, 4'h0}), .CLR({4'h0, CLR}), .D(8'hcc), .Q(Q[83:76]));
|
|
|
|
endmodule
|
|
|
|
EOT
|
|
|
|
design -save orig
|
|
|
|
equiv_opt -undef -assert -multiclock opt_dff
|
|
design -load postopt
|
|
select -assert-count 1 t:$dff r:WIDTH=2 %i
|
|
select -assert-count 1 t:$dffe r:WIDTH=2 %i
|
|
select -assert-count 1 t:$adff r:WIDTH=6 %i
|
|
select -assert-count 1 t:$adffe r:WIDTH=6 %i
|
|
select -assert-count 1 t:$sdff r:WIDTH=6 %i
|
|
select -assert-count 1 t:$sdffe r:WIDTH=6 %i
|
|
select -assert-count 1 t:$sdffce r:WIDTH=6 %i
|
|
select -assert-count 1 t:$dffsr r:WIDTH=6 %i
|
|
select -assert-count 1 t:$dffsre r:WIDTH=6 %i
|
|
select -assert-count 1 t:$dlatch r:WIDTH=2 %i
|
|
select -assert-count 1 t:$adlatch r:WIDTH=6 %i
|
|
select -assert-count 1 t:$dlatchsr r:WIDTH=6 %i
|