2019-12-18 06:42:26 -06:00
|
|
|
read_verilog << EOT
|
|
|
|
|
|
|
|
// FDRE, mergeable CE and R.
|
|
|
|
|
|
|
|
module t0 (...);
|
|
|
|
input wire clk;
|
|
|
|
input wire [7:0] i;
|
|
|
|
output wire [7:0] o;
|
|
|
|
|
|
|
|
wire [7:0] tmp ;
|
|
|
|
|
|
|
|
LUT2 #(.INIT(4'h6)) lut0 (.I0(i[0]), .I1(i[1]), .O(tmp[0]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut1 (.I0(i[1]), .I1(i[2]), .O(tmp[1]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut2 (.I0(i[3]), .I1(i[4]), .O(tmp[2]));
|
|
|
|
|
|
|
|
FDRE ff (.D(tmp[0]), .CE(tmp[1]), .R(tmp[2]), .Q(o[0]));
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
EOT
|
2020-04-22 15:57:09 -05:00
|
|
|
read_verilog -lib +/xilinx/cells_sim.v
|
2019-12-18 06:42:26 -06:00
|
|
|
design -save t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDRE
|
|
|
|
select -assert-count 1 t:LUT6
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-none t:FDRE t:LUT6 %% t:* %D
|
2019-12-18 06:42:26 -06:00
|
|
|
|
|
|
|
design -load t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt -lut4
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDRE
|
|
|
|
select -assert-count 1 t:LUT4
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-count 1 t:LUT2
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-none t:FDRE t:LUT4 t:LUT2 %% t:* %D
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
|
|
|
|
|
|
|
|
read_verilog << EOT
|
|
|
|
|
|
|
|
// FDSE, mergeable CE and S, inversions.
|
|
|
|
|
|
|
|
module t0 (...);
|
|
|
|
input wire clk;
|
|
|
|
input wire [7:0] i;
|
|
|
|
output wire [7:0] o;
|
|
|
|
|
|
|
|
wire [7:0] tmp ;
|
|
|
|
|
|
|
|
LUT2 #(.INIT(4'h6)) lut0 (.I0(i[0]), .I1(i[1]), .O(tmp[0]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut1 (.I0(i[1]), .I1(i[2]), .O(tmp[1]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut2 (.I0(i[3]), .I1(i[4]), .O(tmp[2]));
|
|
|
|
|
|
|
|
FDSE #(.IS_D_INVERTED(1'b1), .IS_S_INVERTED(1'b1)) ff (.D(tmp[0]), .CE(tmp[1]), .S(tmp[2]), .Q(o[0]));
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
EOT
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
read_verilog -lib +/xilinx/cells_sim.v
|
2019-12-18 06:42:26 -06:00
|
|
|
design -save t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDSE
|
|
|
|
select -assert-count 1 t:LUT6
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-none t:FDSE t:LUT6 %% t:* %D
|
2019-12-18 06:42:26 -06:00
|
|
|
|
|
|
|
design -load t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt -lut4
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDSE
|
|
|
|
select -assert-count 1 t:LUT4
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-count 1 t:LUT2
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-none t:FDSE t:LUT4 t:LUT2 %% t:* %D
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
|
|
|
|
|
|
|
|
read_verilog << EOT
|
|
|
|
|
|
|
|
// FDCE, mergeable CE.
|
|
|
|
|
|
|
|
module t0 (...);
|
|
|
|
input wire clk;
|
|
|
|
input wire [7:0] i;
|
|
|
|
output wire [7:0] o;
|
|
|
|
|
|
|
|
wire [7:0] tmp ;
|
|
|
|
|
|
|
|
LUT2 #(.INIT(4'h6)) lut0 (.I0(i[0]), .I1(i[1]), .O(tmp[0]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut1 (.I0(i[1]), .I1(i[2]), .O(tmp[1]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut2 (.I0(i[3]), .I1(i[4]), .O(tmp[2]));
|
|
|
|
|
|
|
|
FDCE ff (.D(tmp[0]), .CE(tmp[1]), .CLR(tmp[2]), .Q(o[0]));
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
EOT
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
read_verilog -lib +/xilinx/cells_sim.v
|
2019-12-18 06:42:26 -06:00
|
|
|
design -save t0
|
|
|
|
|
|
|
|
equiv_opt -async2sync -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDCE
|
|
|
|
select -assert-count 1 t:LUT4
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-count 1 t:LUT2
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-none t:FDCE t:LUT4 t:LUT2 %% t:* %D
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
|
|
|
|
|
|
|
|
read_verilog << EOT
|
|
|
|
|
|
|
|
// FDSE, mergeable CE and S, but CE only not worth it.
|
|
|
|
|
|
|
|
module t0 (...);
|
|
|
|
input wire clk;
|
|
|
|
input wire [7:0] i;
|
|
|
|
output wire [7:0] o;
|
|
|
|
|
|
|
|
wire [7:0] tmp ;
|
|
|
|
|
|
|
|
LUT2 #(.INIT(4'h6)) lut0 (.I0(i[0]), .I1(i[1]), .O(tmp[0]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut1 (.I0(i[1]), .I1(i[2]), .O(tmp[1]));
|
|
|
|
|
|
|
|
FDSE ff (.D(tmp[0]), .CE(i[7]), .S(tmp[1]), .Q(o[0]));
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
EOT
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
read_verilog -lib +/xilinx/cells_sim.v
|
2019-12-18 06:42:26 -06:00
|
|
|
design -save t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDSE
|
|
|
|
select -assert-count 1 t:LUT5
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-none t:FDSE t:LUT5 %% t:* %D
|
2019-12-18 06:42:26 -06:00
|
|
|
|
|
|
|
design -load t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt -lut4
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDSE
|
|
|
|
select -assert-count 2 t:LUT2
|
|
|
|
select -assert-none t:FDSE t:LUT2 %% t:* %D
|
|
|
|
|
|
|
|
design -reset
|
|
|
|
|
|
|
|
|
|
|
|
read_verilog << EOT
|
|
|
|
|
|
|
|
// FDRSE, mergeable CE, S, R.
|
|
|
|
|
|
|
|
module t0 (...);
|
|
|
|
input wire clk;
|
|
|
|
input wire [7:0] i;
|
|
|
|
output wire [7:0] o;
|
|
|
|
|
|
|
|
wire [7:0] tmp ;
|
|
|
|
|
|
|
|
LUT2 #(.INIT(4'h6)) lut0 (.I0(i[0]), .I1(i[1]), .O(tmp[0]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut1 (.I0(i[1]), .I1(i[2]), .O(tmp[1]));
|
|
|
|
LUT2 #(.INIT(4'h8)) lut2 (.I0(i[2]), .I1(i[0]), .O(tmp[2]));
|
|
|
|
LUT2 #(.INIT(4'h6)) lut3 (.I0(i[3]), .I1(i[4]), .O(tmp[3]));
|
|
|
|
|
|
|
|
FDRSE ff (.D(tmp[0]), .CE(tmp[1]), .S(tmp[2]), .R(tmp[3]), .Q(o[0]));
|
|
|
|
|
|
|
|
endmodule
|
|
|
|
|
|
|
|
EOT
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
read_verilog -lib +/xilinx/cells_sim.v
|
2019-12-18 06:42:26 -06:00
|
|
|
design -save t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDRSE
|
|
|
|
select -assert-count 1 t:LUT6
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-none t:FDRSE t:LUT6 %% t:* %D
|
2019-12-18 06:42:26 -06:00
|
|
|
|
|
|
|
design -load t0
|
|
|
|
|
|
|
|
equiv_opt -blacklist xilinx_dffopt_blacklist.txt -assert -map +/xilinx/cells_sim.v xilinx_dffopt -lut4
|
|
|
|
design -load postopt
|
|
|
|
clean
|
|
|
|
|
2020-04-22 15:57:09 -05:00
|
|
|
cd t0
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-count 1 t:FDRSE
|
|
|
|
select -assert-count 1 t:LUT4
|
2020-04-22 15:57:09 -05:00
|
|
|
select -assert-count 1 t:LUT2
|
2019-12-18 06:42:26 -06:00
|
|
|
select -assert-none t:FDRSE t:LUT4 t:LUT2 %% t:* %D
|
|
|
|
|
|
|
|
design -reset
|