问题标签 [systemc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
java - 对象的序列化:不能涉及线程状态,对吧?
我正在研究将执行程序的状态存储到磁盘并再次将其带回的基本原则。在我们目前的设计中,每个对象(这是一个带有函数指针列表的 C 级事物,一种低级的自制面向对象——这样做有很好的理由)将是调用以将其显式状态导出为可写和可恢复的格式。使这项工作的关键属性是与对象相关的所有状态确实封装在对象数据结构中。
还有其他使用活动对象的解决方案,其中有一个用户级线程附加到某些对象。因此,程序计数器、寄存器内容和堆栈内容突然成为程序状态的一部分。据我所知,没有好的方法可以在任意时间点将这些东西序列化到磁盘上。线程必须将自己停放在程序计数器等不表示任何内容的特殊状态下,因此基本上将它们的执行状态机状态“保存”到显式对象状态。
我查看了一系列序列化库,据我所知,这是一个通用属性。
核心问题是:或者事实并非如此?就线程在其代码中执行的位置而言,是否有可以包括线程状态的保存/恢复解决方案?
请注意,在虚拟机中保存整个系统状态不算数,这并不是真正序列化状态,而只是冻结机器并移动它。这是一个明显的解决方案,但大多数时候有点重量级。
有些问题清楚地表明,我在解释我们如何做事的想法时不够清楚。我们正在开发一个模拟器系统,对于在其中运行的代码有非常严格的规则是允许编写的。特别是,我们完全区分了对象构造和对象状态。每次设置系统时都会重新创建接口函数指针,而不是状态的一部分。状态仅由特定指定的“属性”组成,每个“属性”都具有定义的获取/设置函数,该函数在内部运行时表示和存储表示之间进行转换。对于对象之间的指针,它们都被转换为名称。所以在我们的设计中,一个对象可能会像这样在存储中出现:
链表从未真正存在于模拟结构中,每个对象代表某种硬件单元。
问题是有些人想这样做,但也有线程作为编码行为的一种方式。这里的“行为”实际上是模拟单元状态的突变。基本上,我们的设计说所有这些更改都必须在原子完整操作中进行,这些操作被调用、完成它们的工作并返回。所有状态都存储在对象中。你有一个反应模型,或者它可以被称为“运行到完成”或“事件驱动”。
另一种思考方式是让对象有活动的线程在它们上面工作,它们像经典的 Unix 线程一样处于一个永恒的循环中,并且永远不会终止。这是我试图查看它是否可以合理地存储到磁盘的情况,但是如果不在下面插入 VM,这似乎是不可行的。
2009 年 10 月更新:与此相关的论文发表在 2009 年的 FDL 会议上,请参阅这篇关于检查点和 SystemC 的论文。
verilog - 用于测试平台的 verilog 或 systemc
我的任务是验证一些基于 Verilog 的 RTL 代码。现在,使用verilog 对RTL 测试平台进行编码似乎非常困难(对我而言)。所以我想尝试以下方法之一。- 尝试为 RTL 提供 PLI 接口,从而调用'C 函数进行测试 - 使用系统'C 连接'C 函数
PS:我已经有一个广泛的'C 代码用于测试行为模型。我是硬件编程领域的新手。任何指针将不胜感激。
c++ - 在 Mingw32 中编译 SystemC 库
我一直在尝试在 Mingw32 中编译 systemC 库,当我运行“配置”命令时出现错误,提示该架构不受支持。有人解决了这个问题吗?
vhdl - VHDL/Verilog 相关的编程论坛?
如今,使用 VHDL 或 Verilog 进行硬件设计更像是编程。但是,我看到 SO 成员并没有那么积极地谈论 VHDL/Verilog 编程。
是否有任何论坛处理使用 Verilog/VHDL/SystemVerilog 或 SystemC 进行硬件设计?
systemc - 在 x86-64 机器上安装 systemc SCV 库
当我尝试安装 SCV 库时,遇到了以下问题:
“检查构建系统类型...无效配置x86_64-unknown-linux-gnu': machine
x86_64-unknown' 无法识别”
我从 /usr/share/libtool/config 复制了“config.guess”和“config.sub”以覆盖 SCV 现有的“config.guess”和“config.sub”。然后我可以进一步配置,但新的问题是:
“配置:错误:不支持目标 CPU 类型:“x86_64””
我认为 SCV 应该支持 x86_64 目标,那么我该如何解决这个问题呢?太谢谢了!坤
systemc - 系统 C 是否支持三态逻辑?
System C 是否支持三态逻辑?也就是说,可以得到的位0
,1
或者X
,在哪里X
表示“未知”?
如果支持,它是否还支持可以包含X
es 的向量,包括逻辑和算术运算?
c++ - 是否可以在没有整个 System C 内核的情况下在 C++ 中使用 System C 数据类型?
System C 提供了任意长度的整数类型,可以将其作为数字(即支持算术)或作为位向量(即支持逻辑运算和使用子向量)进行操作。
System C 还为我不想要的各种其他东西提供支持,例如时钟、触发器等,以及它自己的运行时。我很挑剔 - 我想要没有开销的数据类型。
这些数据类型可以独立于系统 C 内核的其余部分使用吗?如果是这样,怎么做?
c++ - sc_core::sc_in 上的 SystemC 段错误::读()
使用 SystemC 时出现重复的 seg 错误。在初始化期间,我将值设置为 0。在测试台运行期间,我在模块 (proc) 中将此值设置为 1。这是一个附加到另一个模块 imem 的端口的 sc_signal 变量。输入端口的类型为 sc_in。
理论上,这个赋值应该导致输入端口也被赋值为 1,当我尝试使用 .read() 函数访问它时,它应该返回一个 1 并将其分配给 imem 中的另一个内部 sc_signal。
但是,我却遇到了段错误。
根据 gdb,这发生在我进行 sc_start(10,SC_NS) 调用期间,这是有道理的,因为这是应该更新值的时候。它专门跟踪它以尝试执行 .read() 的返回。这是堆栈返回的快速片段(使用 g++ 和 gdb6.6,64 位系统的 -O0 和 -g3):
港口申报:
函数声明(发生在 SC_CTOR(imem) 中):
它死亡的功能:
imem::reg_write()
在 seg 故障发生之前打印到控制台中。
imem的port的声明和绑定:
驱动信号的声明:
有任何想法吗?想法?我应该尝试的事情?
编辑:有时会发生一些奇怪的事情,添加或删除代码行会导致段错误消失。一个特定的实例涉及添加一个调试cout
语句修复了一些问题,但是在<< std::endl
它的末尾添加了一个 seg 错误后返回。这暗示了我有一个竞争条件,但理论上 SystemC 应该处理所有并发线程。
vhdl - SystemC 可以把电路显示为图纸吗?
我需要设计一些数字电路,但它让我无法手工绘制它们。我已经搜索了一种更简单的方法来完成它们,并找到了 VHDL 和更有趣的 SystemC。最后一个非常好且易于理解,但我需要能够以电路的视觉表示形式打印结果。
SystemC 能否将电路打印为图纸?
c++ - 使用 C++ 选择性访问数据类型的位
我正在使用 C++ 使用 SystemC 进行基于硬件的模型设计。SystemC 作为 C++ 扩展引入了对信号和字节描述有用的特定数据类型。
通常如何访问数据类型的第一位,例如:
或访问tmp
.
sc_bv 是一种位向量数据类型,用于存储二进制序列。现在我想要该数据类型的前四位,例如。我的背景是 C# 和 Java,因此我通常会怀念一些基于 OOP 和反射的 API 结构。我需要对这个低级的东西进行转换。有用的介绍性内容会有很大帮助。
谢谢:),希望