断言:让芯片设计工程师又爱又恨
断言(Assertion),说白了,它就是设计工程师在代码里埋下的一个个”判断点”,时刻监控着信号是不是符合预期。
什么是断言?
举个最简单的例子:
assert property (@(posedge clk) (req |-> ##[1:2] ack));这段代码的意思是:一旦发出请求信号req,必须在1到2个时钟周期内收到应答ack。如果实际仿真时没收到应答,或者应答来得太晚,断言就会报错。
为什么说它给设计带来麻烦?
道理很简单。设计在自己的代码里埋断言,就等于给自己挖了坑。
