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

Vhdl 我们可以在模拟器中强制用户定义数据类型的值吗?,vhdl,vivado,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 ;

对不起,这可能是一个非常基本的问题。但我在网上和网下都找不到任何解决办法。 我正在使用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;
此程序可合成吗?

根据for Vivado 2013.4,您的TCL命令不正确。不能一次分配记录中的所有字段。您似乎同时更改了包的名称,因为原始代码中没有提到
read\u 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版可供使用。)在我的版本中,您也可以右键单击“名称”列中的信号,然后选择“强制常量…”

我尝试使用逗号和分号分隔符强制输入a_
请编辑问题以说明您到底尝试了什么<代码>它不起作用了-发生了什么事?“如果有错误信息,请包括在内。”杰夫补充道。非常感谢。您可以选择只编写VHDL测试台,而不使用force命令。(哦,除了使用Real之外,它看起来还可以用于合成)虽然您的解决方案看起来是有效的,但您可以详细说明为什么在具有get_object-recursive和get_value的TCL命令中不能使用复合值。IEEE Std 1076-2008 5.3.3记录类型“记录类型是一种复合类型,其对象由命名元素组成。记录对象的值是由其元素的值组成的复合值。”“复合值的形式如下所示
(2.5,5,4,3,-2)
.9.3.3”聚合是一种基本操作(参见5.1)将一个或多个值组合成记录或数组类型的复合值。“UG835表示必须指定一个HDL对象,该对象可以是列出的几种类型中的任何一种。在我的解释中,记录不是其中之一。摘录有困难吗?”指定的值取决于记录或数组类型。HDL类型包括:“逻辑”、浮点、VHDL枚举和VHDL整数。““VHDL整数类型的接受值是该类型接受范围内的有符号十进制整数。”get_值应该是中命名对象a_的值。get_对象-recursive应该告诉您使用未命名对象(选定的元素名称)有趣的是,UG937*仿真教程)显示了标准逻辑向量(sine,sinegen.vhd中的sine)的加法,该向量不属于列出的类型之一。
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}