如何使用 Icarus Verilog 在 Verilog 中转换 VHDL 代码?
Posted
技术标签:
【中文标题】如何使用 Icarus Verilog 在 Verilog 中转换 VHDL 代码?【英文标题】:How to convert a VHDL code in Verilog using Icarus Verilog? 【发布时间】:2016-01-06 09:30:09 【问题描述】:我在 doc 中找不到使用 icarus 将 VHDL 代码转换为 Verilog 的示例。我找到了如何对 VHDL here 进行 verilog。 我试图修改命令以在this code 上进行 VHDL 转换:
$ iverilog -tvlog95 -o button_deb.v button_deb.vhdl
button_deb.vhdl:3: syntax error
I give up.
但是我遇到了语法错误。我的 VHDL 代码错了吗?还是iverilog命令出错了?
【问题讨论】:
【参考方案1】:没有 Verilog 目标,因此您无法生成 Verilog 输出,而且 VHDL 编译无论如何仍处于试验阶段。您可以在邮件列表中询问,以确保引擎盖下没有任何可以提供帮助的信息。 VHDL 到 Verilog 的转换只能在相对简单的情况下进行(可综合代码应该没问题),所以无论如何你可能不得不手动进行。
【讨论】:
【参考方案2】:似乎在此期间已经到了一些支持(主要使用-g2005-sv
、-g2009
或-g2012
开关)。试试这个:
iverilog -g2012 -tvlog95 -o button_deb.v button_deb.vhd
如果你仔细观察输出,你会发现这样你会在实体接口处丢失两个generic
。直接使用vhdlpp
会很有用:
/path/to/vhdlpp button_deb.vhd > button_deb.v
【讨论】:
感谢克劳迪奥,今年我找到了另一种转换方式:ghdl-yosys 插件。 @FabienM:您能否举一个小例子说明您是如何使用 ghdl-yosys 插件进行这种转换的?以上是关于如何使用 Icarus Verilog 在 Verilog 中转换 VHDL 代码?的主要内容,如果未能解决你的问题,请参考以下文章