Выполнение прервано или достигнуто максимальное время выполнения в edaplayground
Выполнение прервано или достигло максимального времени выполнения.
Вот ссылка на мой код: http://www.edaplayground.com/x/CX8
Я пытаюсь поменять номера в этом дизайне.
2 ответа
Конечно, это не проблема EDAPlayground. Код может где-то глючить.
Ваш always @(*)
Блок - это основная причина, по которой ваш симулятор застревает на одной отметке времени. *
обозначает, что если какая-либо переменная RHS изменяет свое значение, то выполняется весь блок. Здесь переменные a_reg и b_reg постоянно меняются местами в одном временном интервале. Вместо этого используйте always @(posedge clk)
,
Чтобы получить более ясную идею, перейдите по этой ссылке.
Я считаю, что вы пытаетесь поменять местами два 4-значных числа "a" и "b". Чтобы сделать это в Verilog, вы должны помнить, что при использовании always @(posedge clk)
построить, вы фактически присваиваете старое значение сети в RHS для регистра в LHS. таким образом
always @(posedge clk)
begin
a_out = b;
b_out = a;
end
приводит к правильной работе, без необходимости каких-либо дополнительных регистров. Я создал копию вашего проекта edaplayground и добавил несколько дополнительных тестовых векторов. http://www.edaplayground.com/x/8hk