From bfcd4e636be832e657bcf8639ccb68e29fd8d666 Mon Sep 17 00:00:00 2001 From: Sebastien Bourdeauducq Date: Thu, 8 Mar 2012 20:49:24 +0100 Subject: [PATCH] fhdl: handle negative constants correctly --- migen/fhdl/structure.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/migen/fhdl/structure.py b/migen/fhdl/structure.py index 69f53f65..748ea059 100644 --- a/migen/fhdl/structure.py +++ b/migen/fhdl/structure.py @@ -8,7 +8,9 @@ def bits_for(n): if isinstance(n, Constant): return n.bv.width else: - if n == 0: + if n < 0: + return bits_for(-n) + 1 + elif n == 0: return 1 else: return int(math.ceil(math.log(n+1, 2))) @@ -118,7 +120,7 @@ class Replicate(Value): class Constant(Value): def __init__(self, n, bv=None): - self.bv = bv or BV(bits_for(n)) + self.bv = bv or BV(bits_for(n), n < 0) self.n = n def __repr__(self): -- 2.30.2