a123-flex
Oct 22 2007, 15:20
Возникла проблема: решил попробовать систем верилог, взял последний Precision 2006a3, уже есть ISE 8.2.
Подсунул туда свой старый проект на VHDL, а пресижн на кусочек кода:
data_pos: for i in 0 to 7 generate
data_lutP : RAM16X1D
port map(
d => DATA_IN_FROM_TIGER(i),
we => '1',
wclk => CLK_IN_FROM_TIGER,
a0 => EXT_CNTR_DATA_POS_p(0),
a1 => EXT_CNTR_DATA_POS_p(1),
a2 => EXT_CNTR_DATA_POS_p(2),
a3 => EXT_CNTR_DATA_POS_p(3),
dpra0 => INT_CNTR_DATA_p(0),
dpra1 => INT_CNTR_DATA_p(1),
dpra2 => INT_CNTR_DATA_p(2),
dpra3 => INT_CNTR_DATA_p(3),
spo => open,
dpo => LUT_DATA_OUT_POS_p(i)
);
end generate data_pos;
говорит:
# Error: [42512]: "C:/1/PrecisionTest/../../My/My_work/Almaz/HDL/Viod/Multiplexer_FPGA/rec_anal_tigr.vhd", line 70: Use of undeclared identifier 'RAM16X1D'
# Error: [40000]: HDL analysis failed.
Не могу понять в чем дело. Кристалл на котором все должно работать указан - Виртекс 2, его либа в папке пресижена есть, в либе есть елемент RAM16X1D.
Может быть я неправильно указываю тип либы с ксилинским компонентом ?
Для хилинкса либа была
library unisim ;
use unisim.all ;
Знающие подскажите.
CaPpuCcino
Oct 22 2007, 19:09
(на всякий случай: последний уже Пресижн2007)
a123-flex
Oct 23 2007, 08:12

спасибо. попробую.
a123-flex
Oct 24 2007, 06:46
не, ни хрена не работает и в 2007

. та же самая ошибка.
Блин неужели никто не знает как вкомпилить в проект либу unisim
a123-flex
Oct 24 2007, 07:23
на объявление либы
library unisim;
use unisim.vcomponents.all ;
Precision говорит варнинг,
а когда пытаюсь поюзать RAM16X1D возникает ошибка: грит не знаю такого.
dmitry-tomsk
Oct 24 2007, 07:32
Цитата(a123-flex @ Oct 24 2007, 09:46)

не, ни хрена не работает и в 2007

