Перейти к содержанию
    

FSM встаёт на ровном месте: либо я дурак, либо так оно и есть...

Можно накостылить параметризацию, например, таким способом:

 

// params.svh
//----------------------------------
package params1_pkg;

localparam DATA_W = 9;
...

endpackage : params1_pkg
//----------------------------------
package params2_pkg;

localparam DATA_W = 17;
...

endpackage : params2_pkg
//----------------------------------

// target.svh   
package slon_pkg;

import `PARAMS::*;

...
typedef logic [$clog2(DATA_W)-1:0] data_t;  
  
endpackage : slon_pkg  
//----------------------------------  

//----------------------------------  
// source.sv
  
`define PARAMS params2

`include "params.svh"
`include "target.svh"  
  
...  
//----------------------------------  

Вроде должно работать. Не проверял.

 

Все эти финты с препроцессором, в общем, нехорошая вещь, всегда стараюсь избегать. Но в данном случае подстановка простейшая, тут поля для ошибок вроде не просматривается.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 hour ago, dxp said:

Можно накостылить параметризацию, например, таким способом:

Вроде должно работать. Не проверял.

Все эти финты с препроцессором, в общем, нехорошая вещь, всегда стараюсь избегать. Но в данном случае подстановка простейшая, тут поля для ошибок вроде не просматривается.

Если это метод рассматривать в контексте основного проекта, то да, а если в контексте IP, для множественного инстанса в другие проекты с произвольными параметрами, не пойдет.

Самый простой вариант понять ситуацию: есть сложное IP с конфигурируемым интерфейсом, от параметров которого зависят внутренности IP. Пусть параметр будет один и нужно его 3 значения: 8/24/32. Надо вставить три инстанса с этими параметрами в один проект. Сделать это через глобальное простраство имен, при конфигурации из пакета по моему не возможно. Единственный вариант это собрать 3 black-box инстанса и вставить обертки. Но, даже в этом случае, нужно будет скормить сорцам IP нужный пакет руками, задав макрос. Неудобно, много лишних движений.

Подход от @RobFPGA с интерфейсам не везде работает и довольно специфичен.

Локальный include с параметрами позволяет задать все параметры/локальные параметры/типы в одном месте и не забыть их упомянуть в каждом файле IP. Минусы есть, если там сложные вычисляемые параметры и таблцы, а они в конкретном модуле не использованы, софт тратит лишнее время на их анализ и рассчет. Но зато использование простое. Инстанс с параметрами: как при обычной иерархической разработке.

PS. Еще один минус : неупакованные структурированные типы, в режиме сборки sfcu. Возникает конфликт типов. Но это обходится)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...