https://mp.weixin.qq.com/s/ANlBqbDxiqV5BH9TtIxNjg
一. 非阻塞赋值(Non-blocking Assignment)是个伪需求
二. Delay只有两种实现方式?
1. 利用器件(线、们)的物理特性,进行延时;
2. 定时延时:使用高频clk和计数寄存器进行延时;
三. SystemC的Process应翻译为过程,而非进程;
在计算机编程中,进程为专有概念,相对线程而言;进程是一个动态的概念,是执行中的代码;
而SystemC中的SC_METHOD实际上是一个方法,而不是进程,所以可以翻译为过程,或者直接不要用Process的概念。
四. 建模使用的是子集,验证使用的是全集
无论是建模语言(language)如Verilog、SystemVerilog还是建模库(library)如SystemC,建模时使用的只是语言和库的一部分,即建模子集。
而验证则可以使用语言的全集,如验证是Verilog提供了什么,你就可以使用什么。如果使用的是SystemC,验证时,则可以使用C++语言的全集。Chisel可以使用Scala语言的全集。jchdl也可以使用Java的全集。
前提条件是验证工具支持即可,如果验证工具不支持的语言特性,那就不能用了。这也是Library优于Language的地方。Verilog和SystemVerilog无论是建模还是验证,都要受EDA或者验证工具的约束。而SystemC在验证的时候,只受到C++编译器的约束,而编译器基本上支持全部的C++语言规范的特性。Chisel的Scala和jchdl的Java同理。