Перейти к содержанию
    

Modelsim

Добрый день!

немогу запустить симуляцию интельского IP-блока (ALTFP-CONVERT)

ip.png.a6cd22c29e32da9fa7e5c83ab5b385cd.png

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Modelsim выдаёт много различных предупреждений (которые мне не совсем понятны) и обрубает симуляцию

 

modelsim.thumb.png.ae669a11324285c1f13f694d01d66bd5.png

 

знает ли кто нибудь в чём проблема и как её решить?

Благодарю!

 

Изменено пользователем artur

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

U означает undefined, не определено. У вас входной клок и входные данные не заданы. На выходе соответственно тоже ничего не выдаётся. Незнаю как вы моделирует корку, но правильнее было написать ещё один файл тестбенча, назвать его к примеру tb, в нем подключить корку и подать на вход корки частоту (сгенерить клок) и входные   данные (int_in - видимо целые числа подать на вход, а на выходе получите floating point).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, novartis сказал:

U означает undefined, не определено. У вас входной клок и входные данные не заданы. На выходе соответственно тоже ничего не выдаётся. Незнаю как вы моделирует корку, но правильнее было написать ещё один файл тестбенча, назвать его к примеру tb, в нем подключить корку и подать на вход корки частоту (сгенерить клок) и входные   данные (int_in - видимо целые числа подать на вход, а на выходе получите floating point).

тестбенч у меня написан, я его не написал потому что он очень простенький и без него ничего работать не будет

Но посмотрите, может быть вы нейдёте ошибку:

 

LIBRARY ieee;                                               
USE ieee.std_logic_1164.all;                                

ENTITY top_vhd_tst IS
END top_vhd_tst;
ARCHITECTURE top_arch OF top_vhd_tst IS
-- constants                                                 
-- signals                                                   
SIGNAL clk50 : STD_LOGIC;
SIGNAL int_in : STD_LOGIC_VECTOR(31 DOWNTO 0) := (others => '0');
SIGNAL output : STD_LOGIC_VECTOR(31 DOWNTO 0);
COMPONENT top
    PORT (
    clk50 : IN STD_LOGIC;
    int_in : IN STD_LOGIC_VECTOR(31 DOWNTO 0) := (others => '0');
    output : OUT STD_LOGIC_VECTOR(31 DOWNTO 0)
    );
END COMPONENT;
BEGIN
    i1 : top
    PORT MAP (
-- list connections between master ports and signals
    clk50 => clk50,
    int_in => int_in,
    output => output
    );

process
  begin
    clk50 <= '0';
    wait for 10 ns;
    clk50 <= '1';
    wait for 10 ns;
end process;

process
  begin
    int_in <= x"0000000a";
    wait for 10 us;
    int_in <= x"00000001";
    wait for 10 us;
end process;
                                         
END top_arch;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

4 минуты назад, artur сказал:

тестбенч у меня написан, я его не написал потому что он очень простенький и без него ничего работать не будет

Но посмотрите, может быть вы нейдёте ошибку:


BEGIN
    i1 : top
    PORT MAP (
-- list connections between master ports and signals
    clk50 => clk50,
    int_in => int_in,
    output => output
    );

А чем определяются значения внутренних сигналов в момент времени "0"??? 

или же вот это -  int_in <= x"0000000a";?? Это оно, причем для всех сигналов модуля ALTFP-CONVERT?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 минуты назад, iosifk сказал:

А чем определяются значения внутренних сигналов в момент времени "0"??? 

или же вот это -  int_in <= x"0000000a";?? Это оно, причем для всех сигналов модуля ALTFP-CONVERT?

инициализация сигнала "int_in" проиходит вот здесь "SIGNAL int_in : STD_LOGIC_VECTOR(31 DOWNTO 0) := (others => '0');"

 

здесь генерируется тактовый сигнал (50 Мгц):

process
  begin
    clk50 <= '0';
    wait for 10 ns;
    clk50 <= '1';
    wait for 10 ns;
end process;

 

а вот здесь подаётся число (10) на вход блока и через 10 мкс на этот же вход подаётся другое число (1) снова проходят 10 мкс и всё повторяется с начала:

