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

Sinplify игнорирует директивы

Здравствуйте, уважаемые гуры.

 

С некоторых пор вернулся к использованию Sinplify (2013.09) применительно к Xilinx ISE (14.3).

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

Согласно мануалу, пишу /* synthesis syn_preserve=1 */, /* synthesis syn_keep=1 */, /* synthesis syn_noprune=1 */ (сначала пробовал ставить нужную директиву в зависимости от ситуации, потом начал пробовать различные комбинации).

 

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

Проблема в том, что на выходе я нужных сигналов не получаю. Или получаю в каком-нибудь хитром виде, который непригоден для использования в ЧипСкопе.

 

Кто-нибудь знает, что делать? Чтобы блин директивы были для Sinplify законом, а не рекомендацией.

Отдельный вопрос: где-то можно посмотреть репорт по директивам, которые Sinplify встретил в исходниках?

С указанием, выполнил или проигнорил. И если проигнорил, то почему.

 

Всем заранее спасибо за ответы.

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


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

Тоесть при просмотре физик. сигнал отсутствует?

Сигналы как и результат синтеза Sinplify может менять(гадить) ISE. есть у него там такие галки.

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


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

У меня было похожее игнорирование атрибутов в синплифае, пока я не заметил, что ";" в конце оператора должна ставиться после атрибута. Это в верилоге.

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


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

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

Проблема в том, что на выходе я нужных сигналов не получаю. Или получаю в каком-нибудь хитром виде, который непригоден для использования в ЧипСкопе.

Sinplify может выкидывать фактически неиспользуемый сигнал, даже если на нём стоят сохранятельные атрибуты. Чтобы этого не было, я подключаю к такому сигналу специальный "пустой" модуль, обвешанный атрибутами, тогда сигнал не выкидывается.

library ieee, ecp2m;
use ieee.std_logic_1164.all;
use ecp2m.components.all;
entity keep_buf is
    generic(dw:integer:=1);
    port (
        i:in std_logic_vector(dw-1 downto 0);
        o:out std_logic_vector(dw-1 downto 0)
    );
end entity;

architecture arch of keep_buf is
    attribute NOCLIP:boolean;
    attribute syn_keep:boolean;
    attribute syn_noprune:boolean;
    signal d:std_logic_vector(i'range);
    attribute syn_noprune of arch:architecture is true;
    
begin
d <= i;
bufs:for j in i'range generate
    attribute syn_noprune of b:label is true;
    attribute NOCLIP of b:label is true;
begin
    b:AND2 port map(A=>d(j),B=>'1', Z=>o(j));
end generate;
end architecture;

Это для Латтис.

 

 

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


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

директивы пишу вроде правильно, ; там где надо (иначе оно бы вообще не влияло бы на результаты).

Заниматься танцами с бубном типа генерации лишних модулей - ну, я и так этим занимаюсь, чтобы хоть что-то получить.

Но вопрос же о том, как этого избежать.

Вот в XST я пишу KEEP и оно реально потом в Чипскопе есть.

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


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

Почему бы модуль ChipScope не сгенерировать в Coregen и подключать к нему интересующие сигналы? Гарантировано ничего не будет выкидываться.

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


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

Согласно мануалу, пишу /* synthesis syn_preserve=1 */, /* synthesis syn_keep=1 */, /* synthesis syn_noprune=1 */ (сначала пробовал ставить нужную директиву в зависимости от ситуации, потом начал пробовать различные комбинации).

 

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

Проблема в том, что на выходе я нужных сигналов не получаю. Или получаю в каком-нибудь хитром виде, который непригоден для использования в ЧипСкопе.

Попробуйте добавить атрибут сохранения иерархии для нужного модуля. Что-нибудь hard/fixed для syn_hier, потому как если он разматывает весь дизайн, то результат будет не предсказуем.

 

Отдельный вопрос: где-то можно посмотреть репорт по директивам, которые Sinplify встретил в исходниках?

С указанием, выполнил или проигнорил. И если проигнорил, то почему.

А вот это действительно проблема, во всяком случае для меня. Не раз задавался этим вопросом, но найти ответ так и не смог. Может кто подскажет, присоединяюсь..

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


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

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

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

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

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

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

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

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

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

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