SystemVerilog

Запускаем UVM 1.2 в QuestaSim под Windows

Знакомство с библиотекой UVM логично начать с примеров, которые включены в дистрибутив библиотеки. Запуск этих примеров в QuestaSim под Windows не может не вызвать затруднений, т.к. в предлагаемых Makefile'ах для запуска примеров есть ошибки. В этой статье я покажу, как с минимальной модификацией исходных Makefile'ов запустить примеры <UVM_HOME>/examples/simple/hello_world и <UVM_HOME>/examples/integrated/ubus. И в качестве бонуса более привычные...

Read more...

Ключевые слова

alias always always_comb always_ff always_latch and assert assign assume automatic before begin bind bins binsof bit break buf bufif0 bufif1 byte case casex casez cell chandle class clocking cmos config const constraint context continue cover covergroup coverpoint cross deassign default defparam design disable dist do edge else end endcase endclass endclocking endconfig endfunction endgenerate endgroup endinterface endmodule endpackage endprimitive endprogram endproperty endspecify endsequence endtable endtask enum event expect export extends extern final first_match for force foreach forever fork forkjoin function generate genvar highz0 highz1 if iff ifnone ignore_bins illegal_bins import incdir include initial inout input inside instance int integer interface intersect join join_any join_none large liblist library local localparam logic longint macromodule matches medium modport module nand negedge new nmos nor noshowcancelled not notif0 notif1 null or output package packed parameter pmos posedge primitive priority program property protected pull0 pull1 pulldown pullup pulsestyle_onevent pulsestyle_ondetect pure rand randc randcase randsequence rcmos real realtime ref reg release repeat return rnmos rpmos rtran rtranif0 rtranif1 scalared sequence shortint shortreal showcancelled signed small solve specify specparam static string strong0 strong1 struct super supply0 supply1 table tagged task this throughout time timeprecision timeunit tran tranif0 tranif1 tri tri0 tri1 triand trior trireg type typedef union unique unsigned use uwire var vectored virtual void wait wait_order wand weak0 weak1 while wildcard wire with within wor xnor xor

Read more...

Тип данных enum в SystemVerilog

Если переменная имеет ограниченное число возможных значений, то иногда удобно присвоить этим значениям символьные имена. Распространенный пример - имена состояний автомата (IDLE, REQ, RESP и т.д.), которые в символьном виде делают код более читабельным. Если в Verilog присвоить символьные имена можно было с помощью параметров или дефайнов, то в...

Read more...

Пользовательские типы данных

В SystemVerilog можно создавать свои типы данных: Typedef Enum Union Struct Class Типы данных typedef Новый тип данных можно создать с помощью typedef: typedef int MyIntType; Объявление переменных этого типа: MyIntType a, b; Пользовательский тип можно использовать до его определения: typedef foo;foo f = 1;typedef int foo; Переменные типа enum должны быть определены до использования Для идентификаторов пользовательских типов данных справедливы те же...

Read more...

Строки

В Verilog, строковые литералы упакованы массивов, ширина которого кратна 8 битам. В масиве этом хранятся ASCII коды. Если в Verilog возникает ситуация, когда строка больше, чем отведенная для нее строковая переменная, строка усекается слева и крайние левые символы теряются. SystemVerilog добавляет новое ключевое слово "string", которое используется для...

Read more...

Литералы

Для того, чтобы присвоить всем битам вектора одинаковое значение, в Verilog необходимо явно прописывать значение для каждого бита. assign test_seq[63:32] = 32'hffffffff; В SystemVerilog заполнить вектор одинаковым значениями можно так: assign test_seq[63:32] = '1; Эта пример эквивалентен предыдущему '0, '1, 'X, 'x, 'Z, 'z - заполнение вектора этим значением Временные литералы Единицы времени задаются целыми числами...

Read more...

Типы данных

SystemVerilog расширяет существующие типы данных языка Verilog и добавляет новые, что улучшает инкапсуляцию данных и делает код более компактным. Прежде всего, добавлены типы данных языка C. Также добавлены типы данных с 2-мя состояниями (2-state), которые могут принимать значения 0 и 1. Напомню, что до этого в Verilog были только...

Read more...

Конструкции языка – Введение

SystemVerilog представляет собой новый тип языка – унифицированный язык описания и верификации аппаратуры (Hardware Description and Verification Language, HDVL). Стандарт языка был разработан организацией Accellera. SystemVerilog включает в себя возможности Verilog, SuperLog, VHDL, PSL, C/C++ и Vera. Некоторые из возможностей языка являются уникальными, но самое главное, что они объединены...

Read more...