我正在用 C# 编写基于周期的逻辑模拟。我想模拟组合电路和时序电路。组合电路很简单,但顺序电路给我带来了麻烦。
我想检测振荡并显示适当的警告消息。有没有一种简单的方法来检查单个门可以改变其状态多少次并且仍然保持电路稳定?
我考虑过“最小反馈弧集算法”,但这似乎有点矫枉过正。许多桌面应用程序的速度都这么快,所以我怀疑他们是否正在使用它。
我还发现了一篇建议使用三元逻辑(0、1、未知)的论文,并将算法分为两部分——一部分初始化电路,一部分进行实际计算——但它说的是“如果算法 A 不终止电路”有振荡”这给了我任何东西,因为没有办法停止时钟周期并警告用户。
对于“Logisim”或“digitalworks”等应用程序如何检测振荡有什么想法吗?
验证器 http://www.veripool.org/projects/verilator/wiki/Intro是一个逻辑模拟器,通过将可综合的 Verilog 编译为 C 代码来工作。
它尝试构建一个保证稳定的逻辑顺序,但如果失败,它会发出一些 UNOPT 和 UNOPTFLAT 警告,并简单地重复模拟多次,直到没有任何变化。
默认情况下,在报告收敛失败之前使用 100 轮,但这可以使用参数更改收敛极限 http://www.veripool.org/projects/verilator/wiki/Manual-verilator.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)