. та же самая ошибка.
Блин неужели никто не знает как вкомпилить в проект либу unisim
Да не надо её вкопиливать. Объявите компоненту памяти в том файле, где она вставляется и назначьте ему атрибут black box
AJIEKCEu
Oct 24 2007, 07:51
Быть может просто не надо ничего подключать?
Пусть у вас после синтеза компоненты из библиотеки будут как Черные Ящики стоять.... NGDBuild сам их вставит.
Хотя странно... Он бы компилился... правда вроде с предупреждением.
Текст ошибки в студию! И быть может строки из файла, где она вылезает.
a123-flex
Oct 24 2007, 07:54
Ок. вот текст с головы файла до места ошибки..
Library IEEE;
use IEEE.std_logic_1164.all;
use MY_PACKAGE_MULT.all;
library unisim;
use unisim.vcomponents.all ;
entity rec_anal_tigr is
generic(
LINK_BUS_WIDTH : integer := 8
);
port(
-- global_in
RESET : in std_logic;
--main clock (state mashine base)
CLK_IN_LOW_HLF : in std_logic;
--tiger transiver part
CLK_OUT_TO_TIGER : out std_logic;
CLK_IN_FROM_TIGER : in std_logic;
DATA_IN_FROM_TIGER : in std_logic_vector(LINK_BUS_WIDTH-1 downto 0);-- data by tiger
-- fifo control
FIFO_PROG_FULL : in std_logic;
FIFO_WRITE_EN : out std_logic;
DATA_WR_TO_FIFO : out std_logic_vector(15 downto 0);
ERR_SYNCH_CNTR : out std_logic_vector(ERR_CNTR_SIZE-1 downto 0)
);
end entity;
--}} End of automatically maintained section
library IEEE;
use IEEE.std_logic_unsigned.all;
architecture rec_anal_tigr_arh of rec_anal_tigr is
type SregRecAnal_type is (PRESET, IDLE, TOKEN, RECEIVE, RECEIVE_END, FULL);
signal SregRecAnal_p : SregRecAnal_type := PRESET;
signal WAS_FULL_ST_p,FIFO_WAS_FULL_p : std_logic := '0';
signal FIFO_WRITE_EN_p,CLK_OUT_TO_TIGER_p : std_logic := '0';
signal LUT_DATA_OUT_POS_p,LUT_DATA_OUT_NEG_p : std_logic_vector(7 downto 0);
signal ACK_COUNTER_p : std_logic_vector(2 downto 0);
signal LAST_TAKT_EXT_CLK_CNTR1_p,LAST_TAKT_EXT_CLK_CNTR2_p : std_logic_vector(1 downto 0) := (others => '0');
signal INT_CNTR_DATA_p,EXT_CNTR_DATA_POS_p,EXT_CNTR_DATA_NEG_p : std_logic_vector(3 downto 0) := (others => '0');
signal ONE_CLK_IN_CNTR_p,ZERO_CLK_IN_CNTR_p,LAST_CNTR_DATA_NEG_p : std_logic_vector(3 downto 0) := (others => '0');
signal BIG_ACK_CNTR_p : std_logic_vector(11 downto 0);
signal ERR_SYNCH_CNTR_p : std_logic_vector(ERR_CNTR_SIZE-1 downto 0);
begin
DATA_WR_TO_FIFO(15 downto 8) <= LUT_DATA_OUT_NEG_p(7 downto 0);
DATA_WR_TO_FIFO( 7 downto 0) <= LUT_DATA_OUT_POS_p(7 downto 0);
data_pos: for i in 0 to 7 generate
data_lutP : RAM16X1D
port map(
d => DATA_IN_FROM_TIGER(i),
we => '1',
wclk => CLK_IN_FROM_TIGER,
a0 => EXT_CNTR_DATA_POS_p(0),
a1 => EXT_CNTR_DATA_POS_p(1),
a2 => EXT_CNTR_DATA_POS_p(2),
a3 => EXT_CNTR_DATA_POS_p(3),
dpra0 => INT_CNTR_DATA_p(0),
dpra1 => INT_CNTR_DATA_p(1),
dpra2 => INT_CNTR_DATA_p(2),
dpra3 => INT_CNTR_DATA_p(3),
spo => open,
dpo => LUT_DATA_OUT_POS_p(i)
);
end generate data_pos;
ошибка:
# Error: [42512]: "C:/1/PrecisionTest/../../My/My_work/Almaz/HDL/Viod/Multiplexer_FPGA/rec_anal_tigr.vhd", line 70: Use of undeclared identifier 'RAM16X1D'
# Error: [40000]: HDL analysis failed.
AJIEKCEu
Oct 24 2007, 08:10
Добавьте в секции объявления сигналов объявление компонента, который будете использовать:
Код
component RAM16X1D
generic
(
INIT : bit_vector(15 downto 0) := X"0000"
);
port
(
DPO : out std_ulogic;
SPO : out std_ulogic;
A0 : in std_ulogic;
A1 : in std_ulogic;
A2 : in std_ulogic;
A3 : in std_ulogic;
D : in std_ulogic;
DPRA0 : in std_ulogic;
DPRA1 : in std_ulogic;
DPRA2 : in std_ulogic;
DPRA3 : in std_ulogic;
WCLK : in std_ulogic;
WE : in std_ulogic
);
end component;
--Добавлено
А вообще общий совет - учитесь пользоваться конструкциями VHDL его именно для этого и придумали, чтобы покомпонентно не писать.
То, что вы вставили компонентом проще и быстрее написать на чистом VHDL без библиотечных элементов. Если заинтересуетесь - обращайтесь. А лучше книжку почитайте.
a123-flex
Oct 24 2007, 09:00
Организация схемы не моя придумка... я ее позаимствовал у ксилинкса.
Есть такой xapp635. Принимает DDR сигнал на частоте до 300 МГц. так там мало того что все в примитивах прописано, так еще и гвоздями к кристаллу прибито - констрейнами размещения.
За советы всем спасибо

