From 32543430c0c17c0829443a0a0f92aca455949ef4 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Mon, 11 Feb 2019 19:41:12 +0100 Subject: [PATCH] build/lattice/common/LatticeECXTrellisImpl: add support for nbits == 1 --- litex/build/lattice/common.py | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/litex/build/lattice/common.py b/litex/build/lattice/common.py index 45baddb8..d1e7e82e 100644 --- a/litex/build/lattice/common.py +++ b/litex/build/lattice/common.py @@ -44,8 +44,19 @@ lattice_ecpx_special_overrides = { class LatticeECPXTrellisTristateImpl(Module): def __init__(self, io, o, oe, i): nbits, sign = value_bits_sign(io) - for bit in range(nbits): + if nbits == 1: + # If `io` is an expression like `port[x]`, it is not legal to index further + # into it if it is only 1 bit wide. self.specials += \ + Instance("TRELLIS_IO", + p_DIR="BIDIR", + i_B=io, + i_I=o, + o_O=i, + i_T=~oe, + ) + else: + for bit in range(nbits): Instance("TRELLIS_IO", p_DIR="BIDIR", i_B=io[bit], @@ -54,6 +65,7 @@ class LatticeECPXTrellisTristateImpl(Module): i_T=~oe, ) + class LatticeECPXTrellisTristate(Module): @staticmethod def lower(dr): -- 2.30.2