В Verilog, строковые литералы упакованы массивов, ширина которого кратна 8 битам. В масиве этом хранятся ASCII коды. Если в Verilog возникает ситуация, когда строка больше, чем отведенная для нее строковая переменная, строка усекается слева и крайние левые символы теряются. SystemVerilog добавляет новое ключевое слово "string", которое используется для объявления строкового типа данных. Строка типа string может быть произвольной длины и не усекается.

string ProjName = "SUPER-PUPER PCI CONTROLLER";

Методы для работы со строками

SystemVerilog включает набор методов для работы со строками

  1. str.len() - возвращает длину строки (количество символов в строке)
  2. str.putc(i, c) - заменяет i-й элемент строки на c
  3. str.getc(i) - возвращает ASCII код i-го символа строки str
  4. str.toupper() - возвращает строку с символами в верхнем регистре (вся строка большими буквами)
  5. str.tolower() - возвращает строку с символами в нижнем регистре (вся строка маленькими буквами)
  6. str.compare(s) - сравнивает строку str со строкой s и возвращает результат. Эта функция чувствительна к регистру.
  7. str.icompare(s) - сравнивает строку str со строкой s и возвращает результат. Эта функция НЕчувствительна к регистру.
  8. str.substr(i, j) - возвращает новую строку, которая содержит с i-го по j-й символ строки str
  9. str.atoi() - конвертирует строку str в числовой вид (из ASCII в целое число)
  10. str.atoreal() - конвертирует строку str в числовой вид (из ASCII в вещественное число)
  11. str.itoa(i) - конвертирует десятичный ASCII код в строку str (функция обратная atoi)
  12. str.hextoa(i) - конвертирует шестнадцатиричный ASCII код в строку str (функция обратная atohex)
  13. str.bintoa(i) - конвертирует двоичный ASCII код в строку str (функция обратная atobin)
  14. str.realtoa(r) - конвертирует вещественный ASCII код в строку str (функция обратная atoreal)