Чтение строки переменной длины в файле с помощью SystemVerilog

Предположим, у меня есть строка переменной длины, как показано ниже:

Write <Address> <Data0> <Data1> <Data2>
Read <Address>
Write <Address> <Data0>
Write <Address> <Data0> <Data1> <Data2> <Data3>

Как читать в SystemVerilog или Verilog, используя файловые операции. Я умею читать, когда есть фиксированная длина текста

integer file    = $fopen(file_name,"r");
code = $fgets(line, file);
code = $sscanf(line, "%s %h %h %h", txn_type, Address, Data[i]);

person Vishwasu Deshpande    schedule 08.05.2018    source источник


Ответы (1)


Вы можете использовать $sscanf, когда количество полей не фиксировано, если вы указываете максимально возможное количество полей. Возвращаемое значение, помещенное в code, указывает фактическое количество просканированных аргументов. Так что просто создайте фиктивный список аргументов и скопируйте те, что указаны в строке

person dave_59    schedule 08.05.2018