我们可以在模拟器中强制为用户定义的数据类型赋值吗?
Can we force value for user defined datatypes in simulator?
抱歉,这可能是非常基本的问题。但是我找不到在线和离线的任何解决方案。
我正在为我的任务使用 vivado 2013.4 版本。这是我的代码。
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
这个程序可以合成吗?
根据 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。)在我的版本中,您还可以右键单击"Name"列中的信号和select "Force Constant..."
抱歉,这可能是非常基本的问题。但是我找不到在线和离线的任何解决方案。 我正在为我的任务使用 vivado 2013.4 版本。这是我的代码。
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
这个程序可以合成吗?
根据 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。)在我的版本中,您还可以右键单击"Name"列中的信号和select "Force Constant..."