process
  begin
    int_in <= x"0000000a";
    wait for 10 us;
    int_in <= x"00000001";
    wait for 10 us;
end process;

 

RTL выглядит вот так:

rtl.thumb.PNG.d129e4dbc069654d0e4664cfb25e8799.PNG

 

то есть всё очень просто, на вход подаём число и ожидаем результат

с компиляцией никаких проблем нет, а вот симуляция не работает

 

VHDL Top-Level:

library ieee;
use ieee.std_logic_1164.all;

entity top is

port
(
clk50        : in std_logic;
int_in    : in std_logic_vector(31 downto 0);
output    : out std_logic_vector(31 downto 0)
);
end entity;

architecture beh of top is

component int_to_fp IS
    PORT
    (
        clock        : IN STD_LOGIC ;
        dataa        : IN STD_LOGIC_VECTOR (31 DOWNTO 0);
        result        : OUT STD_LOGIC_VECTOR (31 DOWNTO 0)
    );
END component int_to_fp;

 

begin

i1: int_to_fp port map
        (    clock => clk50,
            dataa => int_in,
            result => output
        );

end beh;

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

26 минут назад, iosifk сказал:

А чем определяются значения внутренних сигналов в момент времени "0"??? 

или же вот это -  int_in <= x"0000000a";?? Это оно, причем для всех сигналов модуля ALTFP-CONVERT?

Еще раз. Читайте внимательно. В модуль, который Вы хотите симулировать входит сигнал  int_in. В этом модуле есть триггера, счетчики, автоматы? Сигнал  int_in приводит все эти триггера в исходное состояние?  

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

11 минут назад, iosifk сказал:

Еще раз. Читайте внимательно. В модуль, который Вы хотите симулировать входит сигнал  int_in. В этом модуле есть триггера, счетчики, автоматы? Сигнал  int_in приводит все эти триггера в исходное состояние?  

если вы имеете в виду порт сброса, то конечно нет, вход "int_in" только для числа которое надо преобразовать.

что касается сброса, в связи с тем что он был опциональный, я его отключил так как он мне был не нужен

ip2.PNG.c3b0ba7b5308691dbe20ba78c2bfaecc.PNG

 

но не хотите ли вы мне сказать, что симуляция не может работать так как регистры для симулятора не хаходятся в исходном положении (т.е. нет сброса)?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Artur, на самой первой картинке у вас иерархия проекта в моделсиме top -> i1, а файл тестбенча у вас top_vhd_tst, с него то и должна начинаться иерархия. Если этот файл тестбенча у вас в проект моделсима добавлен, то старт симуляция надо делать с него.

Переходите в моделсиме на вкладку Library, раскрываете work, там находите свой файл тестбенча, кликаете на нем правой клавишей мыши, выбираете Simulation without optimization. Откроется вкладка Wave. Ну или в командной строке написать vsim -novopt work.top_vhd_tst.

Дальше уже добавьте сигналы в wave и стартаните симуляцию run 50us.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 31.12.2018 в 06:25, novartis сказал:

Artur, на самой первой картинке у вас иерархия проекта в моделсиме top -> i1, а файл тестбенча у вас top_vhd_tst, с него то и должна начинаться иерархия. Если этот файл тестбенча у вас в проект моделсима добавлен, то старт симуляция надо делать с него.

Переходите в моделсиме на вкладку Library, раскрываете work, там находите свой файл тестбенча, кликаете на нем правой клавишей мыши, выбираете Simulation without optimization. Откроется вкладка Wave. Ну или в командной строке написать vsim -novopt work.top_vhd_tst.

Дальше уже добавьте сигналы в wave и стартаните симуляцию run 50us.

С Новым Годом!

невероятно, но факт, все заработало!
Я никогда так не делал, фаил для тестбенча я генерировал и выбирал в самом квартусе, а заходя в моделсим писал только сам тестбенч и всегда все работало.
Благодарю!

rabotaet.thumb.PNG.941d864b241499d2d4cc5272eb1bc5bb.PNG

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...