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

Cтранная запись и компилятор не понимает

Здравствуйте!

Пробую реализовать в Libero проект 

https://github.com/openrisc/or1200/tree/master

И в тестбенче есть некоторые записи, которые ни я ни компилятор не понимает

https://github.com/openrisc/or1200/blob/master/bench/or1200_monitor.v

 

А именно:

           gpr = `OR1200_TOP.`CPU_cpu.`CPU_rf.rf_a.get_gpr(gpr_no);

           `OR1200_TOP.`CPU_cpu.`CPU_except.ex_pc,
           `OR1200_TOP.`CPU_cpu.`CPU_ctrl.ex_insn);

            r = `OR1200_TOP.`CPU_cpu.`CPU_sprs.sr;

            always @(posedge `OR1200_TOP.iwb_clk_i)

И тому подобное, тоесть реализуеться структурный доступ, который не понимает компилятор

У меня версия Libero SoC 11.5 и конструкции SystemVerilog непонятно поддерживаеться или нет, формально об этом нигде не написано, но это уже 15 год и поидее должно.

И компилятор пишет подобные жуткие вещи:

ex_pc is not declared under prefix or1200_except;

ex_insn is not declared under prefix or1200_ctrl;

sr is not declared under prefix or1200_sprs;

iwb_clk_i is not declared under prefix or1200_top0

итд по всем подобным случаям

 

При этом orpsoc_tb нигде не описываеться структурой

Изменено пользователем addi II

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


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

46 минут назад, addi II сказал:

И в тестбенче есть некоторые записи, которые ни я ни компилятор не понимает

А зачем вам компилить тестбенч в либеро?

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


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

Just now, Zversky said:

А зачем вам компилить тестбенч в либеро?

как минимум для проверки ошибок при подключении топового инстанса

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


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

30 минут назад, addi II сказал:

как минимум для проверки ошибок при подключении топового инстанса

чем классика жанра, например от ментора, не устраивает?

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


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

1 час назад, addi II сказал:

как минимум для проверки ошибок при подключении топового инстанса

Попробуйте QuestaSim.

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


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

4 hours ago, addi II said:

gpr = `OR1200_TOP.`CPU_cpu.`CPU_rf.rf_a.get_gpr(gpr_no);

Иерархический доступ возможен только при компиляции в симуляторе.  

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


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

2 hours ago, RobFPGA said:

Иерархический доступ возможен только при компиляции в симуляторе.  

Про структуры не знаю, а просто wire из субмодуля доставался и в Modelsim и имплементировался в GoWin на verilog.

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


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

43 minutes ago, _4afc_ said:

Про структуры не знаю, а просто wire из субмодуля доставался и в Modelsim и имплементировался в GoWin на verilog.

Это не структуры, это доступ по иерархии к сигналам, таскам и функциям внутри дизайна в симе.   Причем `OR1200_TOP, `CPU_cpu, `CPU_rf,    это макросы которые задают актуальное имя инстанса top в TB  и  cоответвенно модулей внутри топа.  

В синтезе раньше поддерживался доступ по иерархии в пределах модуля.  Например  доступ к сигналам внутри именованного блока begin end в generate.
В последнее время ряд синтезаторов начали ограниченно поддерживать  и кросс-модульный доступ по иерархии.  

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


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

5 hours ago, RobFPGA said:

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

а какие конкретно? я не одобряю этого, но хотелось бы знать...

ну и по поводу макросов - можно добавить, что эти макросы необязательно задаются в исходниках (хотя какойнибудь grep -R по исходникам можно попробовать), а могут передаваться в командной строке симулятора +define+CPU_cpu=la-la

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


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

1 hour ago, yes said:

а какие конкретно? я не одобряю этого, но хотелось бы знать...

Последние Vivado вроде как.  

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


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

7 hours ago, RobFPGA said:

Это не структуры, это доступ по иерархии к сигналам, таскам и функциям внутри дизайна в симе.  

Я говорю, что не только в симе. Можно где угодно. В generate не пробовал.

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


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

14 hours ago, kirill70674 said:

Попробуйте QuestaSim.

У меня же Libero это же неделимый фарнкенштейн, у него один дизайн-флоу и втсроенный modelsim-симулятор

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


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

On 10/31/2023 at 9:11 PM, Zversky said:

А зачем вам компилить тестбенч в либеро?

а что разве в отношении него не надо проводить проверку синтаксиса?

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


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

9 часов назад, addi II сказал:

У меня же Libero это же неделимый фарнкенштейн

Он для вас по каким соображениям неделим: партия в лице фирмы приказала, или лень - матушка? В Quartus-е тоже встроенный, но никто не запрещает использовать внешний. Был бы смысл.

1 час назад, addi II сказал:

а что разве в отношении него не надо проводить проверку синтаксиса?

у вас тестбенч всё-таки кто компилит: либеро или моделсим? Отберите весь ваш проект вместе с тестбенчем у франкенштейна и скормите его просто моделсиму, чтобы отделить мух от котлет.

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


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

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

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

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

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

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

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

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

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

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