2015-01-13 4 views
0

мне нужно проверить paramterized модуля в Verilog, например:Specman параметризованного Unit

module A #(PAR1, PAR2, PAR3) (/*input, outputs*/); 

Этот модуль инстанциируется несколько раз с различными значениями параметров.

Мне нужно создать модуль SPECMAN, который может получить PARAMETERs как константу для объявления переменной/порта. Эти параметры также используются для логического расчета.

Я не мог найти способ передать ПАРАМЕТРЫ в блок specman, как это можно сделать в verilog.

Возможно ли это?

Если нет - есть ли альтернативное решение?

ответ

3

Там нет никакого способа передать параметры единиц в е. Что вы можете сделать в вашем случае, однако, используется шаблон:

template unit some_unit of (<len'type>) { 
    some_sig : in simple_port of <len'type> is instance; 
    keep soft some_sig.hdl_path() == "some_sig"; 
}; 

Код выше будет определять шаблон для блока, который содержит порт, длина которого указывается при объявлении экземпляра блока. Вот как вы можете создать экземпляр двух блоков различной длины:

extend sys { 
    unit1 : some_unit of (uint(bits : 2)) is instance; 
    unit2 : some_unit of (uint(bits : 4)) is instance; 
}; 

Вы можете найти рабочий пример на EDAPlayground.

1

Да, в e вы можете определить шаблон структура или единицы. Однако обратите внимание, что параметры будут скорее типами, чем значениями. Например, вы можете иметь декларацию, как это:

template unit my_unit of (<first'type>, <second'type>) like base_unit { 
    ...... 
}; 

, а затем вы можете создать его экземпляр, как это:

extend sys { 
    foo: my_unit of (int(bits: 16), uint) is instance; 
}; 
0

Вы можете получить доступ к параметрам Verilog через simple_ports из e-кода, просто привяжите их, как обычные сигналы. Но это не помогло бы в этом случае, потому что значения не могут использоваться в других объявлениях порта. Я предлагаю использовать предлагаемые здесь решения или сделать порты достаточно широкими, чтобы охватить все требования (MSB будут заполнены 1'b0 по Specman по умолчанию).

+0

Создание портов достаточно велико, не является стабильным решением. Был опробован, но он создает проблемы при сравнении случайных значений. Решение параметрического типа в блоке шаблона было точным. –

 Смежные вопросы

  • Нет связанных вопросов^_^