SystemVeriog枚举练习+书籍印刷错误记录
睡前读书,《SystemVerilog验证测试平台编写指南(原书第三版)》,2023年3月第一版,第一次印刷。
[例2.60],代码中COLOR_e在c2赋值时,改成了小写。修正后,加上module声明的代码如下:
1 module Test; 2 typedef enum {RED, BLUE, GREEN} COLOR_e; 3 COLOR_e color, c2; 4 int c; 5 6 initial 7 begin 8 color = BLUE; 9 c = color; 10 c++; 11 if(!$cast(color, c)) 12 $display("Cast failed for c = %0d", c); 13 $display("Color is %0d / %s", color, color.name()); 14 c++; 15 c2 = COLOR_e'(c); 16 $display("c2 is %0d / %s", c2, c2.name()); 17 end 18 endmodule
在后文的描述语句中,即54页上部的描述中,“你也可以像例2.51所示的那样使用type'(val)进行类型转换”,根据上下文,这里应该说的是例2.50。后续“在例2.51中进行静态类型转换以后,赋给c2的值实际上已经越界”,这里应该是例2.60。
仿真输出结果如下,因为c2越界了,所以输出信息中没有对应的枚举名字。
另,56页练习1中,integer拼写错误。