bark 0 7 февраля, 2011 Опубликовано 7 февраля, 2011 (изменено) · Жалоба Не могу Сгенерировать Символ модуля если у него в портах используется Интрефейс СистемВерилога. Взялся за изучение системверилога. (до этого пользовал обычный). хочу использовать Интерфейсы в своём проекте. TOP проекта - bdf файл. ну т.е. блок-диаграм-файл. описал тестовый модуль вида: создаю один из текстовых фалйлов проекта *.sv module processor ( // main_bus interface port main_bus bus, // other ports input logic clock, input logic resetN, ); // ... // module functionality code endmodule в итоге есть несколько модулей. проект компилируется нормально. НО! теперь при попытке сгенерировать "символ файл" мне пишется ошибка: Error (10016): Can't create symbol/include/instantiation/component file for module "processor" because port "bus" has an unsupported type т.е. интерфейсы нельзя использовать при построении блок-схем или я что-то не так пользую? З.Ы. Quartus 10.1 Изменено 7 февраля, 2011 пользователем bark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 7 февраля, 2011 Опубликовано 7 февраля, 2011 · Жалоба Никто не сталкивался или непонятен вопрос? =\ Вобщем конечная цель - уменьшить количество соединений в БлокДиаграмме групированием логически связанных между собой сигналов. Может для этого есть более удобный и понятный инструментарий чем интерфейсы? посоветуйте... иначе проект станет очень неудобным из-за стремительного обрастания сигналами. =\ а я до этого доводить не хочу. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IL-76 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Делайте лучше топ проекта в текстовом виде. Иначе, когда количество блоков в нем будет больше десятка-двух, замучаетесь графические связи рисовать, даже для интерфейсов. Особенно когда сигналы идут сразу в несколько блоков. Непривычно это только первое время, потом тестовый топ будет и удобнее и читабельнее. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 (изменено) · Жалоба Но вопрос остаётся открытым. как сделать чтобы генерировало модули с интерфейсами? Как в текстовом виде по-людски удобно генерировать и вставлять меги типа PLL, памяти и т.п.? в блок диаграмме такие вещи вставляются удобно и понятно. сейчас если мне надо использование такой меги в тексте, то я сначала вставлял её в блок диаграмму, потом правой кнопкой мыши на ней - OpenDesignsFile - там открывал сгенерированный верилоговский исходник и копипастил инстанцию сконфигурированной меги. Изменено 8 февраля, 2011 пользователем bark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Как в текстовом виде по-людски удобно генерировать и вставлять меги типа PLL, памяти и т.п.? пишется элементарная обертка к мегафункции, делов-то. а память так вообще напрямую из кода инферится. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 (изменено) · Жалоба обертка? в смысле мега так и вставляется в bdf а потом не переносится целиком, а переподключается в тексте то что сгенерировало в bdf? а память... я предпочитаю в явном виде указывать её использование. а не оставлять на волю оптимизатора. Судя по всему ответа на вопрос нет. точнее он отрицательный. по крайней мере так говорят на форуме альтеры. Изменено 8 февраля, 2011 пользователем bark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба пример обертки: module scfifo_wrapper #(parameter depth_log = 9, dw = 12, showahead = "ON") ( input aclr, input clock, input [dw-1:0] data, input rdreq, input wrreq, output [dw-1:0] q ); scfifo scfifo_component ( .aclr(aclr), .clock(clock), .data(data), .rdreq(rdreq), .wrreq(wrreq), .q(q), .almost_empty(), .almost_full(), .empty(), .full(), .sclr(), .usedw() ); defparam scfifo_component.add_ram_output_register = "OFF", scfifo_component.intended_device_family = "Cyclone III", scfifo_component.lpm_numwords = 2**depth_log, scfifo_component.lpm_showahead = showahead, scfifo_component.lpm_type = "scfifo", scfifo_component.lpm_width = dw, scfifo_component.lpm_widthu = depth_log, scfifo_component.overflow_checking = "ON", scfifo_component.underflow_checking = "ON", scfifo_component.use_eab = "ON"; endmodule пример памяти (смотрите в квартус-хендбуке главу Recommended HDL Coding Styles ) module sc_wr_ram #(parameter num_words = 256, dw = 8) ( input clk, input [dw-1:0] d, input [$clog2(num_words)-1:0] write_address, input [$clog2(num_words)-1:0] read_address, output reg [dw-1:0] q, input we ); localparam aw = $clog2(num_words); reg [dw-1:0] mem [2**aw-1:0]; integer i; initial begin for (i = 0; i < 2**aw; i++) mem[i] = '0; end always_ff @(posedge clk) begin if (we) mem[write_address] = d; q = mem[read_address]; end endmodule ваши сомнения насчет оптимизатора напрасны, все документировано. метания между интерфейсами в SV и схематиком непонятны так же, как поиск ручки подсоса в мерсе Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 (изменено) · Жалоба Спасибо за разъяснения. ещё вопрос: вот все эти параметры scfifo.. откуда их брать? сами строки defparam scfifo_component.add_ram_output_register = "OFF", scfifo_component.intended_device_family = "Cyclone III", scfifo_component.lpm_numwords = 2**depth_log, scfifo_component.lpm_showahead = showahead, scfifo_component.lpm_type = "scfifo", scfifo_component.lpm_width = dw, scfifo_component.lpm_widthu = depth_log, это надо просто знать или где-то заготовки есть? я это похоже тоже где-то упустил. а по поводу схематика... он ведь предоставляет хорошую графическую наглядность проекта и его иерархии. интерфейсы позволяют уменьшить количество ненужных подключений.. вроде ничего никому не противоречит и должно жить в гармонии ) Изменено 8 февраля, 2011 пользователем bark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
vadimuzzz 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба это надо просто знать или где-то заготовки есть? параметры описываются в ug на соотв. мегафункцию. если скопипастить надо - сгенерите 1 раз визардом и скопируйте. на сложных корках, правда, этот номер не прокатит Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
IL-76 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 · Жалоба Как в текстовом виде по-людски удобно генерировать и вставлять меги типа PLL, памяти и т.п.? в блок диаграмме такие вещи вставляются удобно и понятно. сейчас если мне надо использование такой меги в тексте, то я сначала вставлял её в блок диаграмму, потом правой кнопкой мыши на ней - OpenDesignsFile - там открывал сгенерированный верилоговский исходник и копипастил инстанцию сконфигурированной меги. Если вы нужную функцию генерите МегаВизардом, то делать вообще ничего не надо. Визард, наряду с bsf файлом для графики, генерит и готовые файлы для вставки уже сконфигурированных модулей в текстовые файлы. Если генерите мегафункции на Верилоге, то смотрите к примеру файлы, заканчивающиеся на _inst.v. Они, собственно говоря, для этого и предназначены - чтобы не надо было все параметры в общем файле прописывать. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 8 февраля, 2011 Опубликовано 8 февраля, 2011 (изменено) · Жалоба вобщем похоже что есть способ всё это скрестить. попробую использовать структукы struct. выполняет похожую функцию с некоторыми ограничениями. на выходе из модуля собирать всё в шину суммарной ширины. на входе модуля-потребителя снова разбивать в аналогичную структуру для сохранения удобства пользования. struct { logic [7:0] adr; logic [15:0] data; logic rd; logic wr; } bus; wire [25:0] bus_out = { bus.data, bus.adr, bus.rd, bus.wr }; можно конечно и без всяких структур и интерфейсов собирать сигналы в шины а потом распаковывать.. но всё же думаю так удобное. Изменено 8 февраля, 2011 пользователем bark Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
des00 25 10 февраля, 2011 Опубликовано 10 февраля, 2011 · Жалоба вобщем похоже что есть способ всё это скрестить.... мыши плакали, кололись, но продолжали жрать кактус (с) авторы бьются над увеличением читаемости и юзерабилити, а многим по старинке бы, мышой тыкать.... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба вобщем похоже что есть способ всё это скрестить. попробую использовать структукы struct. выполняет похожую функцию с некоторыми ограничениями. на выходе из модуля собирать всё в шину суммарной ширины. на входе модуля-потребителя снова разбивать в аналогичную структуру для сохранения удобства пользования. можно конечно и без всяких структур и интерфейсов собирать сигналы в шины а потом распаковывать.. но всё же думаю так удобное. Мы тоже так пытались сделать. Правда, в Active-HDL и для Xilinx. Проблема в том, что шина может содержать в себе только сигналы одного направления. Т.е. либо все выходы либо все входы. А вот в интерфейс можно было запихивать сигналы любой направленности. В случае с шинами придётся делать отдельно шину на вход, шину на выход, что уже приводит к обрастанию связями. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
bark 0 2 марта, 2011 Опубликовано 2 марта, 2011 · Жалоба Мы тоже так пытались сделать. Правда, в Active-HDL и для Xilinx. Проблема в том, что шина может содержать в себе только сигналы одного направления. Т.е. либо все выходы либо все входы. А вот в интерфейс можно было запихивать сигналы любой направленности. В случае с шинами придётся делать отдельно шину на вход, шину на выход, что уже приводит к обрастанию связями. да есть такое. но в данном случае меня это полностью устраивает. мне как раз и надо блоки сигналов из одного модуля в другой передавать. под весом авторитетных мнений потихоньку буду пытаться отказываться от bdf. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Krys 2 9 марта, 2011 Опубликовано 9 марта, 2011 · Жалоба под весом авторитетных мнений потихоньку буду пытаться отказываться от bdf.Я вот себе не представляю, как бы без графики соединял огромное количество блоков на верхнем уровне друг с другом... Застрелиться... Я для себя пока принял так: логику автомата описываю текстом на языке, а соединяю отдельные блоки всё равно в графике... Хоть какая-то наглядность... Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться