Вопросы по теме 'system-verilog'

Не могу понять ошибку в System Verilog
Я пытался скомпилировать код module counter( input clk, input upSignal, input downSignal, output [7:0] count ); always_ff @(posedge clk) begin if (upSignal) count <= count + 1; else...
3809 просмотров
schedule 20.06.2023

Альтернатива поиску по упакованному+распакованному массиву в systemverilog
У меня есть эта странная ситуация, когда я сейчас делаю это: if (!this.randomize(delay) with {delay inside {strm};}) ...... куда rand bit [2:0] delay; bit [15:0] strm [bit [15:0]]; Теперь я хочу, чтобы эта задержка шла по кругу от...
958 просмотров

Оператор case в SystemVerilog не работает
Кто-нибудь знает, почему этот оператор case не работает: int width; width = 8; case (width === 16) 1'b0: begin // correct code end 1'b1: begin // we end up here end endcase Я использую VCS. Я пробовал запускать это с помощью...
24825 просмотров
schedule 03.03.2023

Что означает правильность аппаратного обеспечения, синтезированного из кода Verilog
Я прочитал "Неблокирующие присвоения в Verilog Synthesis, убивающие стили кодирования!" пользователя Клиффорд Каммингс. Он говорит, что код в конце этого вопроса "гарантированно" будет синтезирован в конвейер с тремя триггерами, но не гарантируется...
1773 просмотров
schedule 09.08.2022

как вызвать функцию в Verilog и указать ей параметры?
Как я могу вызвать функцию внутри модуля в Verilog с функцией, имеющей параметры, и определить для нее параметры? Для тривиального примера: function automatic void inv(); parameter W = 1; input logic [W:0] in; output logic [W:0] out;...
11108 просмотров
schedule 21.07.2023

Могу ли я сгенерировать несколько свойств SystemVerilog в цикле?
У меня есть два упакованных массива сигналов, и мне нужно создать свойство и связанное с ним утверждение для этого свойства, которое доказывает, что два массива идентичны при определенных условиях. Я формально проверяю, и инструмент не может...
13433 просмотров

преобразовать verilog в FSM
У меня есть программа, написанная на Verilog, и я хочу автоматически преобразовать ее в FSM. Возможно ли это (просто для наглядности)? Вот код: module pci(reset,clk,frame,irdy,trdy,devsel,idsel,ad,cbe,par,stop,inta,led_out); input reset;...
2389 просмотров
schedule 28.05.2024

Как создать строку из макроса препроцессора
У меня есть макрос препроцессора, который представляет собой иерархический путь в моем проекте. Пример: `define HPATH top.chip.block Мне нужно построить строку, которая содержит значение `HPATH , поэтому в моем примере строка должна...
24522 просмотров
schedule 07.12.2023

как обнулить регистр в системе Verilog
Как мне обнулить регистр в SystemVerilog, если я не знаю его размер? Например, если у меня есть: reg [DATA_WIDTH-1:0] data_stack; с некоторым параметром DATA_WIDTH , заданным модулю. Можно ли присвоить регистру data_stack ноль?...
1137 просмотров
schedule 05.01.2023

Есть ли в Verilog / SV оператор ifx-elsex, например casex?
Скажем, у меня есть сценарий, в котором мне нужно сравнить только несколько битов регистра, а другие биты меня не интересуют. eq, мне нужно проверить первый и последний биты 3-битного регистра (A [2: 0]), и меня не волнует средний бит, скажем, вектор...
4701 просмотров
schedule 05.06.2022

Как представить длинную последовательность массивов?
Я хочу представить задание с длинным списком переменных. Как сделать его компактным? Я попытался сгенерировать и составить список, но не смог этого понять. Длина может быть переменной, поэтому необходимо использовать параметр. assign...
94 просмотров
schedule 18.07.2022

Как передать значение переменной в макрос в SystemVerilog?
Я думаю, что вопрос довольно хорошо подводит итог тому, что я хочу: передать значение переменной в макрос в SystemVerilog. Например, что я хочу: Скажем, есть 4 сигнала по имени abc_X_def и я хочу их все инициализировать в 0. Итак, без макросов:...
20646 просмотров
schedule 17.04.2022

System Verilog DPI - неизвестный размер массива
У меня такой код: file.sv module svtest(); import "DPI-C" function void my_func(output bit [31:0] id, input bit [31:0] size); bit [31:0] my_id; bit [31:0] my_size; initial begin my_size = 1 << 30;...
1080 просмотров
schedule 08.08.2023

Как остановить все запущенные последовательности в UVM?
Есть ли способ остановить все запущенные последовательности во время моделирования (скажем, когда вы получаете сброс)? Есть ли способ сбросить список всех запущенных последовательностей в определенное время во время моделирования?
6725 просмотров
schedule 07.08.2022

утверждение Verilog: антецедент импликации никогда не выполнялся
property p_no_glitch; logic data; @(in[i]) disable iff (!rst_n) (1, data = !in[i]) |=> @(posedge clk) (in[i] == data); endproperty : p_no_glitch CHECK_GLITCH : assert property(p_no_glitch) else...
1334 просмотров

пытаясь узнать больше о языке verilog, vhdl и языке ассемблера
Я хотел бы знать, в чем разница между verilog и языком ассемблера. В следующем семестре мы будем работать с микроконтроллерами, но я хотел бы немного узнать об этом до начала семестра. Я провел много исследований в области низкоуровневого...
5568 просмотров
schedule 20.03.2023

Ограничение для определенных битов
Я пытаюсь случайно ограничить 32-битный адрес. Есть ли способ ограничить определенные биты адреса? rand bit [31:0] addr; // last two bits should always be zero req.randomize() with { addr[1:0] == 2'b00; };
2125 просмотров
schedule 25.04.2023

Почему эти процессы SystemVerilog не заканчиваются?
Программа ниже запускает четыре процесса. Задача сначала ожидает начала выполнения последнего процесса, а затем ожидает завершения первого процесса. В этот момент родительский процесс принудительно завершает все разветвленные процессы, которые еще...
456 просмотров
schedule 24.12.2022

Зарегистрируйте виртуальный класс на фабрике UVM
Есть ли у кого-нибудь способ зарегистрировать виртуальные классы на фабрике? Использование макроса object_utils определит метод type_id :: create (...), который вызывает new (...) для виртуального класса, что является недопустимым. Естественно,...
621 просмотров
schedule 14.10.2022

используя оператор assign для оператора `define
Я использую оператор assign Verilog для назначения `define, как показано ниже, в моем модуле драйвера. `define SPI_MASTER_P_IF spi_vif.spi_master_p.spi_master_p_cb `define SPI_MASTER_N_IF spi_vif.spi_master_n.spi_master_n_cb `define...
896 просмотров
schedule 23.11.2023