vak: (Default)
[personal profile] vak
Обнаружил в языке Verilog неожиданную фичу, не описанную ни в одной книжке. Оказывается, диапазоны можно задавать в виде X+:Y или X-:Y, что эквивалентно X+Y-1:X и X:X-Y+1 соответственно. К примеру, эти три присваивания эквивалентны:
    value[10:8] = 0;
    value[10-:3] = 0;
    value[8+:3] = 0;

Date: 2017-04-26 04:24 (UTC)
juan_gandhi: (Default)
From: [personal profile] juan_gandhi
Хорошая фича.

Date: 2017-04-26 22:51 (UTC)
spamsink: (Default)
From: [personal profile] spamsink
По сравнению с аналогичной фичей в VHDL это еще цветочки. В верилоге хоть длина диапазона обязана быть compile-time constant, а в VHDL - гуляй, рванина. Разрешено A(x to y) или A(x downto y) с переменными x и y, ну и, соответственно, возвращаемый тип не определен до момента выполнения.