如何监视可能动态变化的过程的信号输入参数

时间:2018-05-24 09:33:42

标签: vhdl monitoring test-bench

在testbench中,我遇到了一个问题,我想要监视一个信号的输入参数,这个信号可能包含一些模块/ s或顶级设计实体的内部输入和/或输出。现在问题是如何连续读取可能动态变化的信号。

 TYPE data_record IS ARRAY (natural range <>) OF STD_LOGIC;
 TYPE data_name_record IS ARRAY(natural range <>) OF STRING(1 TO 32);  

PROCEDURE MONITORING_VALUE( 
                            SIGNAL INPUTS_OUTPUT    : IN data_record ;
                            EXPECTED_VALUE          : IN data_record ;
                            INPUTS_OUTPUT_NAME      : IN data_name_record;
                            MONITORING_TIME         : IN TIME );

我现在使用的替代方法是将此输入/输出映射到data_record_type的信号:

SIGNAL INPUTS_ENTRED            :data_record(0 TO N-1) := ('0', '0', '0', '0');

=============================================== ============================ - 映射: - ============================================ ===============================

INPUTS_ENTRED(0) <= input1;
INPUTS_ENTRED(1) <= input2 ;
INPUTS_ENTRED(2) <= input3;
INPUTS_ENTRED(3) <= output1;

但是这个解决方案,我受限于输入/输出映射的数量,这使我的程序对所有人都没用,(例如,如果我有69个输入和9个输出,我需要在每个步骤中监视它们的组合)

我在vhdl中读到了访问类型,但是我已经看到它是变量的juts,我使用signal和'last_event属性,这使我无法跳转到变量。并且程序的输入参数是一个信号。

谢谢大家。 :-o

1 个答案:

答案 0 :(得分:1)

INPUTS_OUTPUT信号永远不会改变长度,因为它是一个信号。所以你可以在程序中读取INPUTS_OUTPUT'length以查看它有多长。