Jump to content
    

for для неупакованного массива SystemVerilog

Следующий кусок кода вызывает непонятное мне поведение симулятора Vivado, которое отличается от поведение Modelsim:

module top (
    input  bit                  clk,
    input  bit                  i_uno[0:0],
    input  bit                  i_due[1:0]
);

bit     a[1:0], b[1:0]; 

always_ff @(posedge clk)
begin
    for (int i=0; i<2; i++) begin
        a[i] <= i_due[0];
        b[i] <= i_uno[0];
    end
end

Cимулятор Vivado(17.4, 18.3) для неупакованного массива присваивает в такой записи не нулевой элемент входного порта, а весь массив - как будто передаёт по адресу!

Т.е. в a[1] будет записано i_due[1], а b[1] и вовсе остаётся равным нулю! Я читал стандарт, но не нашёл подтверждение некорректности своей записи. Ведь согласно определению неупакованный массив отличается только тем, что весь массив нельзя использовать для арифметических операций. Тем более, моделсим данную запись моделирует корректно.

Может кто-нибудь сталкивался с подобным и может пояснить, кто в данном случае не прав? Одно дело, если sim Vivado ведёт себя не по стандарту и совсем другое, если и синтезатор позволяет себе вольности!

Поведение симуляторов:

Спойлер

Vivado.thumb.jpg.fcc58443b41d02cc3adf0663ca46d2c1.jpg

файл и тестбенч:

top.sv

top_tb.sv

Share this post


Link to post
Share on other sites

Написано так, чтобы работать непонятно как, результат соотвествует

Писатели вивадовского симулятора, кстати, тоже не смогли соответствовать стандарту, и меняют местами блокирующие присванивания на неблокирующие и наоборот как им заблагорассудится. Может быть и в синтезаторе они так же сделали. Поэтому, возьмите любое руководство по стилю кодирования от толковых компаний. Или прочитайте известнейшие в отрасли статьи, например, coding style that kills (http://www.sunburst-design.com/papers/CummingsSNUG2000SJ_NBA_rev1_2.pdf), и следуйте им.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...