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