Строки
В Verilog, строковые литералы упакованы массивов, ширина которого кратна 8 битам. В масиве этом хранятся ASCII коды. Если в Verilog возникает ситуация, когда строка больше, чем отведенная для нее строковая переменная, строка усекается слева и крайние левые символы теряются. SystemVerilog добавляет новое ключевое слово “string”, которое используется для объявления строкового типа данных. Строка типа string может быть произвольной длины и не усекается.
- string ProjName = "SUPER-PUPER PCI CONTROLLER";
Методы для работы со строками
SystemVerilog включает набор методов для работы со строками
- str.len() – возвращает длину строки (количество символов в строке)
- str.putc(i, c) – заменяет i-й элемент строки на c
- str.getc(i) – возвращает ASCII код i-го символа строки str
- str.toupper() – возвращает строку с символами в верхнем регистре (вся строка большими буквами)
- str.tolower() – возвращает строку с символами в нижнем регистре (вся строка маленькими буквами)
- str.compare(s) – сравнивает строку str со строкой s и возвращает результат. Эта функция чувствительна к регистру.
- str.icompare(s) – сравнивает строку str со строкой s и возвращает результат. Эта функция НЕчувствительна к регистру.
- str.substr(i, j) – возвращает новую строку, которая содержит с i-го по j-й символ строки str
- str.atoi() – конвертирует строку str в числовой вид (из ASCII в целое число)
- str.atoreal() – конвертирует строку str в числовой вид (из ASCII в вещественное число)
- str.itoa(i) – конвертирует десятичный ASCII код в строку str (функция обратная atoi)
- str.hextoa(i) – конвертирует шестнадцатиричный ASCII код в строку str (функция обратная atohex)
- str.bintoa(i) – конвертирует двоичный ASCII код в строку str (функция обратная atobin)
- str.realtoa(r) – конвертирует вещественный ASCII код в строку str (функция обратная atoreal)