From 666c9b430984febc0d8334210e78b2a976716ea5 Mon Sep 17 00:00:00 2001 From: Florent Kermarrec Date: Mon, 20 Jan 2025 10:46:50 +0100 Subject: [PATCH] gen/fhdl: Revert PR #2161 since introducing regressions. Ex: python3 -m litex_boards.targets.lambdaconcept_ecpix5 --build --cpu-type rocket --cpu-variant linux --cpu-num-cores 1 --cpu-mem-width 2 --sys-clk-freq 50e6 --with-ethernet --with-sdcard --yosys-flow3 --- litex/gen/fhdl/expression.py | 19 +++++++------------ litex/gen/fhdl/verilog.py | 3 +++ 2 files changed, 10 insertions(+), 12 deletions(-) diff --git a/litex/gen/fhdl/expression.py b/litex/gen/fhdl/expression.py index d06fbe25f1..4760f4641d 100644 --- a/litex/gen/fhdl/expression.py +++ b/litex/gen/fhdl/expression.py @@ -96,20 +96,15 @@ def to_signed(r): # Print Slice -------------------------------------------------------------------------------------- def _generate_slice(ns, node): - length = len(node) - assert length >= 1 - start = 0 - while isinstance(node, _Slice): - start += node.start - node = node.value - if len(node) == 1: - sr = "" # Avoid slicing 1-bit Signals. + assert (node.stop - node.start) >= 1 + if hasattr(node.value, "__len__") and len(node.value) == 1: + sr = "" # Avoid slicing 1-bit Signals. else: - if length > 1: - sr = f"[{start+length-1}:{start}]" + if (node.stop - node.start) > 1: + sr = f"[{node.stop-1}:{node.start}]" else: - sr = f"[{start}]" - r, s = _generate_expression(ns, node) + sr = f"[{node.start}]" + r, s = _generate_expression(ns, node.value) return r + sr, s # Print Cat ---------------------------------------------------------------------------------------- diff --git a/litex/gen/fhdl/verilog.py b/litex/gen/fhdl/verilog.py index 9092e1e374..91c9c929f4 100644 --- a/litex/gen/fhdl/verilog.py +++ b/litex/gen/fhdl/verilog.py @@ -456,6 +456,9 @@ def convert(f, ios=set(), name="top", platform=None, msg += f"- {f.name}\n" raise Exception(msg) + # Lower complex slices. + f = lower_complex_slices(f) + # Insert resets. insert_resets(f)