logisim-evolution/logisim-evolution

defect [HDL]: HDL creation fails for Random generator component with 64bits

Closed

#2529 opened on Mar 16, 2026

View on GitHub
 (1 comment) (0 reactions) (0 assignees)Java (3,695 stars) (505 forks)batch import
enhancementgood first issuehelp wantedinvestigatingpri -1

Description

Hi Team,

the attached example shows the LE Random generator component with 64 data bits. As s_initSeed only uses 48 bits, the output process to write the output register shows the error below.

msg: Error (10393): VHDL error at LogisimRNG_behavior.vhd(121): left bound (63) of slice must belong to range (47 downto 0) of corresponding object Error (12152): Can't elaborate user hierarchy "main:CIRCUIT_0|LogisimRNG:MEMORY_1"


main_behavior.vhd:

... MEMORY_1 : LogisimRNG GENERIC MAP ( nrOfBits => 64, seed => X"00000020" ) PORT MAP ( clear => s_logisimNet11, clock => logisimClockTree0(4), enable => s_logisimNet1, q => s_logisimBus0(63 DOWNTO 0), tick => logisimClockTree0(2) ); ...


logisimRND_behavior.vhd: ...

SIGNAL s_initSeed : std_logic_vector( 47 DOWNTO 0 );

...

s_initSeed <= x"0005DEECE66D" WHEN seed = x"00000000" ELSE x"0000"&seed; ...

makeOutput : PROCESS(clock, s_reset, s_initSeed) IS BEGIN IF (rising_edge(clock)) THEN IF (s_reset = '1') THEN s_outputReg <= s_initSeed( (nrOfBits-1) DOWNTO 0 ); ELSIF (tick = '1' AND enable = '1') THEN s_outputReg <= s_currentSeed((nrOfBits+11) DOWNTO 12); END IF; END IF; END PROCESS makeOutput;


rnd_fail.zip

Thanks for looking into this

Contributor guide