交付输出:
模块功能规格书是给设计和验证看的,第一部分要说明的就是设计场景与需求,其实就是芯片的项目背景,和芯片本身设计关系不大,是芯片的应用。第二部分就是芯片的说明了,这个地方不需要细节到每个电路都去讲解,也不需要说明硬件内部的实现方式,重点就是功能描述,性能说明,接口时序(嵌入式大赛输入输出接口是固定的,因此这部分不用写)。嵌入式大赛要对智能识别算法进行加速,因此还要在第三部分补充算法部分的内容。功能规格书是最重要的部分,后续的一切开发,尤其是验证的测试点开发都要通过这个规格书来实现,验证和设计的分歧很大程度上也取决于规格书的是否完善清晰。
详细设计方案草稿,这部分就要开始详细设计模块硬件实现了。第一部分是模块整体架构,输入输出接口时序以及每个模块的功能都要有,子模块内部的电路细节可以没有。所谓的1/3 review指的是详细设计方案写到1/3的时候提前评审一下,对可能出现的理解偏差进行纠错。
第二部分是系统工作流程,这部分其实是解释数据流以及控制方式。任何硬件都可以写成数据流部分和控制器部分,系统工作流程就是按照时间顺序对这两个部分的内容进行解释
第三部分是寄存器表,这部分单独列出来是因为一般的加速器,对于软件人员来说,就是一堆DSP+一堆可配置的寄存器表,比如在stm32上面使用DMA,DMA对于软件人员来说就是个加速器,调用DMA就是向DMA的寄存器表中配置数据。这里的寄存器值得不是你代码中作为flip-flop的reg,而是对CPU来说可读/可写的寄存器。在我的协处理器中,只有两个可配置的寄存器1. vtype(元素类型以及寄存器分组),2. vl (向量指令长度) 。其余的都不算是“寄存器表”中的寄存器
详细设计方案,这部分要补全上部分没有写完的部分,主要是补全子模块内部的电路细节,等仿真完毕后再补全仿真图
RTL代码就不用多解释了,一般留给RTL编码的时间也就1-2week,这部分要尽快完成后进行代码检视,看看能不能对着代码把硬件图讲清楚。此外还要使用spyglass对rtl代码进行检测,提前检测出可能出BUG的点。spyglass不是所有warning都要解决,但所有出现的warning和error一定要写明白原因,写到spyglass报告当中。