Предпочтительная иерархия реализации HDL для SoC

Скажем, вы реализуете простую SoC с процессором, RAM, ROM и MMU, чтобы отобразить RAM и ROM в адресное пространство процессора. При создании экземпляров различных компонентов имеет смысл сделать следующее:

ОЗУ и ОЗУ создаются в ММУ

top
    cpu
    mmu
        ram
        rom

или же

все компоненты создаются на верхнем уровне и соединяются там

top
    cpu
    mmu
    ram
    rom

2 ответа

Решение

Это действительно вопрос дизайна, ответ на который зависит от ваших требований. Несколько вещей, чтобы рассмотреть:

Повторное использование

Как и во многих проектах SoC, вы можете повторно использовать блоки или подсистемы из одного проекта в другой. Рекомендуется группировать модули вместе в зависимости от того, как они могут быть повторно использованы в другом контексте. Таким образом, дополнительное обеспечение, отличное от проектного RTL (например, контрольные наборы, ограничения синтеза, утверждения и т. Д.) Также может быть повторно использовано.

зависимости

Это согласуется с соображениями повторного использования, но подумайте о том, каковы зависимости между модулями. В вашем примере, будет ли MMU всегда требовать RAM и ROM? Если да, то это аргумент в пользу создания экземпляра их в рамках MMU. Будет ли MMU работать с другим количеством типов воспоминаний? Если да, то это аргумент для создания экземпляров воспоминаний за пределами MMU.

Область проверки

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

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

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

Другие вопросы по тегам