new123 0 7 августа, 2020 Опубликовано 7 августа, 2020 · Жалоба Тема ожила =) Получил аж вдохновение, придется накатать bash скрипт с парсером qsf и другими линукс примочками =) Если красиво получится, может тут выложу, вдруг пригодится Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 7 августа, 2020 Опубликовано 7 августа, 2020 · Жалоба 19 minutes ago, new123 said: Тема ожила =) Получил аж вдохновение, придется накатать bash скрипт с парсером qsf и другими линукс примочками =) Если красиво получится, может тут выложу, вдруг пригодится Лучше на питоне. Даёшь кроссплатформенность) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 7 августа, 2020 Опубликовано 7 августа, 2020 · Жалоба Just now, nice_vladi said: Лучше на питоне. Даёшь кроссплатформенность) Питон совсем не знаю. Я уже около 5 лет на линуксе и там как то привык на bash все парсить. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
nice_vladi 2 7 августа, 2020 Опубликовано 7 августа, 2020 · Жалоба 1 hour ago, new123 said: Питон совсем не знаю. Я уже около 5 лет на линуксе и там как то привык на bash все парсить. Отличный повод просветиться и повысить компетенции =) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 7 августа, 2020 Опубликовано 7 августа, 2020 · Жалоба pyfxbn Приветствую! 2 hours ago, nice_vladi said: Лучше на питоне. Даёшь кроссплатформенность) Тут уж кому что более нравится, НО! -TCL родной язык FPGA тулов - тянуть что то внешнее значит добавлять зависимости. Простой парсер на tcl займет от силы сотню строк, например как основа: Spoiler proc qip_prser {fname {out_lib "work"} {out_dir "./out"}} { puts ">>> qip_prser: file:$fname -> lib:$out_lib -> out:$out_dir" set fname [file normalize $fname] set qip_dir [file dirname $fname] set fi [open $fname "r"] set lines [split [read $fi] "\n"] close $fi set qip_list [list] set out_list [list] set ::quartus(qip_path) $qip_dir set ::quartus(sip_path) $qip_dir foreach line $lines { puts ">>$line" if {[regexp -- {^\#} $line]} { continue } if {![regexp -- {^\s*set_global_assignment\s+.*?-name\s+(\w+)\s+((?:\[.+?\])|(?:\".+\")|(?:\$.+))} $line -> kind kind_val]} { continue } set in_fname [relative_to [subst $kind_val] $qip_dir] set ip_name [file rootname [file tail $in_fname]] set src_fname [lexnormalize [file join $qip_dir $in_fname]] set out_fname [file join $out_dir $in_fname] if {![regexp -- {-library\s+((?:\"\w+\")|(?:\w+))} $line -> lib_name]} { set lib_name $out_lib } set lib_name [string map {\" {}} $lib_name] switch $kind { "SIP_FILE" - "QIP_FILE" { # ... } "VERILOGINCLUDE_FILE" { # ... } "VERILOG_FILE" - "VHDL_FILE" - "SYSTEMVERILOG_FILE" { # ... } "SOURCE_FILE" - "MISC_FILE" { puts ">> sip:$is_sip, misc kind: $kind, val:[subst $kind_val]" set fext [string tolower [file extension $in_fname]] switch $fext { ".vhd" { # ... } ".sv" { # ... } ".vo" - ".v" { # ... } ".mem" - ".hex" { # ... } default { puts ">> undefine misc file ext: $fext" } } } default { puts ">> undefine kind: $kind" } } } # recursive process included QIP foreach qip_file $qip_list { lappend out_list {*}[qip_prser $qip_file $out_lib "$out_dir/$ip_name"] } return $out_list } Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
new123 0 7 августа, 2020 Опубликовано 7 августа, 2020 (изменено) · Жалоба 25 minutes ago, RobFPGA said: Простой парсер на tcl займе не знал что он так может, еще и регексы поддерживает. спасибо за пример Изменено 7 августа, 2020 пользователем new123 Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
RobFPGA 34 8 августа, 2020 Опубликовано 8 августа, 2020 · Жалоба Приветствую! On 8/7/2020 at 1:43 PM, new123 said: не знал что он так может, еще и регексы поддерживает. спасибо за пример Удивительное рядом - например весь GUI Modelsim писан на TCL/TK и там не только regexp есть Что позволяет при некотором усилии например менять или добавлять свой функционал внутрь GUI (свои менюшки, дополнительные функции, и.т.д. и.т.п. ) Удачи! Rob. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться