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

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

ram и rom создаются внутри mmu

top
    cpu
    mmu
        ram
        rom

or

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

top
    cpu
    mmu
    ram
    rom

person bear24rw    schedule 16.09.2012    source источник
comment
Это действительно не имеет значения, все зависит от того, как вы хотите организовать свой проект.   -  person Tim    schedule 17.09.2012
comment
Я знаю, что это не имеет никакого функционального значения. Мне просто интересно, есть ли предпочтительный способ и есть ли преимущества или недостатки каждого из них.   -  person bear24rw    schedule 17.09.2012


Ответы (2)


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

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

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

Зависимости

Это соответствует соображениям повторного использования, но подумайте о том, какие зависимости существуют между модулями. В вашем примере будет ли MMU всегда требовать ОЗУ и ПЗУ? Если да, то это аргумент в пользу их создания в mmu. Будет ли mmu работать с другим количеством типов воспоминаний? Если да, то это аргумент в пользу создания экземпляров воспоминаний вне mmu.

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

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

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

person dwikle    schedule 18.09.2012

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

person Community    schedule 17.09.2012