реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Оператор disable в Verilog-е
Jackov
сообщение Jun 9 2018, 09:57
Сообщение #1


Местный
***

Группа: Участник
Сообщений: 293
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



В 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

Прикрепленное изображение

Неужели, в самом деле, нет отдельного оператора для такой цели?
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Jun 9 2018, 10:44
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 290
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



SystemVerilog break and continue statements
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jun 9 2018, 11:07
Сообщение #3


Местный
***

Группа: Участник
Сообщений: 293
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(Kuzmi4 @ Jun 9 2018, 13:44) *

Ну в SystemVerilog может быть. А в простом нету что ли?
Go to the top of the page
 
+Quote Post
des00
сообщение Jun 9 2018, 11:37
Сообщение #4


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 230
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



Цитата(Jackov @ Jun 9 2018, 18:07) *
Ну в 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.


--------------------
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jun 9 2018, 15:26
Сообщение #5


Местный
***

Группа: Участник
Сообщений: 293
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(des00 @ Jun 9 2018, 14:37) *
-> Example 4

Собственно так и сделал. Странно, конечно, что отдельного оператора нет.
Go to the top of the page
 
+Quote Post
iosifk
сообщение Jun 10 2018, 07:15
Сообщение #6


Гуру
******

Группа: Модераторы
Сообщений: 3 923
Регистрация: 8-09-05
Из: спб
Пользователь №: 8 369



Цитата(Jackov @ Jun 9 2018, 18:26) *
Странно, конечно, что отдельного оператора нет.

Но есть while(j != 5) и при равенстве цикл закончится...


--------------------
www.iosifk.narod.ru
Go to the top of the page
 
+Quote Post
Jackov
сообщение Jun 10 2018, 14:27
Сообщение #7


Местный
***

Группа: Участник
Сообщений: 293
Регистрация: 25-09-13
Из: Н.Новгород
Пользователь №: 78 485



Цитата(iosifk @ Jun 10 2018, 10:15) *
Но есть while(j != 5) и при равенстве цикл закончится...

Да это понятно, можно было и for(j = 0; j < 6; j = j +1) написать.
Это же простой демонстрационный пример, сам тестбенч несколько сложнее.

Сообщение отредактировал Jackov - Jun 10 2018, 14:27
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
2 чел. читают эту тему (гостей: 2, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd June 2018 - 00:08
Рейтинг@Mail.ru


Страница сгенерированна за 0.0104 секунд с 7
ELECTRONIX ©2004-2016