前言
ral_model是验证方法学中非常独立且重要的一个篇章。可以说在我维持不长的芯片验证生涯中对ral_model的使用达到了贼溜水平,甚至参考了各种资料组织了部门第一版uvm寄存器验证sequence。
但是呢,我从来没有涉足过寄存器的组织与ral_model的生成这部分,这个系列就是为了补齐这部分的短板,距离芯片全栈工程师更进一步啊。
当然这个系列还是基于我以往先入门再探究的习惯,先把东西跑出来看到结果确定理论是可行的,再去进行理论拓展和探究。
寄存器的层次
一般而言(我熟悉的结构而言),寄存器代码的描述和例化层次如下:
通过system(或者规模大一些的block)- block - reg - field的层次逐级拆分,完成对寄存器的描述。当然这个层次不是固定的,比如一个block里还可以有进行分层(registerFiles层),不过我们就通过最简单的结构来探究吧。
寄存器代码生成之后就可以通过如下例化在RTL中:
寄存器模型除了对应寄存器rtl,也对应着ral_model。ral_model例化于验证环境中,其他组件通过ral_model发起对rtl中寄存器的访问: