01.
SystemVerilog的发展历程
02.
SystemVerilog的语法特点
1
复合类型成员的初始化
class ’my_sequence’ 中的成员 ’settings’(第12行)是一个queue类型的变量。这种类型的变量需要进行特殊的初始化,给queue分配初始空间。该queue的成员又是一个struct 类型,而struct是个复合类型,因此,这里面是一类比较复杂的嵌套类型。
2
数组的方法调用(array method)
上面例子用到了‘sort’这个方法(第25行)。这里面,又涉及到了嵌套类型,因为queue的成员是struct 类型的。而struct属于复合类型,是不能直接比较的。IEEE1800标准引入了 with (item.mebmer...),可以针对复合类型的某个成员进行排序操作。
3
垃圾回收
SystemVerilog类似Java,它不需要用户自己进行类似delete操作。这就要依赖仿真器提供垃圾回收的功能。否则在运行时会出现内存泄漏。
4
进程管理
上述例子中的task ‘main_phase’ 中用到了‘fork join‘,(第33-36行)。仿真器需要有一套进程管理来支持这个用法。进程管理实现的是否高效,将直接影响到仿真器的性能。
03.
SystemVerilog的scheduling semantics
04.
GalaxSim对SystemVerilog的设计思路
05. 总结
接下来,我们会结合数字仿真器的其他功能与性能要求,诸如coverage、debug等方面,更进一步讲解一款高质量的数字仿真器应该具备哪些特征。独木不成林,我们也期待行业的各位有志同仁,参与我们的讨论,一起畅谈国产数字仿真器发展之路。
—— 转自芯华章