linux:perl:用perl产生verilog文件
差别
这里会显示出您选择的修订版和当前版本之间的差别。
两侧同时换到之前的修订记录前一修订版后一修订版 | 前一修订版 | ||
linux:perl:用perl产生verilog文件 [2023/03/17 10:12] – 外部编辑 127.0.0.1 | linux:perl:用perl产生verilog文件 [2023/10/27 22:27] (当前版本) – [1. vpl.pl] zhangguo | ||
---|---|---|---|
行 2: | 行 2: | ||
主要是perl可以很方便支持类似1..3, | 主要是perl可以很方便支持类似1..3, | ||
- | |||
- | ===== - t.pl ===== | ||
- | |||
- | 直接写perl脚本来产生代码; | ||
- | * 缺点是打印语句要写print, | ||
- | * 好处是直接上手perl语法,方便,容易debug。 | ||
- | |||
- | <file perl t.pl> | ||
- | @ar = (1..3, a..c, A..C); | ||
- | foreach $i (@ar) { | ||
- | print " | ||
- | } | ||
- | |||
- | print " | ||
- | @ar = reverse @ar; | ||
- | foreach $i (@ar) { | ||
- | print " | ||
- | } | ||
- | </ | ||
- | |||
- | 执行效果: | ||
- | |||
- | <code bash> | ||
- | >perl t.pl | ||
- | |||
- | |||
- | hello01good | ||
- | hello02good | ||
- | hello03good | ||
- | hello0agood | ||
- | hello0bgood | ||
- | hello0cgood | ||
- | hello0Agood | ||
- | hello0Bgood | ||
- | hello0Cgood | ||
- | |||
- | hello1Cgood | ||
- | hello1Bgood | ||
- | hello1Agood | ||
- | hello1cgood | ||
- | hello1bgood | ||
- | hello1agood | ||
- | hello13good | ||
- | hello12good | ||
- | hello11good | ||
- | </ | ||
行 57: | 行 11: | ||
<file perl vpl.pl> | <file perl vpl.pl> | ||
+ | # | ||
if (scalar @ARGV < 1) { | if (scalar @ARGV < 1) { | ||
- | print " | + | print " |
exit; | exit; | ||
} | } | ||
$ivpl = shift @ARGV; | $ivpl = shift @ARGV; | ||
- | $opl = $ivpl; | + | $opl = "$ivpl.pl"; |
- | $opl =~ s/\.\w+$/.opl/; | + | |
if (scalar @ARGV > 0) { | if (scalar @ARGV > 0) { | ||
$vfile = shift @ARGV; | $vfile = shift @ARGV; | ||
} | } | ||
else { | else { | ||
- | $vfile = $ivpl; | + | $vfile = "$ivpl.v"; |
- | $vfile =~ s/\.\w+$/.v/; | + | |
} | } | ||
行 100: | 行 53: | ||
if ($ret == 0) { | if ($ret == 0) { | ||
print " | print " | ||
- | @ar = glob "$opl*"; | + | @ar = glob " |
- | #print "will delete @ar\n"; | + | |
foreach $tmp (@ar) { | foreach $tmp (@ar) { | ||
unlink ($tmp); | unlink ($tmp); | ||
行 108: | 行 60: | ||
exit 0; | exit 0; | ||
+ | |||
</ | </ | ||
+ | |||
+ | |||
+ | |||
+ | ===== - example ===== | ||
+ | |||
+ | <code bash> | ||
+ | localhost / | ||
+ | generate a.x.v ok! | ||
+ | </ | ||
+ | |||
+ | file: a.x | ||
+ | <code verilog> | ||
+ | module a( | ||
+ | input clk, | ||
+ | |||
+ | ; for ($i=0; $i<10; $i++) { | ||
+ | input data_$i, | ||
+ | ;} | ||
+ | |||
+ | output data_o | ||
+ | ); | ||
+ | |||
+ | ; for ($i=0; $i<10; $i++) { | ||
+ | ; $j = 10 - $i; | ||
+ | // 10 - $j = $i; | ||
+ | ; } | ||
+ | |||
+ | |||
+ | endmodule | ||
+ | </ | ||
+ | |||
+ | output a.x.v: | ||
+ | <code verilog> | ||
+ | module a( | ||
+ | input clk, | ||
+ | |||
+ | input data_0, | ||
+ | input data_1, | ||
+ | input data_2, | ||
+ | input data_3, | ||
+ | input data_4, | ||
+ | input data_5, | ||
+ | input data_6, | ||
+ | input data_7, | ||
+ | input data_8, | ||
+ | input data_9, | ||
+ | |||
+ | output data_o | ||
+ | ); | ||
+ | |||
+ | // 10 - 10 = 0; | ||
+ | // 10 - 9 = 1; | ||
+ | // 10 - 8 = 2; | ||
+ | // 10 - 7 = 3; | ||
+ | // 10 - 6 = 4; | ||
+ | // 10 - 5 = 5; | ||
+ | // 10 - 4 = 6; | ||
+ | // 10 - 3 = 7; | ||
+ | // 10 - 2 = 8; | ||
+ | // 10 - 1 = 9; | ||
+ | |||
+ | |||
+ | endmodule | ||
+ | </ | ||
+ |
linux/perl/用perl产生verilog文件.1679019144.txt.gz · 最后更改: 2023/03/17 10:12 由 127.0.0.1