Правильный способ использования для цикла внутри испытательного стенда, чтобы охватить все возможные случаи

Я создаю тестовый стенд для объекта высшего уровня. Он использует несколько компонентов, включая 2x 8:1 mux в конце, создавая 2 отдельных выхода. Я решил использовать "for loop", чтобы охватить все случаи, но мои входные данные присваиваются моим выходным данным в случайных случаях (вместо этого необходимо: input=output всякий раз, когда Rd=Rs и / или Rd=Rt).

---
stim_proc  :PROCESS
begin
---

for Rd_loop in 0 to 7 loop -- 0 to 7 for Rd'lenght-1=2
    for Rs-Rt_loop in 0 to 7 loop -- 0 to 7 for Rs'lenght-1=Rt'lenght-1=2
        wait for 10 ns;

-- increment to the next value of Rs and Rt.

        Rs<=std_logic_vector( signed(Rs) + 1 );
        Rt<=std_logic_vector( signed(Rt) + 1 );
    end loop;

-- increment to the next value of Rd.
Rd<=std_logic_vector( signed(Rd) + 1 );
end loop;

        wait for 10 ns;

-----

Я почти уверен, что должен использовать переменную, но не мог понять, как, благодарен за любую помощь.

1 ответ

Этот код, оказалось, работал очень хорошо, извините за путаницу. Я был просто смущен результатами симуляции, думал, что не получаю желаемого отклика, но, глядя на внутренние сигналы, очевидно, что так оно и должно себя вести.

Поэтому я решил не использовать циклы на тестовом стенде сложной системы в следующий раз, если в этом нет необходимости.

Благодаря обоим комментариям, поскольку вы оба правы, сигналы обновляются так, как они должны, с циклом, работающим очень хорошо, и не должно быть "-" между Rs и Rt.

Другие вопросы по тегам