Можем ли мы принудительно установить значение для определенных пользователем типов данных в симуляторе? - PullRequest
0 голосов
/ 11 мая 2018

Извините, это может быть очень простой вопрос.Но я не мог найти никакого решения на линии и вне ее.Я использую версию 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 голосов
/ 12 мая 2018

Согласно UG835 для Vivado 2013.4 ваша команда 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 в моем распоряжении.) В моей версии вы также можете щелкнуть правой кнопкой мыши по сигналу в столбце «Имя» и выбрать «Force Constant ...»

...