چگونه می توان تمام موارد را در لیست verilog با perl چاپ کرد

هنگام کار با لیست های Verilog ، ممکن است خود را پیدا کنید که نیاز به استخراج نمونه های خاص ماژول ها یا اجزای این پرونده ها داشته باشید. این اغلب می تواند شامل تجزیه متن برای مطابقت با الگوهای خاص باشد. در این مقاله ، ما با استفاده از الگوهای Regex ، نحوه استفاده از Perl را برای چاپ تمام موارد در لیست verilog بررسی خواهیم کرد. ما همچنین نحوه دستیابی به نتایج مشابه را با استفاده از EGREP برای کسانی که ابزارهای خط فرمان را ترجیح می دهند ، نشان خواهیم داد.
درک فرمت نمونه verilog
Verilog یک زبان توصیف سخت افزاری است که برای مدل سازی سیستم های الکترونیکی استفاده می شود. موارد موجود در یک لیست خالص Verilog به طور معمول در قالب زیر ساختار یافته است:
name name_inst(
camera cam_inst(
در اینجا name
می تواند هر چیزی باشد و name_inst
همیشه با یک پرانتز افتتاحیه به پایان می رسد (
بشر این الگوی به ما امکان می دهد هر نمونه را شناسایی کنیم.
استفاده از Perl برای مطابقت با موارد
برای استخراج موارد با PERL ، می توانیم از عبارات منظم برای جستجوی قالب مشخص شده استفاده کنیم. در زیر مراحل انجام این کار آورده شده است:
مرحله 1: اسکریپت اصلی پرل
ما با ایجاد یک اسکریپت Perl ساده که از طریق یک فایل NetList Verilog می خواند ، شروع می کنیم و با استفاده از REGEX با نام های نمونه مورد نیاز مطابقت می یابد.
#!/usr/bin/perl
use strict;
use warnings;
# Open the Verilog netlist file
my $filename="netlist.v";
open my $fh, '<', $filename or die "Could not open file '$filename' $!";
while (my $line = <$fh>) {
if ($line =~ /\b\w+\s+(\w+_inst)\s*\(/) {
print "Instance Found: $1\n";
}
}
close $fh;
مرحله 2: توضیح فیلمنامه
- اسکریپت با باز کردن یک پرونده لیست verilog به نام آغاز می شود
netlist.v
بشر - این خط را به صورت خط می خواند و هر خط را در برابر الگوی Regex بررسی می کند.
- الگوی regex
\b\w+\s+(\w+_inst)\s*\(
به دنبال:-
\b\w+
: یک مرز کلمه به دنبال یک یا چند شخصیت کلمه برای مطابقتname
بشر -
\s+
: یک یا چند کاراکتر فضای سفید. -
(\w+_inst)
: ضبط نام نمونه ای که دنبال می شود و به پایان می رسد_inst
بشر -
\s*\(
: فضای سفید اختیاری و به دنبال آن یک پرانتز افتتاحیه ، اطمینان حاصل می کنیم که ما نمونه را به طور دقیق شناسایی می کنیم.
-
- وقتی یک مسابقه پیدا شد ، نام نمونه را با استفاده از آن چاپ می کند
$1
، که نمونه همسان را ضبط می کند.
مرحله 3: اجرای فیلمنامه
برای اجرای فیلمنامه ، آن را ذخیره کنید extract_instances.pl
، مجوزهای اعدام را ارائه دهید و آن را اجرا کنید:
chmod +x extract_instances.pl
./extract_instances.pl
استفاده از EGREP برای تطبیق سریع
اگر به دنبال یک راه حل سریع خط فرمان هستید ، EGREP یک گزینه قدرتمند است. در زیر یک دستور مثال وجود دارد که می توانید مستقیماً در ترمینال خود اجرا کنید:
egrep -o '\b\w+\s+\w+_inst\s*\(' netlist.v
- در این دستور:
-
-o
تضمین می کند که فقط قطعات همسان چاپ می شوند. - الگوی Regex با همان قالب که قبلاً مورد بحث قرار گرفت مطابقت دارد.
-
پایان
به طور خلاصه ، استخراج موارد از لیست خالص Verilog می تواند با استفاده از Perl یا EGREP به طور مؤثر اداره شود. اسکریپت Perl یک روش قوی برای رسیدگی به ورودی فایل و تطبیق Regex فراهم می کند ، در حالی که EGREP یک راه حل سریع خط فرمان ارائه می دهد. بسته به گردش کار و ترجیحات شما ، از هر روش می توان برای دستیابی به نتایج مطلوب استفاده کرد. از این روش ها برای ساده کردن کارهای تجزیه و تحلیل لیست verilog خود استفاده کنید!
سوالات متداول
لیست خالص verilog چیست؟
لیست خالص Verilog یک متن از طراحی سخت افزار در Verilog برای شبیه سازی یا سنتز است.
آیا می توانم Regex را برای سایر الگوهای اصلاح کنم؟
بله ، می توانید الگوی Regex را در هر دو Perl و EGREP تنظیم کنید تا در صورت لزوم با قالب های مختلف متفاوت مطابقت داشته باشد.
از چه ابزارهای دیگری می توانم برای تجزیه لیست های خالص استفاده کنم؟
علاوه بر Perl و EGREP ، ابزارهایی مانند پایتون با کتابخانه های Regex یا ابزارهای تخصصی طراحی سخت افزار نیز می توانند برای تجزیه لیست های Netlog Werilog مفید باشند.