aboutsummaryrefslogtreecommitdiffstats
path: root/techlibs/machxo2
diff options
context:
space:
mode:
authorWilliam D. Jones <thor0505@comcast.net>2021-02-21 09:14:37 -0500
committerMarcelina Koƛcielnicka <mwk@0x04.net>2021-02-23 17:39:58 +0100
commitae07298a6b26315793167d9fe0e47d33412fc033 (patch)
tree0b3450379e56b6c51fedfe2dcb23cc951967d19b /techlibs/machxo2
parent353ace50345ab6a88f29dfe19c0ef813e7eb4e79 (diff)
downloadyosys-ae07298a6b26315793167d9fe0e47d33412fc033.tar.gz
yosys-ae07298a6b26315793167d9fe0e47d33412fc033.tar.bz2
yosys-ae07298a6b26315793167d9fe0e47d33412fc033.zip
machxo2: Switch to LUT4 sim model which propagates less undefined/don't care values.
Diffstat (limited to 'techlibs/machxo2')
-rw-r--r--techlibs/machxo2/cells_sim.v16
1 files changed, 5 insertions, 11 deletions
diff --git a/techlibs/machxo2/cells_sim.v b/techlibs/machxo2/cells_sim.v
index c6d70a055..161ddfe2e 100644
--- a/techlibs/machxo2/cells_sim.v
+++ b/techlibs/machxo2/cells_sim.v
@@ -4,17 +4,11 @@ module LUT4 #(
input A, B, C, D,
output Z
);
- wire [3:0] I;
- wire [3:0] I_pd;
-
- genvar ii;
- generate
- 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];
+ // This form of LUT propagates as few x's as possible.
+ wire [7:0] s3 = D ? INIT[15:8] : INIT[7:0];
+ wire [3:0] s2 = C ? s3[ 7:4] : s3[3:0];
+ wire [1:0] s1 = B ? s2[ 3:2] : s2[1:0];
+ assign Z = A ? s1[1] : s1[0];
endmodule
module FACADE_FF #(