Скрипт Tcl ИЛИ Perl? - PullRequest
       17

Скрипт Tcl ИЛИ Perl?

0 голосов
/ 18 марта 2019

Я хочу заменить следующий код verilog с помощью сценариев.

assign x0 = in0 + in7;

Я хочу найти знак "+" выше и заменить всю строку на строку ниже:

KSA_32 U1(.A(in0), .B(in7), .Sum(x0));

Есть ли какие-либо предложения и примеры сценариев по этому поводу?

1 Ответ

1 голос
/ 18 марта 2019

Если ваш файл Verilog удобно помещается в памяти, вы можете просто сделать:

# Read in the file
set f [open $verilogfile r]
set contents [read $f]
close $f

# Perform the transform across the whole contents
regsub -all {assign\s+(\w+)\s*=\s*(\w+)\s*\+\s*(\w+);} $contents \
        {KSA_32 U1(.A(\2), .B(\3), .Sum(\1));} contents

# Write the results out to a new file (different filename so you can check the results by hand)
set f [open $verilogfile.new w]
puts -nonewline $f $contents
close $f

Первый и третий блок - это стандартные шаблоны Tcl для манипулирования файлами.Второй - это стандартная замена регулярных выражений, которую я сделал, взяв то, что вы просили, и применив догадки к шаблонам.Обратите внимание, что литерал + необходимо экранировать, а пробелы лучше всего сопоставлять как \s+ или \s*.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...