_ANDREW
-
Постов
49 -
Зарегистрирован
-
Посещение
Сообщения, опубликованные _ANDREW
-
-
Большое спасибо всем за ответ. То есть, если я правильно понял, даже при отсутствии black box в проекте на этапе синтеза невозможно узнать сколько % будет занимать проект.
jojo, подскажите пожалуйста, как именно в % выделить слайсы. в файле cgd.pdf нашёл информацию по использованию констант AREA_GROUP, RANGE, но не совсем понятно.
-
здравствуйте!
вопрос следующий: после синтеза проекта XST он занимает 58% , а после имплементации 74, почему?
отчёт по синтезу
Selected Device : 6vlx240tff1156-2
Slice Logic Utilization:
Number of Slice Registers: 99196 out of 301440 32%
Number of Slice LUTs: 87661 out of 150720 58%
Number used as Logic: 87644 out of 150720 58%
Number used as Memory: 17 out of 58400 0%
Number used as SRL: 17
Slice Logic Distribution:
Number of LUT Flip Flop pairs used: 108451
Number with an unused Flip Flop: 9255 out of 108451 8%
Number with an unused LUT: 20790 out of 108451 19%
Number of fully used LUT-FF pairs: 78406 out of 108451 72%
Number of unique control sets: 3868
IO Utilization:
Number of IOs: 151
Number of bonded IOBs: 151 out of 600 25%
Specific Feature Utilization:
Number of Block RAM/FIFO: 157 out of 416 37%
Number using Block RAM only: 157
Number of BUFG/BUFGCTRLs: 3 out of 32 9%
отчёт по имплементации
Device Utilization Summary:
Slice Logic Utilization:
Number of Slice Registers: 99,196 out of 301,440 32%
Number used as Flip Flops: 99,196
Number used as Latches: 0
Number used as Latch-thrus: 0
Number used as AND/OR logics: 0
Number of Slice LUTs: 76,802 out of 150,720 50%
Number used as logic: 74,551 out of 150,720 49%
Number using O6 output only: 56,764
Number using O5 output only: 71
Number using O5 and O6: 17,716
Number used as ROM: 0
Number used as Memory: 17 out of 58,400 1%
Number used as Dual Port RAM: 0
Number used as Single Port RAM: 0
Number used as Shift Register: 17
Number using O6 output only: 17
Number using O5 output only: 0
Number using O5 and O6: 0
Number used exclusively as route-thrus: 2,234
Number with same-slice register load: 2,224
Number with same-slice carry load: 10
Number with other load: 0
Slice Logic Distribution:
Number of occupied Slices: 28,140 out of 37,680 74%
Number of LUT Flip Flop pairs used: 93,406
Number with an unused Flip Flop: 8,206 out of 93,406 8%
Number with an unused LUT: 16,604 out of 93,406 17%
Number of fully used LUT-FF pairs: 68,596 out of 93,406 73%
Number of slice register sites lost
to control set restrictions: 0 out of 301,440 0%
подскажите, может можно с помощью настроек уменьшить объём проекта... спасибо..
-
а как подключить имеющийся ngc файл без vhdl?
-
Опубликовано · Изменено пользователем _ANDREW · Пожаловаться
здравствуйте.
хотелось бы создать закрытое ядро из vhdl файла. слышал что можно использовать ngc файл или encripted ngc.
среда разработки-xilinx ise 12.3.
заранее спасибо.
-
PS У меня не получилось для ПЛИС фирмы Actel так описать блочную память.
а почему не получилось??? синтезатор ругается?? каким Вы синтезатором пользуетесь??
-
Muscat
Сравните то что в документе на стр. 78 и то что привел _ANDREW описание на VHDL правда для XILINX.
на 78 странице память подключена как примитив, а вот на стр 76, внизу (Register-Based Dual-Port SRAM) подключение памяти как синтезируемого компонента... и практически тоже самое что и в моём коде (только я прописал ROM с инициализированными значениями). Честно говоря, думаю что отличия в архитектуре у разных компаний не велики..
и я обычно не подключаю блоки как примитивы, лучше писать на чистом языке, с настройкой синтеза атрибутами, чем лепить примитивы, и каждый раз переделывать проект под разные микросхемы.
-
Это для XILINX, атрибуты для родного XILINX SYN TOOLS (XST) который по умолчанию в ISE...
-
Опубликовано · Изменено пользователем _ANDREW · Пожаловаться
_ANDREW, я тоже уже склоняюсь к тому, чтобы попробовать положить все на блочную память.Как это лучше сделать в HDL коде?
1) Внутри архитектуры сигнала объявить сигнал типа массив с предварительным заданием значений
2) Внутри процесса объявить переменную, с предварительным заданием
3) Оставить все, как есть у меня сейчас - массив входных данных объявлен константой в упаковке
Я всегда делаю 1. вот небольшой пример
library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity ROM is port (CLK : in std_logic; EN : in std_logic; ADDR : in std_logic_vector(15 downto 0); DATA : out std_logic_vector(31 downto 0)); end ROM; architecture syn of ROM is type rom_type is array (0 to 1007) of std_logic_vector (31 downto 0); signal ROM : rom_type:= ( X"00000000", X"00040050", X"000d00c0", X"00cc01f0", X"00ea0180", X"01bb0080", X"01aa0090", X"01720120", X"014d0100", X"011001f1", X"010a00c1", X"00000010", X"00110160", X"00710200", X"00810110", X"008901a0", X"008d0111", X"00b801e0", X"00c10112", X"01cb0230", X"016c0091", X"015a0150", X"00000020", X"00130181", X"004d0210", X"006800c2", X"006c0140", X"00cc0092", X"01e401d0", X"01c00130", X"01a201e1", X"01630093", X"01200141", X"00000030", X"001200d0", X"001901c0", X"00620231", X"00680211", X"007800a0", X"009d0142", X"00ad00f0", X"01d401c1", X"01b30220", X"01740190", X"00000040", X"00120212", X"00310131", X"00550170", X"009b0221", X"00bd00d1", X"00e300a1", X"01400232", X"012b0041", X"012d0070", X"01220171", X"00000051" -- и так далее ); attribute ROM_STYLE : string; ---атрибуты для того чтобы при синтезе распределение было в блоковую память attribute ROM_STYLE of ROM: signal is "block"; begin process (CLK) begin if (CLK'event and CLK = '1') then if (EN = '1') then DATA <= ROM(conv_integer(ADDR)); end if; end if; end process; end syn;
у Вас будут скорее всего другие атрибуты, или можно обойтись без них, с помощью настроек синтеза..
-
Спасибо за то что люди отозвались и посоветовали несколько вариантов!!
Всё обязательно попробую!!
-
Muscat, я не тестировал декодер Витерби, и с Actel не работал, но имеется небольшой опыт тестирования других декодеров на Virtex5...
Честно, я не вникал в архитектуру Actel, но в Virtex есть блочная память, думаю она есть и у Actel. так вот, я всегда использовал для теста эту самую память...
Организую её как ROM и либо файлом, либо из vhd файла определяю начальные значения ячеек, а потом просто счётчиком по порядку перебираю ячейки...
но всё это получится если длина кодового слова у Вас вместится в неиспользуемую память...
И, если не секрет, для каких кодов Витерби делаете?? А то у меня тоже этот тип в дальнейшем, похоже, намечается...
-
Прошу пардону. У меня более ранняя версия ISE, в которой он поддерживался.
Однако Xilinx предлагает замену:
XST now supports Partitions in place of Incremental Synthesis. For more information on
Partitions, see the ISE® Design Suite Help.
К сожалению обнаружил "ERROR:TclTasksC:partition_031: Partitions are no longer supported in 12.1 Project Navigator and Xilinx Tcl." Так что пока не ясно как избежать повторного синтеза...
-
Опубликовано · Изменено пользователем _ANDREW · Пожаловаться
По поводу Incremental Synthesis нашёл в XST.pdf нашёл следующее: The incremental_synthesis and resynthesize constraints are no longer supported. Так что пока вопрос остаётся открытым...
-
Здравствуйте.
Пишу проект в ISE12.3 который состоит из файла top.vhd и нескольких вложенных файлов in_buf.vhd, fifo.vhd и out.buf. Был произведён синтез top.vhd, соответственно все 3 вложенных файла прошли синтез. Имеется ли такая возможность при изменении файла in_buf.vhd и повторном синтезе top.vhd не синтезировать fifo.vhd и out.buf, т.е. те которые прошли синтез и не изменялись?
А то тратится очень много времени.
Заранее спасибо.
-
Всем спасибо за помощь!!
Сегодня поковырял снова эту проблему, и выяснил, что моделсим не видит 'ifdef, а весь файл ddr3_model_parameters.vh написан под несколько микросхем памяти а конкретная выбирается с помощью условий ifdef
`ifdef QUAD_RANK
`define DUAL_RANK // also define DUAL_RANK
parameter CS_BITS = 4; // Number of Chip Select Bits
parameter RANKS = 4; // Number of Chip Selects
`else `ifdef DUAL_RANK
parameter CS_BITS = 2; // Number of Chip Select Bits
parameter RANKS = 2; // Number of Chip Selects
`else
parameter CS_BITS = 2; // Number of Chip Select Bits
parameter RANKS = 1; // Number of Chip Selects
`endif `endif
я убрал эту универсальность, всё сделал под конкретную микруху без ifdef и всё заработало... но это не порядок.. надо разбираться...
на следующей неделе встречаюсь с гуру моделсима... у меня к нему масса вопросов... так что разберусь - отпишусь!!!
-
Спасибо
прописал ему полный путь `include "F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model_parameters.vh", моделсим его скушал, но то что было описано в ddr3_model_parameters.vh он так и не увидел...
-
Вы имеете ввиду ГОСТ 28147-89? я его начинал делать, ради эксперимента, и не на такие скорости.. но потом эта задача отпала. но работу в режиме простой замены почти доделал.
я бы посоветовал применить VIRTEX6, хотя думаю и Spartan6 с лихвой хватит и думаю что внешняя память будет не нужна, т.к. нет в алгоритме таких больших массивов данных которые не уместятся в BlockRAM плиски...
-
я в верилоге тоже не очень, но все эти файлы создаёт COREGENERATOR, так что не с путями проблема. но что бы перепробовать всё, я ему полный путь прописывал, всё равно ругается.. :(
-
Здравствуйте.
Подскажите пожалуйста, я сгенерировал в MIG контроллер DDR3, сделал ВСЁ по мануалу (ug406) топом сделал testbanch из папки design_example/sim и попытался всё это дело просимулировать в modelsim6.5. Результаты весьма омрачающие...
1) модель памяти MIG генерирует ТОЛЬКО на верилоге. Я в верилоге не пишу, и поэтому так и не понял, почему modelsim пишет что 2001 редакция верилога не понимает глобальное объявление parametеr? и не понимает вставки 'include. A MIG всё делает с глобальным объявлением параметров.
Пример (102,103,104,,,,,126,127,128 - номер строк)
файл ddr3.v
............
102 `include "ddr3_model_parameters.vh"
103
104 parameter check_strict_mrbits = 1;
parameter check_strict_timing = 1;
parameter feature_pasr = 1;
parameter feature_truebl4 = 0;
// text macros
`define DQ_PER_DQS DQ_BITS/DQS_BITS
`define BANKS (1<<BA_BITS)
`define MAX_BITS (BA_BITS+ROW_BITS+COL_BITS-BL_BITS)
`define MAX_SIZE (1<<(BA_BITS+ROW_BITS+COL_BITS-BL_BITS))
`define MEM_SIZE (1<<MEM_BITS)
`define MAX_PIPE 4*CL_MAX
// Declare Ports
input rst_n;
input ck;
input ck_n;
input cke;
input cs_n;
input ras_n;
input cas_n;
input we_n;
126 inout [DM_BITS-1:0] dm_tdqs;
127 input [bA_BITS-1:0] ba;
128 input [ADDR_BITS-1:0] addr;
129 inout [DQ_BITS-1:0] dq;
inout [DQS_BITS-1:0] dqs;
inout [DQS_BITS-1:0] dqs_n;
output [DQS_BITS-1:0] tdqs_n;
input odt;
...... и т.д.
файл ddr3_model_parameters.vh содержит такие строки
parameter DM_BITS = 1; // Set this parameter to control how many Data Mask bits are used
parameter ADDR_BITS = 14; // MAX Address Bits
parameter ROW_BITS = 14; // Set this parameter to control how many Address bits are used
parameter COL_BITS = 11; // Set this parameter to control how many Column bits are used
parameter DQ_BITS = 4; // Set this parameter to control how many Data bits are used **Same as part bit width**
parameter DQS_BITS = 1; // Set this parameter to control how many Dqs bits are used
при этом моделсим пишет
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(102): Cannot open `include file "ddr3_model_parameters.vh".
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(126): Undefined variable: DM_BITS.
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(127): Undefined variable: BA_BITS.
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(128): Undefined variable: ADDR_BITS.
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(129): Undefined variable: DQ_BITS.
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(130): Undefined variable: DQS_BITS.
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(137): Undefined variable: TDLLK.
# ** Error: F:/PROJECTS/MMIG/ipcore_dir/ddr3/example_design/sim/ddr3_model.v(166): Undefined variable: BL_BITS.
короче не видит 'include
Кто нибудь знает почему, и как выкрутиться??
Заранее спасибо
-
MIG, кроме контроллера памяти, создает тестбенч + добавляет в проект модель памяти ( смотри директорию sim).
Спасибо, сегодня уже это обнаружил... но если я правильно понимаю, то для обмена с памятью достаточно memc_ui_top со всеми его компонентами, а всё остальное нужно лишь для отладки??
Просто раньше я не работал с динамической памятью, а лишь со статической... Так что пока симулирую...
-
попробуйте по сайту поискать по словам "память", "модели", чё-нить ещё (можете доп. фильтр по моему нику поставить, хотя не только я об этом писал - естественно, что подобный вашим вопр. задают периодически). если уж не найдёте самостоятельно - так и быть напрягу извилины.
удачи
нашёл несколько Ваших постов...
http://electronix.ru/forum/index.php?showt...%8F%D1%82%D1%8C
http://electronix.ru/forum/index.php?showt...%E0%EC%FF%F2%FC
наверное их имели ввиду...
спасибо, очень поучительно... теперь нужно разобраться с MIG и дожать сгенерённый им контроллер DDR3... а то там тоже неясности всплывают...
-
Огромное Вам CaPpuCcino спасибо!!! Очень помогли...
но я облазил почти весь сайт микрона, но нашёл несколько моделей на верилоге, и ни одной на vhdl, кругом только spice и IBIS, если не секрет, где Вы взяли прикрепленный файл??
и ещё раз спасибо! буду моделировать!
-
Как кто-то говорил на форуме...
Xilinx делает очень много для продвижения языкового описания аппаратуры. В основном - ужасный редактор схем. В общем, хорошо бы его забросить и переходить на чистый VHDL.
Полностью поддерживаю, редактор настолько не дружелюбный, что действительно, проще перейти полностью на язык... а схемы просто просматривать в RTL viewer...
-
Здравствуйте.
Имеется следующая задача: написан блок на VHDL для Virtex6 который через ядро контроллера памяти должен общаться с DDR3 SDRAM SODIMM MT4JSF6464H – 512MB(стандартная планка памяти ноутбука). контроллер памяти планируется сгенерировать в coregenerator с помощью MIG. Платы с железом пока нет, но проект нужно отлаживать... Подскажите, каким образом можно просимулировать процесс чтения/записи памяти без железа, в симуляторе Modelsim SE PLUS 6.5??? Я отлично представляю каким образом процесс чтения/записи симулируется с блоковой памятью которая на борту чипа, но вот как симулировать внешнюю память не понятно... может быть есть библиотеки микросхем памяти для modelsim, которые можно откомпилировать в симуляторе и подключив, проводить симуляцию... кто знает как симулировать внешние элементы помогите пожалуйста!!!!
-
здравствуйте.
искал,но не нашёл как на vhdlнаписать модуль памяти с разной разрядностью входной и выходной шины данных. не понятно каким образом объявлять сигнал, если писать в него данные одной разрядности(допустим 8), а читать из него данные другой разрядности(допустим 1). знаю что можно сгенерировать такой модуль в coregenerator, но меня это не устраивает. надо на языке написать. зараннее спасибо.
Проблема в работе с PCIe core Virtex-6
в ISA/PCI/PCI-X/PCI Express
Опубликовано · Пожаловаться
Здравствуйте. У меня возникла проблема при освоении PCIe ядра для Virtex6 ML605.
Я изучил документацию xapp1052.pdf, xapp1022.pdf, ug517.pdf, ug379.pdf. Скачал xapp1052.zip, xapp1022.zip и программу PciTree.exe.
Прогрузил флеш на плате проектом примером с PIO-после перезагрузки плата не определилась системой. потом попробовал прогрузить примером который был в xapp1052.zip (пример с BMD). увидел плату с помощью PCITree. затем установил драйвер pcie_demo.sys из xapp1052.zip запустил соответсвующее приложение PCIe_Perf.exe. Оно показало что транзакции чтения и записи совершаются, показало скорость транзакций. Но я не понял что дальше мне делать с этим BMD. Мне нужно осуществлять передачу данных через шину в ПЛИС, их там обрабатывать, и отправлять обратно по шине. Поковырял с Chipscope различные шины в BMD во время транзакций записи и чтения, но куда подключится для получения данных так и не нашёл.
Далее я попытался установить драйвер xilinx_pcie_block.sys из xapp1022.zip согласно документации xapp1022.pdf. Система WindowsXP SP3 перестала загружаться. Загрузка стала возможна только в безопасном режиме, в котором с помощью программы MET.exe из xapp1022.zip я смог записать и прочитать регистры как описано в xapp1022.pdf.
Если кто то сталкивался с похожими проблемами помогите пожалуйста их решить.
И если можно ответьте пожалуйста на несколько вопросов:
1. В чём принципиальное различие между BMD и PIO.
2. возможно ли с помощью драйвера в xapp1052.zip полноценно использовать ядро в режиме DMA(чтение и запись по адресам) система Windows.если кто то знает где можно найти драйвер(Windows) для работы с PCIe с описанием буду ОЧЕНЬ благодарен.
Заранее огромное спасибо!