我的VHDL测试平台使用了一些特定于VHDL' 2008的功能,但是,根据我测试的确切内容或我用于模拟的软件,它不能总是用VHDL编译#39; 2008
为了解决这个问题,我创建了这个测试平台的两个版本:
然而,维护这个测试平台的两个几乎完全相同的版本真的很烦人,所以我想以某种方式合并它们。
我首先想到我可以使用通用和" IF .. GENERATE"声明,但这显然不允许我使用' 2008功能编译文件。
有没有办法合并这两个文件,仍然用VHDL' 93编译结果?
答案 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代码),则只能编译所需的文件(假设包含相同的包/体系结构/实体名称)。
如果您无法重构代码以使用类似的内容,我建议您查看实施测试平台的方式。