Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Синтез в design_vision с использованием parameter
Форум разработчиков электроники ELECTRONIX.ru > Cистемный уровень проектирования > Разработка цифровых, аналоговых, аналого-цифровых ИС
Djamal
Всем привет! У меня такой вопрос. Пытаюсь синтезнуть нетлист в Design Vision (2010) для одного проекта, но некоторые модули из него вываливаются т.к в них используются параметры в виде:
Код
module XXX#(
            parameter YYY = `ZZZ,
            ......
            )
            (
            input rst,
            .....
            );

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

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

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

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

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

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

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

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


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

в NCVerilog нужно читать хелп на single compilation unit | multiple compilation unit - проблемы с дефайнами обычно из-за этого
Djamal
Туплю, извините. 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)

Соответственно резонный вопрос: как быть?
Raven
Все должно работать - это классическое использование параметризации. Проверьте на простом варианте, типа приведенного вами выше. А то, мне сдается, вы здесь перемудрили. На эту мысль наводит вот эта часть:
Цитата(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)



yes
может presto старый и ему принудительно -sv нужно указать? (ну или -v2k)
Shivers
Точно могу сказать, что такие конструкции синтезировал, и не раз - должно пахать.

Другое дело, что в DC работают по разному команда read_verilog и связка analyze+elaborate. Первый вариант может выдавать подобные косяки, т.к. может зависеть от порядка начитки исходников. Поэтому я предпочитаю второй вариант, он работает лучше. imho
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.