Implementación de Verilog: error de rango variable para una asignación de registro

Estoy tratando de implementar la siguiente idea en Verilog. Intenté dar un rango variable y obtuve un error de que el error debe estar limitado por valores constantes.

Hay un registro de 8 bits que se actualiza en cada ciclo de reloj. Debo tomar valores incrementalmente de este registro, es decir,
reg[0]en la primera iteración,
reg[1:0] en la segunda iteración,
reg[2:0]en la tercera iteración
y así sucesivamente. La salida de este registro junto con un número decreciente de ceros se dan a un registro de 12 bits, es decir,
{reg[0],11'b00000000000}en la primera iteración,
{reg[1:0],10'b0000000000}en la segunda iteración,
{reg[2:0], 9'b000000000}en la tercera iteración.
¿Cómo generalizo esto?

Mi código original:

módulo FGen (Clk, Reset, F, Aplusone, sjplusone);

input logic Clk;
input logic Reset;

input logic [1:0] sjplusone;
output logic [11:0] F;
output logic [7:0] Aplusone;

logic [7:0] K, A, B, Bplusone;
logic [7:0] Z;
logic Kout;
int count = 0;

assign A = 8'b00000000;
assign B = 8'b00000000;
assign Z = 8'b00000000;

shiftreg #(8) shr (Clk, Reset, Load, 1'b1, 8'b11111111, K, Kout);
mux2 #(8) m1 ({A[6:0], Kout}, {B[6:0], ~Kout}, sjplusone[1], Aplusone);
mux2 #(8) m2 ({B[6:0], Kout}, {A[6:0], ~Kout}, ~sjplusone[1], Bplusone);
mux2 #(12) Fmux ({2'b11, ~Aplusone[count:0],Z[8-count:0]}, {2'b00, Bplusone[count:0] - 1'b1,Z[8-count:0]}, sjplusone[1], F);

assign count = count + 1;

módulo final

¿Qué sucede después de 8 ciclos?

Respuestas (1)

Realmente ayudaría mostrar el código que escribió como su intento y cómo se supone que debe iterar, así como el error exacto, pero creo que solo necesita un cambio lógico a la izquierda.

logic [7:0] reg8;
logic [11:0] reg12;
int iterator;  // goes from 0 to 7

// each iteration
  reg12 = reg8 << 11-iterator;
Gracias por la idea. He editado la publicación original para compartir mi código. Quiero instanciar este módulo en la parte principal del código donde se iteran un montón de instancias. Por lo tanto, quiero dar mi cuenta de iteraciones como entrada para este módulo, pero no puedo implementar el incremento de cuenta.