Я хочу соединить десятичную строку со строкой. Как:Verilog конкатенация десятичного и строкового литералов
parameter AWIDTH = 15;
...
...
wire [AWIDTH-1:0] addra_bus;
assign addra_bus = cg_one ? {addra} : {AWIDTH, "'bz"};
На основной из 'cg_one', он выбрал бы либо {addra} или {AWIDTH, "" BZ"}. В ложном состоянии тернарного оператора я конкатенирую AWIDTH с помощью bz. Если cg_one равен 1'b0, я должен получить 15'bz как значение в addra_bus. Имеют смысл?
Проблема заключается в синтезе этого кода. Я получаю предупреждение как:
WARNING: expression size 56 truncated to fit in target size 15 (VERI-1209)
Почему это так? С чего начинается размер 56?
На первый взгляд, я думал, что это волшебный материал. :) Но, к сожалению, это не сработало. На этот раз написание сообщения erroe: 'ERROR: синтаксическая ошибка около '(VERI-1137)' –
Это законный SystemVerilog (см. Раздел 5.7.1 Целочисленные константы литерала 1800 LRM), но, возможно, ваш инструмент синтеза не поддерживает Это. Вы также можете попробовать '{AWIDTH {1'bz}}', что, я думаю, вы пытались сделать в первую очередь. –
Ох. Думаю, я должен был конкретно упомянуть о verilog. И да, может быть возможность моего инструмента не поддерживать его. Во всяком случае, ваше второе предложение '{AWIDTH {1'bz}} работало. Надеюсь, он вернет мне «15bz». Спасибо за письмо. –