Вопросы по теме '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 просмотров
schedule
14.08.2022
Оператор 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 просмотров
schedule
24.06.2022
преобразовать 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 просмотров
schedule
24.05.2024
пытаясь узнать больше о языке 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