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

Я создаю тестовый стенд для объекта высшего уровня. Он использует несколько компонентов, включая 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 Ответ

0 голосов
/ 09 января 2019

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

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

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

...