Мне нужно выполнять основные операции со строками, такие как конкатенация, замена и сравнение в моей симуляции Verilog. Как это возможно? Есть ли встроенная поддержка?
Заранее спасибо.
Мне нужно выполнять основные операции со строками, такие как конкатенация, замена и сравнение в моей симуляции Verilog. Как это возможно? Есть ли встроенная поддержка?
Заранее спасибо.
Если у вас есть доступ к современному симулятору, который поддерживает синтаксис SystemVerilog, существует тип данных string
. Строки можно объединять и сравнивать. См. стандарт IEEE (1800-2009).
В Verilog нет строкового типа данных, однако Verilog поддерживает строковые литералы и использует их как байтовые векторы. Это пример из спецификации:
module string_test;
reg [8*14:1] stringvar;
initial begin
stringvar = "Hello world";
$display ("%s is stored as %h", stringvar,stringvar);
stringvar = {stringvar,"!!!"};
$display ("%s is stored as %h", stringvar,stringvar);
end
endmodule
Поскольку строки используют тип данных reg, вы можете использовать обычные операторы для управления ими, помня, что каждый символ использует 8 бит.
5.2.3.1 Операции со строками
Стандартные операции копирования, объединения и сравнения строк поддерживаются операторами Verilog HDL. Копия предоставляется простым присвоением. Конкатенация обеспечивается оператором конкатенации. Сравнение обеспечивается операторами равенства. При манипулировании строковыми значениями в векторных регистрах регистры должны быть не менее 8*n бит (где n — количество символов ASCII), чтобы сохранить 8-битный код ASCII.
Вам придется написать некоторые задачи или функции, если вам нужны такие операции, как поиск.
ситахери,
Возрождение мертвой темы, но я вижу, что возникает этот вопрос, и для него есть более новое решение.
svlib — это бесплатная библиотека служебных функций с открытым исходным кодом для SystemVerilog. Он включает в себя функции манипулирования файлами и строками, полный поиск/замену регулярных выражений, простое чтение и запись файлов конфигурации, доступ к переменным среды и времени настенных часов и многое другое. Этот проект был представлен на DVCon 2014.
http://www.verilab.com/resources/svlib/