systemc
文章平均质量分 83
光头小杨
发挥自己最大的价值
展开
-
SystemC 学习之与 Verilog 的混合仿真(十)
Systemc 和 verilog 通信方式有两种,一种是 PLI,但是 PLI 只能 verilog 调用 c/c++,不能从 c/c++ 直接调用 verilog,想要从 c/c++ 调用 verilog 的话,需要先用 verilog 调用 c/c++ 函数,然后在 c++ 里面给对应的参数设置好值,然后 verilog 里面再拿这些数据,比较麻烦。还有一种是使用 DPI-C,DPI-C 是 system verilog 里面的,这样的话需要在编译的时候加上 -sverilog 编译选项。原创 2023-11-13 14:11:36 · 1125 阅读 · 3 评论 -
SystemC 学习之与 System Verilog 的混合仿真(九)
Systemc 和 System Verilog 的通信接口有点类似于 c++ 里面的 socket 通信一样,如果要通信,那么需要绑定到相同的一个端口上,这里的端口是一个字符串。编译之前需要更新 gcc 的版本,这里将 gcc 版本降低到 5.2.0,因为 vcs2018 只支持少数几个 gcc 版本,降低 gcc 的版本可以参考之前的文章。对于 sc 的发送端,需要定义输出 socket 接口,然后调用 b_transport 发送。System Verilog 数据回传模块。原创 2023-11-13 14:05:16 · 1033 阅读 · 0 评论 -
SystemC 学习之 VCS 仿真工具安装(八)
提示找不到 libpng12.so.0,将 vcs_install/libpng12.so.0 下面的 libpng12.so.0 拷贝到 /usr/lib/x86_64-linux-gnu/ 目录下面。然后点击 Generate,这个时候会在当前目录下面生成 Synopsys.dat 文件,然后将这个文件放在 linux 的 license 目录下面。这个时候需要修改之前设置的环境变量,之前 SNPSLMD_LICENSE_FILE 设置了两次,这里需要先将第二次注释掉。原创 2023-11-13 11:40:45 · 1999 阅读 · 1 评论 -
SystemC 学习之 SystemC 验证库(七)
scv_bag 可以为随机数设置加权的分布,使得 scv_smart_ptr 类型的对象的 next() 函数返回的随机数的分布满足所设置的加权分布。约束类:scv_constraint_base,约束类用于定义约束,以及将多个复杂和简单约束合并在一起成为一个更复杂的约束。Systemc 验证库 SCV2.0 为构建高级的 systemc 可重用的验证 IP 提供语言功能,主要包括。软约束失败,会给出一个警告,但是不会影响运行,只不过产生的值会是一个随机值,不再受约束。软约束和硬约束的区别。原创 2023-10-19 09:34:31 · 450 阅读 · 0 评论 -
SystemC 学习之 SystemC 行为建模(六)
SystemC 通道允许并行的操作,这就涉及同步的问题,比如在同一个时钟的上升沿既读又写,则读的结果应该是写入之前的值,但是怎样才能保证这些呢,一个通用的做法是将对通道的操作分为两个部分进行,即所谓的求值-更新过程,在求值阶段,新的结果被记录,同时保存原有的接口,如果是读操作,则在求值阶段将原有的结果返回,如果是写操作,则接着执行更新的过程,真正将新的数据写入,这里有点类似于 c++ 里面的 i++ 操作,也就是求值慢于更新一个时钟。在设计中,进行规则检查能够尽早的发现设计中一些不合理的地方。原创 2023-10-19 09:22:56 · 1145 阅读 · 1 评论 -
SystemC 学习之 SystemC 波形跟踪(五)
SystemC 允许将仿真结果保存为 VCD 格式,该格式是目前最流行的波形格式之一SystemC 波形跟踪有以下特点只有在整个仿真期间都存在的信号和变量才能被跟踪任何类型的信号和变量包括标量、数组和其他聚合类型都可以被跟踪不同格式的波形文件可以在同一次仿真过程中同时产生,任何一个信号和变量都可以在不同格式的波形文件中不限制次数的被跟踪。原创 2023-10-16 17:28:13 · 722 阅读 · 0 评论 -
SystemC 学习之 SystemC 进程(四)
在操作系统中,进程是程序在并发环境中的执行过程,它具有动态性、并发性、独立性、异步性和结构性五大特征。使用 C++ 可以很容易的描述系统的顺序行为,但是要描述系统的并发行为是比较困难的,一般会使用多线程和多进程的方式。为了描述硬件系统的并发行为 SystemC 也引入了进程的概念,但是与操作系统的进程和线程相比,它更简单。在 SystemC 中,进程是一个基本的执行单位,被用来仿真目标系统的行为,SystemC 的基本进程有三种。原创 2023-10-16 17:25:08 · 1596 阅读 · 0 评论 -
SystemC 学习之 SystemC 定点数据类型(三)
在 c++ 中采用浮点数据类型不仅能够很容易的进行算术运算,而且精度高,但是浮点运算在硬件上实现起来特别复杂,因此为了节省硬件资源很多硬件只支持定点运算。为了能够精确地建模和描述定点硬件,必须使用定点数据类型SystemC 专门定义了有符号和无符号的定点数据类型,而且还允许设置定点数据类型的量化和溢出模式SystemC 的四种基本定点数据类型为。原创 2023-10-12 09:41:40 · 679 阅读 · 0 评论 -
SystemC 学习之 SystemC 基本语法(二)
为了顺利进行编译和链接,任何 systemc 设计都必须包括合适的 systemc 库定义的头文件,systemc 和辛苦包括两个最基本和重要的名字空间,一个是 sc_core,一个是 sc_dt。sc_core 时 SystemC 基本的内核空间,sc_dt 则定义了 SystemC 的最基本数据类型。原创 2023-10-12 09:25:47 · 2206 阅读 · 0 评论 -
SystemC 学习之 Linux 安装 SystemC(一)
完成一款集成电路需要设计、制造、封装和测试四个步骤。随着集成电路制造技术按照摩尔定律发展,电子系统变得越来越复杂,人们已经可以把复杂的电子系统集成到一个芯片上,这就是所谓的片上系统。对于一个复杂的片上系统,在进行寄存器传输级设计前需要进行深入的系统级仿真,以确认设计的体系架构是否恰当、总线是否能够满足吞吐量和实时性要求以及存储器是否被浪费。所进行的这些仿真要求在芯片的仿真模型上运行大量的软件,以覆盖所需的功能。在寄存器传输级,最广泛使用的两种语言是 VHDL 和 Verilog HDL。原创 2023-10-10 15:21:58 · 1170 阅读 · 0 评论