library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.math_real.all;
use IEEE.NUMERIC_STD.ALL;
package my_package is
type my_datatype is
record
n1 : real ;
n2 : unsigned(31 downto 0);
n3 : unsigned(31 downto 0);
n4 : unsigned(31 downto 0);
nE : integer;
end record;
end my_package;
use work.my_package.all;
entity read_mydata is
Port (a_in : inout my_datatype ; b_out : out my_datatype );
end read_mydata;
architecture Behavioral of read_mydata is
begin
b_out <= (abs(a_in.n1), a_in.n2, a_in.n3, a_in.n4, abs(a_in.nE));
end Behavioral;
代码没有明显的错误。我的问题是,如何在模拟器中强制输入?我尝试使用逗号和分号分隔强制a_in。有错误。例如,在Tcl控制台中,
add_force {/read_file/a_in} -radix bin {2.5, 5, 4, 3, -2 0ns}
ERROR: [#UNDEF] Time value 5, is not a valid number
这个程序是否可以合成?
答案 0 :(得分:0)
根据Vivado 2013.4的UG835,您的TCL命令不正确。您不能一次分配记录中的所有字段。在此期间,您似乎也更改了包的名称,因为原始代码中未提及read_file
。无论如何,您可以运行以下命令:
add_force {/read_mydata/a_in.n1} -radix dec {2.5 0ns}
add_force {/read_mydata/a_in.n2} -radix dec {5 0ns}
add_force {/read_mydata/a_in.n3} -radix dec {4 0ns}
add_force {/read_mydata/a_in.n4} -radix dec {3 0ns}
add_force {/read_mydata/a_in.nE} -radix dec {-2 0ns}
我在Vivado 2017.1中尝试了您的代码。 (我没有2013.4。)在我的版本中,您也可以右键单击“名称”列中的信号并选择“强制常量...”