В Verilog неосновной литерал (например, 1
) является (а) десятичным, (б) знаковым и (в) 32-разрядным. Из-за (с),
{8{1}}
совпадает с
{8{32'sb00000000000000000000000000000001}}
- это 256-битное число, которое затем усекается до 8 бит, когда ему присваивается a
. Вот почему вы получаете a
равный 8'b00000001
.
Вам нужно
{8{1'b1}}