OpenCores

Storm Core (ARM7 compatible)

Issue List
BARREL_SHIFTER #3
Closed frekr opened this issue over 12 years ago
frekr commented over 12 years ago

Hi,

doing a simple test, I noticed that doing a branch there was an X propagating in the circuit. Following on a schematic the root cause was a conflicting assignment within Barrel Shifter. Hereafter the proposed solution as a patch. Hope this can help

Cheers Andrea

If you want to contact me use: aconcil@alice.it

================================ *** Z:\work\sp_1300B\SP_1300B\FE\IPs_EVAL\STANDALONE\lib\STORM_CORE\hdl\src\storm_core\storm_core\trunk\VHDL_source\BARREL_SHIFTER.vhd 2011-06-05 17:59:24.000000000 +-0200 --- Z:\work\sp_1300B\SP_1300B\FE\IPs_EVAL\STANDALONE\lib\STORM_CORE\hdl\src\storm_core\storm_core\trunk\src\BARREL_SHIFTER.vhd 2011-08-22 15:37:22.000000000 +-0200


* 80,92 ** else -- ROR #shift_positions SHIFT_DATA <= to_StdLogicVector(to_BitVector(SHIFT_DATA_IN) ror shift_positions); CARRY_OUT <= SHIFT_DATA_IN(shift_positions - 1); end if;

when others => -- undefined ! SHIFT_DATA_OUT <= (others => '-'); CARRY_OUT <= '-'; end case;

if (STORM_MODE = TRUE) then -- use cool overflow feature if (SHIFT_MODE = S_LSL) then -- overflow detection OVERFLOW_OUT <= SHIFT_DATA_IN(31) xor SHIFT_DATA(31); --- 80,92 ---- else -- ROR #shift_positions SHIFT_DATA <= to_StdLogicVector(to_BitVector(SHIFT_DATA_IN) ror shift_positions); CARRY_OUT <= SHIFT_DATA_IN(shift_positions - 1); end if;

when others => -- undefined ! SHIFT_DATA <= (others => '-'); CARRY_OUT <= '-'; end case;

if (STORM_MODE = TRUE) then -- use cool overflow feature if (SHIFT_MODE = S_LSL) then -- overflow detection OVERFLOW_OUT <= SHIFT_DATA_IN(31) xor SHIFT_DATA(31);

================================

zero_gravity closed this over 12 years ago

Assignee
No one
Labels
Bug