在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
答案 0 :(得分:1)
INPUTS_OUTPUT信号永远不会改变长度,因为它是一个信号。所以你可以在程序中读取INPUTS_OUTPUT'length以查看它有多长。