2011-12-19 2 views
1

Мой код:Что означает, что VCS столкнулся с неаменованными блоками генерации?

generate 
if(some_condition) begin 
    assign A=~AB; 
end else begin 
    assign A=AB; 
end 
endgenerate 

Я получаю ошибку о том, VCS столкнулось неназванным генерировать блоки. И это указывает на строки, где у меня есть присваивающие утверждения. Есть проблема с несколькими дисками?

ответ

3

Попробуйте

generate 

if(some_condition) begin : generate_block_1 
    assign A=~AB; 
end else begin : generate_block_1 
    assign A=AB; 
end 

endgenerate 

В нескольких пересмотров, Verilog изменил способ генерирует обрабатываются. В более старых версиях генерировать элемент или ключевое слово самостоятельно не вводило новую область, поэтому разработчику приходилось добавлять именованный блок для этого. Я не думаю, что это «реальная» ошибка в 1364-2001, так как вы не объявляете идентификатор внутри сгенерированного файла, но это хорошая практика для создания блоков генерации.

1364-2005 и SystemVerilog исправляет это, заявляя, что любой неназванный блок генерации называется genblk ##, хотя вы все равно должны называть их.

+0

Разве два блока 'begin ... end' не имеют двух разных имен? – Paddu