Публикации по теме '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 просмотров

Что представляют собой 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 просмотров

Индексирование векторов и массивов с помощью +:
Я вижу код в SystemVerilog, который имеет что-то вроде этого: if(address[2*pointer+:2]) do_something; Как я должен понимать +: при индексации этого вектора? Я обнаружил, что это называется битовой нарезкой, но я не могу найти этому...
137038 просмотров
schedule 30.07.2023

Как я могу сделать тест, который проходит только тогда, когда утверждение терпит неудачу?
У меня есть модуль, в котором есть утверждение, когда обнаруживается предварительное условие, которое никогда не должно возникать. Как я могу написать тест, который проходит на основе сбоя этого утверждения, когда я даю модулю недопустимые входные...
192 просмотров

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