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

найденный глюк ISE9.1 (SP3)

Нашел после долгих мучений :)

---------------------------------------------------------------------------------------------------------------
пример кода, который понимает ISE9.1(SP3):
---------------------------------------------------------------------------------------------------------------
parameter
SRCPORT_NUMB_WIDTH = f_clogb2(SRCPORT_NUMB-1) /* как только поставил параметром а не вычисление ISE9.1 проглотил */
;
reg [(SRCPORT_NUMB_WIDTH - 1): 0]
R_count_distrib_access =0;
...
C_MUXP #(
  .WIDTH_SEL (SRCPORT_NUMB_WIDTH),
...
---------------------------------------------------------------------------------------------------------------
пример кода, который не понимает ISE9.1(SP3), но не мешает для ISE8.1(SP3) со сторонним синтезатором Synplify PRO 8.4:
---------------------------------------------------------------------------------------------------------------
reg [( f_clogb2(SRCPORT_NUMB-1) - 1): 0]
R_count_distrib_access =0;
...
C_MUXP #(
  .WIDTH_SEL ( f_clogb2(SRCPORT_NUMB-1) ),
...

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


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

не понял а в какой конфигурации ваша связка ISE + Synplify?

---------------------------------------------------------------------------------------------------------------

пример кода, который не понимает ISE9.1(SP3), но не мешает для ISE8.1(SP3) со сторонним синтезатором Synplify PRO 8.4:

---------------------------------------------------------------------------------------------------------------

вы в первом случае для синтеза пользуетесь XST или тоже в связке с Симплифай ?

вы синплифай отдельно запускает или из под ИСЕ? и на что кто из них ругается - выглядит так как будто Синплифай просто не справляется с синтаксическим разбором - или не находит вкючаемый файл с описанием функции при выч. параметра

вы не пробовали директивой инклюд явно включать сигнатуру функции непосредственно в область видимости модуля с вычислением параметра?

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


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

Synplify все понимает корректно...

ISE используется как с Synplify, так и без него, проект на Synplify полностью работает, для того чтобы найти где ругается ISE ставлю XST синтезатор, он ругается, но таких ошибок нет в описании, либо показывает на ошибку не связанную ни с чем

пока сидел ещё нашел, что не понимает ISE9.1:

SELREF_WIDTH = f_clogb2( f_clogb2(REFC_MAX/REFC_MIN - 1)),

так пропускает:

SELREF_WIDTH_S = f_clogb2(REFC_MAX/REFC_MIN - 1),

SELREF_WIDTH = f_clogb2( SELREF_WIDTH_S ),

в целом мой проект все равно не проходит, где-то ещё срубается.

 

по поводу включаемой функции:

/* Подключение стандартных функций */

/* функция расчета округленного логарифма от заданной константы */

`include "L:/GMV2/FUNCTION/f_clogb2.v"

текст:

// Функция вычисления ширины шины в зависимости от её "глубины"
// Вызов: f_clogb2(YOUR_NUMBER - 1), пример: если YOUR_NUMBER = 8, то f_clogb2 = 3;
function integer f_clogb2;
//Входы
input [31:0] value; //Значение глубины шины
//Цикл функции
if        (value == 0)     f_clogb2 = 1;
else if (value == 1)    f_clogb2 = 1;
else begin
    for (f_clogb2 = 0; value > 0; f_clogb2 = f_clogb2 + 1)
        value = value >> 1;
end
endfunction    //MaZZi'S ZoNE

ещё что заметил, как-то не правильно обрабатывается иерархия проекта, к примеру у меня каждый модуль включает используемые компоненты, причем все файлы в проекте обрамлены такой шапкой:

`ifdef    include_C_STROBE2/*условие проверки включения компоненты */
`else
`define include_C_STROBE2    /*    макрос включения компоненты    */
/*  подключение констант модуля и его компонент */
module C_STROBE2 
....
endmodule
`endif

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

 

все это точно, препроцессор некорректно работает с `ifdef

не помню было ли такое раньше, вроде не было...

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


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

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

....

все это точно, препроцессор некорректно работает с `ifdef

не помню было ли такое раньше, вроде не было...

тема ISE и иерархия проекта (verilog)

 

а насчет XST - так он вроде и никогда не поодерживал динамическое (через функцию )вычисление разрядности портов

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


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

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

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

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

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

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

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

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

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