我们可以在模拟器中强制用户定义的数据类型的值吗?

时间:2018-05-11 13:15:05

标签: vhdl vivado

抱歉,这可能是一个非常基本的问题。但我无法找到任何解决方案。 我正在使用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

这个程序是否可以合成?

1 个答案:

答案 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。)在我的版本中,您也可以右键单击“名称”列中的信号并选择“强制常量...”