Как использовать параметр для добавления или удаления сигнала из системного интерфейса verilog и модпорта - PullRequest
2 голосов
/ 12 марта 2019

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

Фактически я ищу способ ДОБАВИТЬ / УДАЛИТЬ сигнал с интерфейса на основе параметра. Есть ли способ иметь универсальный интерфейс со сменными сигналами?

interface axi_if 
    #(parameter ID_WIDTH   = 4, 
                ADDR_WIDTH = 40,
                DATA_WIDTH = 64,
                HAS_BURST  = 0) 
    ();

logic                      aw_ready;     
logic                      aw_valid;     
logic [ID_WIDTH-1:0]       aw_bits_id;   
logic [ADDR_WIDTH-1:0]     aw_bits_addr; 
logic [7:0]                aw_bits_len;  
logic [2:0]                aw_bits_size;
generate
if (HAS_BURST)
logic [1:0]                aw_bits_burst;
endgenerate
logic [2:0]                aw_bits_size;

modport slave (  
output aw_ready,
input  aw_valid,
input  aw_bits_id,
input  aw_bits_addr,
input  aw_bits_len,
generate
if (HAS_BURST)
input  aw_bits_burst,
endgenerate
input  aw_bits_size
);

modport master (  
input  aw_ready,
output aw_valid,
output aw_bits_id,
output aw_bits_addr,
output aw_bits_len,
generate
if (HAS_BURST)
output aw_bits_burst,
endgenerate
output aw_bits_size
);
endinterface
`endif

1 Ответ

0 голосов
/ 14 июня 2019

Нет, нет. Порты недопустимы в блоках генерации. Параметры могут использоваться для настройки ширины порта, но не для его полного удаления. Вы можете использовать `ifdef для его условной компиляции, но это решение" все или ничего ". Не может быть некоторых случаев с сигналом, а других без него.

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

Если ни один из этих параметров не работает, нет другого способа, кроме как определить два различных интерфейса. Делать это вручную быстро становится невозможным. Если теперь есть два варианта, вы можете быть уверены, что скоро понадобится третий, потом четвертый, пятый ... Многие компании, занимающиеся разработкой микросхем, имеют генераторы кода SystemVerilog, которые создают настраиваемые модули для каждого экземпляра.

...