蜂鸟的RTL代码风格

  1. 模块化的风格:定义一些基本的带有参数化的模块,并进行模块的例化来搭建整个数字电路。
  2. 当是并行优先级选择的时候,使用assign语句代替if - else语句,前者能够传播不定态,且能透过组合逻辑实现并行的优先级选择。
  3. 断言:用来Debug,具体使用后面再看。
  4. 数据通路上的寄存器可不用带reset,控制通路上的寄存器需要带reset。
  5. clk和rst只能接入寄存器而禁止用于其他任何逻辑功能。

看到后面了

2022-10-09:

看了10、11和12章。

其中10章讲写回的机制,看的有点不明所以,可能是前面看了太久忘记讲什么东西了。简单来说就是讲了往存储器里面写回东西的模块。

11章在讲存储器结构,同时用了哈佛和冯诺依曼的储存思想。

12章讲总线,axi、ahb、apb一个个熟悉的名字出现了,蜂鸟使用了结合前两个总线机制的icb协议。

中断机制

今天看到完了中断和异常的相关内容,RISC-V架构对于它的处理是采用了简洁有效的办法,没有硬件嵌套机制,要实现中断的嵌套需要从软件上进行寄存器的配置操作。

总的来说,中断机制是处理器设计中,最为繁琐的一个部分之一。及时采用了简化的设计理念,相比于其他模块,中断的处理都是相当繁琐的。

调试机制

最不起眼的往往是最难的。

交互调试和追踪调试

交互调试就是一般打断点的方式去和芯片进行交互,追踪调试是指不打断程序运行,而是默默记录下来所有数据,复盘的时候调试。

追踪调试实现的难度较大,一般是用在高端的处理器上。

低功耗介绍

RV层面上,其会提供的wfi指令可以直接用于休眠使用;在RTL代码上,对寄存器进行优化,如数据通路不加复位信号等。

同时,软件层面上所做的工作会比硬件设计上做的工作有效得多,及时管理电源、中断、功耗模式等,可以节约大量的能量。