Публикации по теме 'system-verilog'
Параллельное программирование в системе Verilog: Часть 2 — Отключить вилку и дождаться вилки.
В моем предыдущем блоге я объяснил, как конструкции fork и join в System Verilog предлагают мощные инструменты для управления параллелизмом и параллелизмом в процессах проверки и проектирования. Давайте теперь углубимся в исследование двух фундаментальных конструкций System Verilog: «отключить разветвление». и «подожди вилку».
Отключить вилку
При выполнении fork join_any мы видим, что оператор после join_any выполняется после выполнения любого процесса внутри fork. А остальные операторы..
Вопросы по теме 'system-verilog'
Как изменить распределение вероятностей случайных величин SystemVerilog?
Это для SystemVerilog. Я знаю, что вы можете указать веса для значений или диапазоны значений в наборе значений, из которых выбирает случайная величина, но что, если вам нужно хорошее гауссово распределение? Как написать такое ограничение?
8593 просмотров
schedule
21.11.2022
Обработка параметризации в пакетах SystemVerilog
SystemVerilog добавил пакеты для предоставления пространств имен для общих частей кода (функций, типов, констант и т. Д.). Но поскольку пакеты не создаются, их нельзя параметризовать, поэтому работа с параметризованными членами проблематична. На...
16549 просмотров
schedule
01.06.2024
вводы без типа в системном Verilog
Я встречал в примере системного кода Verilog отклонение входов и выходов для module без указания их типа, например logic , _3 _...
module mat_to_stream (
input [2:0] [2:0] [2:0] a,b,
input newdata,
input rst, clk,
output [2:0] [7:0]...
11032 просмотров
schedule
23.02.2022
Можно ли синтезировать system verilog constuct do-while?
Можно ли синтезировать конструкцию do <blah> while (0) в системном Verilog?
Я спрашиваю, потому что у меня есть несколько сложных макросов, которые я хочу защитить с помощью этого синтаксиса.
e.g.
`define my_macro(arg1) \
do \...
2072 просмотров
schedule
19.03.2024
Безопасное преобразование структуры SystemC из битовых / логических векторов в одиночные битовые / логические векторы
Я переношу код из SystemVerilog на SystemC. SV легко может интерпретировать упакованные структуры битов / логики как один бит / логический вектор. Например:
typedef struct logic {
logic [31:0] blk1; //63:32
logic [4:0] blk2; //31:27...
893 просмотров
schedule
08.09.2022
Как реализовать многомерный ассоциативный массив в С++?
Я переношу некоторый SystemVerilog на SystemC/C++ и у меня возникают проблемы с многомерным ассоциативным массивом. Рассмотрим объявление этого массива в SV.
// assume typ_one, typ_two, typ_three are struct or enum types
typ_one...
2810 просмотров
schedule
16.11.2022
Арифметический сдвиг действует как логический сдвиг независимо от знаковой переменной.
У меня есть регистр, объявленный так:
logic signed [15:0][2:0][15:0] registers;
Когда я помещаю число комплимента 2 в массив и арифметически сдвигаю число, вместо этого оно логически сдвигается:
registers[0][0] = 16'b1000000000000000;...
14094 просмотров
schedule
14.07.2022
Автоматическая переменная размера SystemVerilog с использованием ширины интерфейса и размера $?
Я пытаюсь создать модуль (в моем случае DSP) со стандартизованным интерфейсом памяти в SystemVerilog и хочу, чтобы размер переменных в модуле автоматически определялся шириной шины в подключенном интерфейсе. Мое объяснение: это делает код более...
7795 просмотров
schedule
22.04.2023
Что представляют собой 4'b1001 , 32'h0 (ВЕРНЫЙ СИНТАКСИС)?
Я новичок в Вере и пытаюсь понять синтаксис. Что означают 4b' и 32'? Это как 4 бит и 32 бит?
Я так смущен и должен работать над чем-то, связанным с этим.
Другой вопрос, что означает бит [31:0]? означает ли это что-нибудь из бит 31 и 0?...
9068 просмотров
schedule
06.04.2023
Что означает одинарная кавычка (') в SystemVerilog?
В примере класса OVM я вижу в конструкторе следующий оператор:
void'(get_config_int("num_packets", this.num_packets));
Что первая часть void'( должна делать в этом заявлении?
4711 просмотров
schedule
06.06.2023
Как привязать интерфейс к нескольким портам без дублирования кода?
В этом примере, как мне создать один оператор привязки интерфейса, который можно повторно использовать для обоих портов модуля:
module adderSubtractor2(
input clk,
input [7:0] a0,
input [7:0] b0,
input...
6106 просмотров
schedule
21.06.2022
Как чередовать два всегда блока?
Я хотел бы разработать простой код Verilog, который содержит два блока always, выполняющихся поочередно, например, рукопожатие. Я хочу использовать два флага, do_A и do_B, чтобы управлять двумя блоками, block_A и block_B. Ожидаемый результат должен...
1933 просмотров
schedule
22.03.2022
Ошибка VCS XMRE при непрерывном присвоении некоторого сигнала в условно сгенерированном экземпляре
У меня есть код Verilog, который выглядит примерно так
module top_tb
genUnit genUnit1;
spyUnit spyUnit1;
endmodule
module unitX(...)
logic some_signal;
endmodule
module genUnit
unitX unit1(….);
**generate
if(myparam==2) begin :...
4616 просмотров
schedule
03.08.2022
SV: Как создать функциональное покрытие для переходов, не беспокоясь о тактовых циклах?
Обычно я просто использую метод повторения в течение длительного времени для определенного перехода.
ie.
covergroup test1 @(posedge clk)
coverpoint( signal[1], signal[0])
{
bins transition1 = (2'b00[*1:100] =>2'b11[*1:100] =>...
1736 просмотров
schedule
30.12.2023
Индексирование векторов и массивов с помощью +:
Я вижу код в SystemVerilog, который имеет что-то вроде этого:
if(address[2*pointer+:2])
do_something;
Как я должен понимать +: при индексации этого вектора?
Я обнаружил, что это называется битовой нарезкой, но я не могу найти этому...
137038 просмотров
schedule
30.07.2023
Как я могу сделать тест, который проходит только тогда, когда утверждение терпит неудачу?
У меня есть модуль, в котором есть утверждение, когда обнаруживается предварительное условие, которое никогда не должно возникать. Как я могу написать тест, который проходит на основе сбоя этого утверждения, когда я даю модулю недопустимые входные...
192 просмотров
schedule
11.11.2022
UVM: недопустимая комбинация драйвера и предупреждения о процедурном назначении
У меня есть испытательный стенд UVM для небольшого блока в моем чипе. В нем есть агент с драйвером, который управляет данными в виртуальном интерфейсе, который выглядит примерно так:
interface my_if (input bit clk);
logic [3:0] opcode;
//...
8032 просмотров
schedule
23.03.2022
Могу ли я установить перечисление с его числовым значением?
Я хочу установить перечисление с числовым значением. Является ли следующий код допустимым для SystemVerilog?
`define DEC_ADDR 32'hC001CAFE
typedef enum bit [31:0] {
ILLEGAL_ADDR_0=0,
DEC_ADDR=`DEC_ADDR
} my_addr_e;
module tb;
initial...
12412 просмотров
schedule
21.04.2023
Запрос фазы UVM
У меня есть пара вопросов в связи с фазами UVM build() и run() . Они могут быть применимы и к другим методологиям проверки. a> Почему этап build() выполняется в порядке сверху вниз. Означает ли это, что нам нужно обновить все компоненты на...
2923 просмотров
schedule
27.06.2023
Как рандомизировать содержимое очень большой памяти?
Мне нужно рандомизировать большую память. Все данные содержатся внутри модулей-защелок — по 1 на бит.
Как исправить следующее?
// Quick mock up of the memory, which I can't change
`define WIDTH 64*144
module latch(
output reg Q);
endmodule...
382 просмотров
schedule
07.07.2023