реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Синтез в design_vision с использованием parameter, Не синтезирует блоки с parameter
Djamal
сообщение Sep 30 2013, 12:14
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-05-11
Из: Зеленоград
Пользователь №: 64 999



Всем привет! У меня такой вопрос. Пытаюсь синтезнуть нетлист в Design Vision (2010) для одного проекта, но некоторые модули из него вываливаются т.к в них используются параметры в виде:
Код
module XXX#(
            parameter YYY = `ZZZ,
            ......
            )
            (
            input rst,
            .....
            );

Кто сталкивался с таким? Как побороть такую проблему, желательно без перекраивания кода?

Сообщение отредактировал Djamal - Sep 30 2013, 12:25
Go to the top of the page
 
+Quote Post
yes
сообщение Sep 30 2013, 12:30
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



типа это - а как по Вашему, синопсис узнает сколько гейтов нужно, если не знает значения параметра?

такая фигня `ZZZ предполагает, что выше по тексту или `include или `define
где `ZZZ приобретает конкретное значение

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

Гейслер гнал, что VHDL-ные генерики presto умеет превращать в параметризированный нетлист, но то ли я его не понял, то ли это какой-то особый случай, но так ни разу он не показал этого параметризированого нетлиста

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

upd: еще verilog допускает задания define из командной строки - типа +define+ZZZ=322223 или как-то так
Go to the top of the page
 
+Quote Post
Djamal
сообщение Sep 30 2013, 14:06
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-05-11
Из: Зеленоград
Пользователь №: 64 999



Не-не. `ZZZ задефайнен в отдельном файле, который тоже инклюдится(он заинклюжен).
Таким образом подразумевается что запись типа
Код
`define XXX 'h01
имеет место быть

Немножко поясню. Если я определяю параметры до module, т.е вот так
Код
parameter YYY = `ZZZ,
....
module XXX(
            input [YYY:0] bbb,
            .....
            );

то Design Vision нормально кушает его, но при этом, уже NCVerilog в свою очередь при моделировании начинает ругаться на такое объявление.
А объявить параметры после объявления внешних портов я не могу, т.к эти параметры используются в размерностях шин(input [YYY:0] bbb), и ругаться будет уже на это.

Сообщение отредактировал Djamal - Sep 30 2013, 13:23
Go to the top of the page
 
+Quote Post
yes
сообщение Sep 30 2013, 14:12
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



Цитата(Djamal @ Sep 30 2013, 18:06) *
----
то Design Vision нормально кушает его, но при этом, уже NCVerilog в свою очередь при моделировании начинает ругаться на такое объявление.
А объявить параметры после объявления внешних портов я не могу, т.к эти параметры используются в размерностях шин(input [YYY:0] bbb), и ругаться будет уже на это.


так вам шашечки или ехать sm.gif

в NCVerilog нужно читать хелп на single compilation unit | multiple compilation unit - проблемы с дефайнами обычно из-за этого
Go to the top of the page
 
+Quote Post
Djamal
сообщение Oct 1 2013, 13:04
Сообщение #5


Участник
*

Группа: Участник
Сообщений: 22
Регистрация: 14-05-11
Из: Зеленоград
Пользователь №: 64 999



Туплю, извините. rolleyes.gif Черт с ним с ncverilog, еще разок перефразирую суть проблемы: Есть например модуль, в модуле параметризованны размерности входных/выходных шин, соответственно, поэтому, сами параметры мне нужно объявить до объявления внешних портов, но при этом сделать это так, чтобы они остались локальными только для этого блока(т.е вариант объявить их до module - не канает). Поэтому единственный вариант который я вижу - это конструкция вида
Код
module xxx #(
            parameter yyy = 10
            )
            (
            input [yyy:0] bus
            );

Но при этом Design Compiler отказывается синтезировать это . А кокретно ему не нравится объявление параметров в таком виде, т.к если убрать их - то все ок. При этом он даже не ругается толком. Пишет например:
Код
Information: Building the design 'crc16' instantiated from design 'digit' with
        the parameters "|((N%reset%)(N%clk_i%)(N%if_sys_bus_s%I%if_sys_bus%%))". (HDL-193)
Warning: Cannot find the design 'crc16' in the library 'WORK'. (LBR-1)
Warning: Unable to resolve reference 'crc16' in 'digit'. (LINK-5)

Соответственно резонный вопрос: как быть?
Go to the top of the page
 
+Quote Post
Raven
сообщение Oct 1 2013, 17:09
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 491
Регистрация: 16-01-05
Из: Санкт-Петербург
Пользователь №: 1 987



Все должно работать - это классическое использование параметризации. Проверьте на простом варианте, типа приведенного вами выше. А то, мне сдается, вы здесь перемудрили. На эту мысль наводит вот эта часть:
Цитата(Djamal @ Oct 1 2013, 17:04) *
Код
... with the parameters "|((N%reset%)(N%clk_i%)(N%if_sys_bus_s%I%if_sys_bus%%))". (HDL-193)



Go to the top of the page
 
+Quote Post
yes
сообщение Oct 2 2013, 11:38
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



может presto старый и ему принудительно -sv нужно указать? (ну или -v2k)
Go to the top of the page
 
+Quote Post
Shivers
сообщение Oct 7 2013, 12:51
Сообщение #8


Знающий
****

Группа: Свой
Сообщений: 680
Регистрация: 11-02-08
Из: Msk
Пользователь №: 34 950



Точно могу сказать, что такие конструкции синтезировал, и не раз - должно пахать.

Другое дело, что в DC работают по разному команда read_verilog и связка analyze+elaborate. Первый вариант может выдавать подобные косяки, т.к. может зависеть от порядка начитки исходников. Поэтому я предпочитаю второй вариант, он работает лучше. imho
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 30th June 2025 - 05:40
Рейтинг@Mail.ru


Страница сгенерированна за 0.01335 секунд с 7
ELECTRONIX ©2004-2016