SystemVerilog
SystemVerilog — это язык описания и верификации аппаратуры, являющийся расширением языка Verilog.
Расширения для описания аппаратуры
Новые типы данных
SystemVerilog поддерживает все типы данных иммеющиеся в Verilog и добавляет много новых типов данных.
Целочисленные типы данных. SystemVerilog предоставляет новые типы данных:
- bit (1 бит)
- byte (8 бит)
- shortint (16 бит)
- int (32 бит)
- longint (64 бит)
Эти типы данные принимают два состояния: 0 и 1. В отличие от соответствуюших Verilog типов (например reg или integer) они не могут принимать значения 'X' и 'Z', что позволяет более быстрые их симулирование.
Многомерный упакованный массив является расширением и обобщением памяти в Verilog:
logic [1:0][2:0] my_pack[32];
Перечисляемый тип позволяет дать числовым константам имена, например:
typedef enum logic [2:0] {
RED, GREEN, BLUE, CYAN, MAGENTA, YELLOW
} color_t;
color_t my_color = GREEN;
initial $display("The color is %s", my_color.name());
В этом примере logic[2:0] используется как базовый тип.
Структуры и объединения используются также как в языке C. Дополнительно к Verilog, SystemVerilog добавляет два новых аттрибута: packed и tagged. Аттрибут packed (упакованный) означает что все члены структуры хранятся компактно в памяти, без промежутков (т.е. компилятор не может делать их выравнивание):
typedef struct packed {
bit [10:0] expo;
bit sign;
bit [51:0] mant;
} FP;
FP zero = 64'b0;
Аттрибут tagged позволяет контроль того, какой член объединения используется в каждый момент при исполнение программы.
Процесс-блоки
Verilog предоставляет always процесс-блок, который в зависимости от контекста может описывать разные типы аппаратуры. Для того, чтобы описать тип аппратуры в явном виде, SystemVerilog добавляет 3 новых процесс блока: always_comb, always_ff, и always_latch.
Литература
Ссылки
- SystemVerilog.ru
- Язык SystemVerilog. Проектирование СБИС и систем, А.Пеженков, Д.Радченко, Электроника НТБ. Выпуск #4/2006.
- SystemVerilog и улучшение отладки проектов, Иосиф Каршенбойм, "Компоненты и технологии", #1/2010.
Это заготовка статьи о компьютерных языках. Помогите Википедии, дополнив её. |