空指针异常(NullPointerException)
简介
NullPointerException
是 Scala 运行时报告的错误,当变量在初始化之前被访问时可能会发生这种错误。
示例
下面的代码:
class TopLevel extends Component {
a := 42
val a = UInt(8 bits)
}
会报错:
Exception in thread "main" java.lang.NullPointerException
***
Source file location of the a := 42 assignment via the stack trace
***
一个可能的修复方法是:
class TopLevel extends Component {
val a = UInt(8 bits)
a := 42
}
问题说明
SpinalHDL 不是一种语言,它是一个 Scala 库,这意味着它遵循与 Scala 通用编程语言相同的规则。
当运行上面的 SpinalHDL 硬件描述生成相应的 VHDL/Verilog RTL 时,SpinalHDL 硬件描述将作为 Scala 程序执行,并且 a
将是一个空引用,直到程序执行 val a = UInt(8 bits)
,因此试图在此之前赋值给它将导致 NullPointerException
。