Jump to content

    
Sign in to follow this  
Koluchiy

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

Recommended Posts

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

 

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

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

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

 

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

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

 

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

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

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

 

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
Результат примерно одинаковый - не то чтобы 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;

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

 

 

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


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

 

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

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

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

 

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

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

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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this