Jackov 1 9 июня, 2018 Опубликовано 9 июня, 2018 · Жалоба В Verilog-е есть оператор disable, это в некотором роде аналог оператора continue из языка Си. Убедиться в этом можно на простом примере: `timescale 1ns/1ps module Test(); integer i, j; always for(i = 0; i < 8; i = i + 1) begin for(j = 0; j < 8; j = j + 1) begin: _j if(j == 5) disable _j; #10; end end endmodule Видим, что переменная j в состоянии 5 задержку в 10 единиц не имеет, т.е. #10 не выполнилась, началась новая итерация цикла: Но мне, в тестбенче, нужно не начинать новую итерацию цикла, а нужно цикл завершить, нужен эквивалент оператора break. Искал - не нашёл. Стал думать, додумался до такого: always for(i = 0; i < 8; i = i + 1) begin: _i for(j = 0; j < 8; j = j + 1) begin if(j == 5) disable _i; #10; end end Неужели, в самом деле, нет отдельного оператора для такой цели? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Kuzmi4 0 9 июня, 2018 Опубликовано 9 июня, 2018 · Жалоба SystemVerilog break and continue statements Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 9 июня, 2018 Опубликовано 9 июня, 2018 · Жалоба SystemVerilog break and continue statements Ну в SystemVerilog может быть. А в простом нету что ли? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 9 июня, 2018 Опубликовано 9 июня, 2018 · Жалоба Ну в SystemVerilog может быть. А в простом нету что ли? IEEE Standard Verilog ® Hardware Description Language IEEE Std 1364-2001 -> 11. Disabling of named blocks and tasks The disable statement provides the ability to terminate the activity associated with concurrently active procedures, while maintaining the structured nature of Verilog HDL procedural descriptions. The disable statement gives a mechanism for terminating a task before it executes all its statements, breaking from a looping statement, or skipping statements in order to continue with another iteration of a looping statement. It is useful for handling exception conditions such as hardware interrupts and global resets -> Example 4 This example shows the disable statement being used in an equivalent way to the two statements continue and break in the C programming language. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 9 июня, 2018 Опубликовано 9 июня, 2018 · Жалоба -> Example 4 Собственно так и сделал. Странно, конечно, что отдельного оператора нет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
iosifk 3 10 июня, 2018 Опубликовано 10 июня, 2018 · Жалоба Странно, конечно, что отдельного оператора нет. Но есть while(j != 5) и при равенстве цикл закончится... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Jackov 1 10 июня, 2018 Опубликовано 10 июня, 2018 (изменено) · Жалоба Но есть while(j != 5) и при равенстве цикл закончится... Да это понятно, можно было и for(j = 0; j < 6; j = j +1) написать. Это же простой демонстрационный пример, сам тестбенч несколько сложнее. Изменено 10 июня, 2018 пользователем Jackov Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться