【IC前端虚拟项目】数据搬运指令处理模块前端实现虚拟项目说明-CSDN博客
截止目前,所有的子模块编码均宣告完成,接下来就是封装顶层的时刻了。我自己规划和集成顶层一般有一个习惯,就是在top层下面封装core层和其他模块,比如mvu的top层下例化了mvu_reg和mvu_core两个模块,而mvu_core下面是前三篇文章中所阐明的模块:inst_buffer、read_path和write_path。
为什么要规划两层而不是一层呢?这是我的习惯或者说是学习到的经验吧,主要有两个考虑:
1.把专用功能的IP和通用功能模块隔开,core内只集成专用IP,而诸如异步FIFO、CRG、PLL等通用功能模块则放置于更上层,这样core是非常“干净”的;
2.区分时钟域和复位域,保证core层是独立的时钟复位不需要糅杂太多的其他的考虑,比如本设计中,如果加入了配置寄存器快速复位,那么mvu_reg和mvu_core的复位域就必然不同了;
所以在工程中可以看到,inst_buffer、read_path和write_path优先继承为mvu_core,mvu_core只会出现三类接口:时钟复位、功能接口(inst/axi)和寄存器配置接