Всем огромное спасибо.
Все работает!!!
Просто симплифай меня расслабил - так он хорошо кушает автоматически все ксайлинское, что про black box и прочая я уж и забыл давно.
a123-flex
Oct 25 2007, 12:05
Да

всем спасибо конечно.... но вот немного поигравшись с пресиженом появился новый вопрос:
когда синтезирую проект Sinplify -ем, получаю тактовую 125 МГц, и притом явно есть еще запас, интерфейсная часть проекта разводится и на 250 МГц, запускаю синтез пресиженом - 78 Мегагерц с ретаймингом. Кто-нибудь может мне сказать возможно ли добиться такого эффекта простым бездарным программированием, или просто нужно пользоваться Синплифаем и забить на все остальное ?
CaPpuCcino
Oct 25 2007, 12:17
Цитата(a123-flex @ Oct 25 2007, 16:05)

Да

всем спасибо конечно.... но вот немного поигравшись с пресиженом появился новый вопрос:
когда синтезирую проект Sinplify -ем, получаю тактовую 125 МГц, и притом явно есть еще запас, интерфесная часть проекта разводится и на 250 МГц, запускаю синтез пресиженом - 68 Мегагерц с ретаймингом. Кто-нибудь может мне сказать возможно ли добиться такого эффекта простым бездарным программированием, или просто нужно пользоваться Синплифаем и забить на все остальное ?
у них скорее всего разные системы оценок (оптимистичные\писсимистичные прогдозы, учёт средней задержки на соединение и т.д.) вы тактовую с симплифаем получаете уже после P&R или это только расчёты симплифая?
a123-flex
Oct 25 2007, 12:25
в обоих случаях частоты указаны после разводки проекта ISE-ом
CaPpuCcino
Oct 25 2007, 12:36
Цитата(a123-flex @ Oct 25 2007, 16:25)

в обоих случаях частоты указаны после разводки проекта ISE-ом
как-то чрезвычайно странно, чтоб аж в 2 раза задержка подскочила. и что ж это один и тот же проект без изменений?
a123-flex
Oct 25 2007, 12:41
абсолютно без изменений. правда писаный behavioral. я не очень сильно напрягался чтобы его оптимизировать под плис, в ядре по крайней мере.
CaPpuCcino
Oct 26 2007, 21:39
Цитата(a123-flex @ Oct 25 2007, 16:41)

абсолютно без изменений. правда писаный behavioral. я не очень сильно напрягался чтобы его оптимизировать под плис, в ядре по крайней мере.
как-то очень странно: сейчас вообще Синплисити свои позиции уступает, и это тенденция с 2002 года
вот тут некоторые высказывания (последний человек говорит что сравнивали сразу несколько синтезаторов на протяжении нескольких лет)
http://www.deepchip.com/items/0459-06.html
CaPpuCcino
Oct 27 2007, 20:56
Цитата(a123-flex @ Oct 25 2007, 16:41)

абсолютно без изменений. правда писаный behavioral. я не очень сильно напрягался чтобы его оптимизировать под плис, в ядре по крайней мере.
кстати, а что вы имеете ввиду под behavioral (термин иногда по-разному трактуют) и оптимизацией под ПЛИС?
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.