VHDL - 条件编译

时间:2015-07-20 16:18:13

标签: compilation vhdl standards

我的VHDL测试平台使用了一些特定于VHDL' 2008的功能,但是,根据我测试的确切内容或我用于模拟的软件,它不能总是用VHDL编译#39; 2008

为了解决这个问题,我创建了这个测试平台的两个版本:

  • 完整版,使用VHDL' 2008编译。
  • 删除所有VHDL' 2008行的灯光,用VHDL]编译。

然而,维护这个测试平台的两个几乎完全相同的版本真的很烦人,所以我想以某种方式合并它们。

我首先想到我可以使用通用和" IF .. GENERATE"声明,但这显然不允许我使用' 2008功能编译文件。

有没有办法合并这两个文件,仍然用VHDL' 93编译结果?

1 个答案:

答案 0 :(得分:1)

选项1 - Pragma

如果使用VHDL 2008的代码不替换代码的其他部分(即使用VHDL 2008的代码执行额外的操作),则可以使用编译指示,例如

vhdl_93_component_u : foo_93 port map ( clk => clk, out => out);
-- rtl_synthesis off
vhdl_2008_component_u : foo_2008 port map ( clk => clk, out => out);
-- rtl_synthesis on

另外,检查,如果您的工具接受启用和禁用编译指示的解释,并检查 它接受的编译指示。 -- rtl_synthesis on/off就是一个例子。

选项2 - 不同的文件

如果您可以将代码拆分为3(testbench top,VHDL] 93代码,VHDL 2008代码),则只能编译所需的文件(假设包含相同的包/体系结构/实体名称)。

如果您无法重构代码以使用类似的内容,我建议您查看实施测试平台的方式。