用VHDL生成端口?

用VHDL生成端口?,vhdl,Vhdl,有没有办法用VHDL生成端口声明?我想做一些类似于#IFDEF的事情来调试输出到示波器引脚的信号。这样我可以快速启用或禁用调试逻辑。例如: entity my_entity is port ( debug_label: if debug_on = 1 generate debug1: out; end debug_label; .... ); end component; 当我尝试这样的事情时,这是行不通的。有什么办法使它起作用吗?还是做类

有没有办法用VHDL生成端口声明?我想做一些类似于#IFDEF的事情来调试输出到示波器引脚的信号。这样我可以快速启用或禁用调试逻辑。例如:

entity my_entity is
port (  

    debug_label: if debug_on = 1 generate
    debug1: out;
    end debug_label;

    ....

    );
end component;  

当我尝试这样的事情时,这是行不通的。有什么办法使它起作用吗?还是做类似事情的替代方法

端口不能是有条件的,但端口的长度是有条件的,例如
std_logic_vector
可以通过通用配置,长度可以 偶数为0,导致空范围。显示这一点的实体是:

entity mdl is
  generic(
    DEBUG_LEN : natural := 0);
  port(
    ...
    debug_o : out std_logic_vector(DEBUG_LEN - 1 downto 0));
end entity;
您应该运行一个测试合成,以查看所选合成工具的性能如何
在分配到管脚时处理空范围。

如果您喜欢冒险,可以使用它将宏添加到代码中。不过,要确保您的工具只看到经过后期处理的源代码,还需要一些注意。这就是m4设计用来解决的问题类型。为了节省层次结构中的布线,您是否考虑过使用不纯函数而不是端口来传输调试信息?有关SystemVerilog中的可合成示例,请参阅。