Чтение строки переменной длины в файле с помощью 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]);
1 ответ
Ты можешь использовать $sscanf
когда количество полей не фиксировано, если вы указали максимально возможное количество полей. Возвращаемое значение помещается в code
указывает фактическое количество проверенных аргументов. Так что просто создайте фиктивный список аргументов и скопируйте те, что указаны в строке