mirror of https://github.com/YosysHQ/yosys.git
machxo2: Switch to LUT4 sim model which propagates less undefined/don't care values.
This commit is contained in:
parent
353ace5034
commit
ae07298a6b
|
@ -4,17 +4,11 @@ module LUT4 #(
|
||||||
input A, B, C, D,
|
input A, B, C, D,
|
||||||
output Z
|
output Z
|
||||||
);
|
);
|
||||||
wire [3:0] I;
|
// This form of LUT propagates as few x's as possible.
|
||||||
wire [3:0] I_pd;
|
wire [7:0] s3 = D ? INIT[15:8] : INIT[7:0];
|
||||||
|
wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0];
|
||||||
genvar ii;
|
wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0];
|
||||||
generate
|
assign Z = A ? s1[1] : s1[0];
|
||||||
for (ii = 0; ii < 4; ii = ii + 1'b1)
|
|
||||||
assign I_pd[ii] = (I[ii] === 1'bz) ? 1'b0 : I[ii];
|
|
||||||
endgenerate
|
|
||||||
|
|
||||||
assign I = {D, C, B, A};
|
|
||||||
assign Z = INIT[I_pd];
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
||||||
module FACADE_FF #(
|
module FACADE_FF #(
|
||||||
|
|
|
@ -35,6 +35,6 @@ proc
|
||||||
equiv_opt -assert -map +/machxo2/cells_sim.v synth_machxo2 # equivalency check
|
equiv_opt -assert -map +/machxo2/cells_sim.v synth_machxo2 # equivalency check
|
||||||
design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design)
|
design -load postopt # load the post-opt design (otherwise equiv_opt loads the pre-opt design)
|
||||||
cd mux16 # Constrain all select calls below inside the top module
|
cd mux16 # Constrain all select calls below inside the top module
|
||||||
select -assert-count 12 t:LUT4
|
select -assert-count 11 t:LUT4
|
||||||
|
|
||||||
select -assert-none t:LUT4 t:FACADE_IO %% t:* %D
|
select -assert-none t:LUT4 t:FACADE_IO %% t:* %D
|
||||||
|
|
Loading…
Reference in New Issue