class FPNorm1Data:
def __init__(self, width, id_wid):
- self.roundz = Signal(reset_less=True)
+ self.roundz = Signal(reset_less=True, name="norm1_roundz")
self.z = FPNumBase(width, False)
self.out_do_z = Signal(reset_less=True)
self.oz = Signal(width, reset_less=True)
msr.inp.eq(temp_m),
msr.diff.eq(ediff_n126),
self.o.z.m.eq(msr.m[3:]),
- of.m0.eq(temp_s[3]), # copy of mantissa[0]
+ of.m0.eq(msr.m[3]), # copy of mantissa[0]
# overflow in bits 0..1: got shifted too (leave sticky)
- of.guard.eq(temp_s[2]), # guard
- of.round_bit.eq(temp_s[1]), # round
- of.sticky.eq(temp_s[0]), # sticky
+ of.guard.eq(msr.m[2]), # guard
+ of.round_bit.eq(msr.m[1]), # round
+ of.sticky.eq(msr.m[0]), # sticky
self.o.z.e.eq(i.z.e + ediff_n126),
]
def tbench(dut, maxcount, num_loops):
- yield from check_case(dut, 0x40000000, 0x40000000, 0x40800000)
- yield from check_case(dut, 0x41400000, 0x40A00000, 0x42700000)
+
+ yield from check_case(dut, 0x40000000, 0x40000000, 0x40800000, 0xffcaeefa)
+ yield from check_case(dut, 0x41400000, 0x40A00000, 0x42700000, 0x3f803262)
count = 0
#regression tests
- stimulus_a = [0xa4504d7, 0xba57711a, 0xbf9b1e94, 0x34082401, 0x5e8ef81,
+ stimulus_a = [0xffcaeefa, 0xae430313, 0xa4504d7,
+ 0xba57711a, 0xbf9b1e94, 0x34082401, 0x5e8ef81,
0x5c75da81, 0x2b017]
- stimulus_b = [0xb4658540, 0xee1818c5, 0xc038ed3a, 0xb328cd45, 0x114f3db,
+ stimulus_b = [0x3f803262, 0x901c3214, 0xb4658540,
+ 0xee1818c5, 0xc038ed3a, 0xb328cd45, 0x114f3db,
0x2f642a39, 0xff3807ab]
yield from run_fpunit(dut, stimulus_a, stimulus_b, mul, get_case)
count += len(stimulus_a)