如何创建一个有效perl和verilog的文件

如何创建一个有效perl和verilog的文件,第1张

概述您好Stack_overflow专家! 我想创建一个同时有效的perl代码和有效的verilog代码的文件.实际的verilog和perl功能根本不需要相关.像这样的东西的标准术语是polyglot program,但我找不到verilog perl的例子.我知道将它作为2个单独的文件可能是一个更好的主意,但在这种情况下,将相关内容放在同一个文件中会很好.我也很好奇,知道这是否可行. 这是我想要的 您好Stack_overflow专家!

我想创建一个同时有效的perl代码和有效的verilog代码的文件.实际的verilog和perl功能根本不需要相关.像这样的东西的标准术语是polyglot program,但我找不到verilog perl的例子.我知道将它作为2个单独的文件可能是一个更好的主意,但在这种情况下,将相关内容放在同一个文件中会很好.我也很好奇,知道这是否可行.

这是我想要的东西:

$THIS_IS_VERILOG_CODE = <<'_THIS_IS_VERILOG_CODE_';  module my_and_gate #(parameter WIDTH=1) (a,b,z);   input  [WIDTH-1:0] a,b;   output [WIDTH-1:0] z;   assign z = a & b;  endmodule_THIS_IS_VERILOG_CODE_`ifdef _THIS_IS_PERL_CODE_  sub print_instance {    my ($a,$b,$z,$i,$wIDth) = @_;    print "my_and_gate and$i #(.WIDTH($wIDth)) (.a($a),.b($b),.z($z));\n";  }  &print_instance(first,second,both,5,3);`endif // _THIS_IS_PERL_CODE_

但我无法弄清楚如何以不会弄乱相反语言的方式编写* THIS_IS *行.

更新:
可能值得一提的是,当以perl运行时,我希望该文件只生成perl代码的结果:

my_and_gate and5 #(.WIDTH(3)) (.a(first),.b(second),.z(both));

当解析为Verilog时,我希望它被解释为verilog部分:

module my_and_gate #(parameter WIDTH=1) (a,b;   output [WIDTH-1:0] z;   assign z = a & b;  endmodule

谢谢!

解决方法 这并不完全生成您想要的输出,但它是一个有效的Verilog和Perl代码:

首先需要创建一个新的perl包.让我们称之为perilog.pm:

package perilog;use Filter::Simple;FILTER {     s/`ifdef.*?`else//sg;     s/`endif//sg;     }1;

然后你的perl / verilog代码可以是:

`ifdef _THIS_IS_VERILOG_ module test();    initial     $display("Hello from Verilog\n"); endmodule`else    print ("Hello from perl\n");`endif

说明:我使用了source filter作为perl编译器. perilog包中的第一个过滤器隐藏了`ifdef和`else之间的内容.第二个过滤器隐藏`endif.

perl编译器的命令行应该有-Mperilog.Verilog编译器的命令行应该定义_THIS_IS_VERILOG_.

总结

以上是内存溢出为你收集整理的如何创建一个有效perl和verilog的文件全部内容,希望文章能够帮你解决如何创建一个有效perl和verilog的文件所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1213108.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-04
下一篇 2022-06-04

发表评论

登录后才能评论

评论列表(0条)

保存