[我正在尝试使用以前使用的Makefile
运行并提供了一些编辑的测试台。
[当我尝试运行模拟时,出现以下错误:
./ rc_symbols_testbench:error:事务未按升序排列
./ rc_symbols_testbench:错误:模拟失败
搜索之后,这使我认为我可能在Makefile
中定义的单位顺序错误,但我认为我的设置正确。
rc_symbols_testbench: std_logic_textio.vhd util.vhd config.vhd byte_collector.vhd dcf_symbols.vhd msf_symbols.vhd rc_symbols_testbench.vhd
就等级而言:
测试台同时使用dcf_symbols
和msf_symbols
实体以及std_logic_textio.vhd
,util.vhd
和config.vhd
中的某些常量和函数。
当前,msf_symbols
未实现,仅需要util.vhd
和config.vhd
。
[dcf_symbols
需要util.vhd
,config.vhd
和byte_collector
。
最后,byte_collector
只需要util.vhd
。
因此应该是在需要之前声明的所有内容。
测试台本身看起来非常简单,每个时钟周期它都会从文本文件中读取值并将它们加载到相关变量中。
还有什么可能导致此问题,以及如何解决?
根据评论,问题似乎可能来自测试平台数据或测试平台本身,所以:
这似乎是测试台中与更新值有关的部分,鉴于我认为after
语句引起的注释,我认为这会引起事务的发生:
125 process
126 ¦ file data_file: text;
127 ¦ variable data_line: line;
128 ¦ variable dcf_di_var: std_logic;
129 ¦ variable dcf_tri_var: std_logic;
130 ¦ variable dcf_si_var: std_logic;
131 ¦ variable msf_di_var: std_logic;
132 ¦ variable msf_tri_var: std_logic;
133 ¦ variable msf_si_var: std_logic;
134 ¦ variable t_var: time;
135 begin
136 ¦ file_open(data_file, "rc_sample.dat", read_mode);
137
138 ¦ while not endfile(data_file) loop
139 ¦ ¦ readline(data_file, data_line);
140
141 ¦ ¦ read(data_line, dcf_di_var);
142 ¦ ¦ read(data_line, dcf_tri_var);
143 ¦ ¦ read(data_line, dcf_si_var);
144 ¦ ¦ read(data_line, msf_di_var);
145 ¦ ¦ read(data_line, msf_tri_var);
146 ¦ ¦ read(data_line, msf_si_var);
147
148 ¦ ¦ read(data_line, t_var);
149
150 ¦ ¦ if t_var > now then
151 ¦ ¦ ¦ wait for t_var - now;
152 ¦ ¦ end if;
153
154 ¦ ¦ dcf_di <= transport dcf_di_var after gate_delay;
155 ¦ ¦ dcf_tri <= dcf_tri_var, '0' after 39.21568627 us; --1 clock cycle
156 ¦ ¦ dcf_si <= dcf_si_var, '0' after 39.21568627 us;
157 ¦ ¦ msf_di <= transport msf_di_var after gate_delay;
158 ¦ ¦ msf_tri <= msf_tri_var, '0' after 39.21568627 us;
159 ¦ ¦ msf_si <= msf_si_var, '0' after 39.21568627 us;
160
161 ¦ end loop;
162 ¦ file_close(data_file);
163 ¦ eod <= '1';
164 ¦ wait;
165 end process;
[gate_delay
是0.1ns
。
以及rc_sample.dat
的样本:
0 0 0 1 0 0 536300.0002 us
1 0 0 1 0 0 552600.0002 us
1 0 0 0 0 0 655900.0002 us
0 0 0 0 0 0 659700.0002 us
0 0 0 1 0 0 1536400.0002 us
1 0 0 1 0 0 1554200.0002 us
1 0 0 1 1 0 1636800.0002 us
1 0 0 1 0 0 1636900.0002 us
1 1 0 1 0 0 1654600.0002 us
1 0 0 1 0 0 1654700.0002 us
0 0 0 1 0 0 1659700.0002 us
0 0 0 1 1 0 1736900.0002 us
0 0 0 1 0 0 1737000.0002 us
0 1 0 1 0 0 1754700.0002 us
0 0 0 1 0 0 1754800.0002 us
0 0 0 0 0 0 1756300.0002 us
0 0 0 0 1 0 1837000.0002 us
0 0 0 0 0 0 1837100.0002 us
0 1 0 0 0 0 1854800.0002 us
0 0 0 0 0 0 1854900.0002 us
对我来说,一切似乎都按升序排列,所以我仍然不确定。