- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想问一下我是否可以在yosys中验证我的设计。我重新综合了我的网表,使用yosys来获取执行(拓扑顺序)。
现在我想通过向网表插入一些输入并检查输出来检查此设计的验证。
例如,我的模型使用了 s27 基准,我想确保我的设计的输出与 s27 基准的输出相匹配。我浏览了 yosys 手册,但不知道什么命令可以做到这一点。另外,我还使用了其他工具,例如 Veriwell。但我真的更喜欢使用yosys。
最佳答案
如果您只想使用给定的测试平台模拟综合后网表,那么您应该使用模拟器来实现。 (但是,我强烈推荐 Icarus Verilog 而不是 Veriwell。)
您当然可以使用形式化方法来证明 Yosys 中两个电路的等效性,但这要复杂得多,并且在尝试更大的设计时需要一定的经验。
以下 shell 脚本演示了使用 yosys 对综合后网表进行形式等价检查的两种不同基本方法:
# download fiedler-cooley.v
if [ ! -f fiedler-cooley.v ]; then
wget https://raw.githubusercontent.com/cliffordwolf/yosys/master/tests/simple/fiedler-cooley.v
fi
# synthesis for ice40
yosys -p 'synth_ice40 -top up3down5 -blif up3down5.blif' fiedler-cooley.v
# formal verification with equiv_*
yosys -l check1.log -p '
# gold design
read_verilog fiedler-cooley.v
prep -top up3down5
splitnets -ports;;
design -stash gold
# gate design
read_blif up3down5.blif
techmap -autoproc -map +/ice40/cells_sim.v
prep -top up3down5
design -stash gate
# prove equivalence
design -copy-from gold -as gold up3down5
design -copy-from gate -as gate up3down5
equiv_make gold gate equiv
hierarchy -top equiv
equiv_simple
equiv_status -assert
'
# formal verification with BMC and temproral induction (yosys "sat" command")
yosys -l check2.log -p '
# gold design
read_verilog fiedler-cooley.v
prep -top up3down5
splitnets -ports;;
design -stash gold
# gate design
read_blif up3down5.blif
techmap -autoproc -map +/ice40/cells_sim.v
prep -top up3down5
design -stash gate
# prove equivalence
design -copy-from gold -as gold up3down5
design -copy-from gate -as gate up3down5
miter -equiv -flatten gold gate miter
hierarchy -top miter
sat -verify -tempinduct -prove trigger 0 -seq 1 -set-at 1 in_up,in_down 0
'
# formal verification with BMC+tempinduct using undef modeling
yosys -l check3.log -p '
# gold design
read_verilog fiedler-cooley.v
prep -top up3down5
splitnets -ports;;
design -stash gold
# gate design
read_blif up3down5.blif
techmap -autoproc -map +/ice40/cells_sim.v
prep -top up3down5
design -stash gate
# prove equivalence
design -copy-from gold -as gold up3down5
design -copy-from gate -as gate up3down5
miter -equiv -flatten -ignore_gold_x gold gate miter
hierarchy -top miter
sat -verify -tempinduct -prove trigger 0 -set-init-undef -set-def-inputs
'
每种形式等价检查方法都有其优点和缺点。
例如,上面的第一种方法需要能够通过名称匹配足够数量的内部电线,以便成功验证等效性。但它能够将大型电路分解为较小的电路,因此即使在较大的设计中也能表现良好。
第二种方法不需要按名称匹配任何内部线路,但需要电路的复位条件(-seq 1 -set-at 1 in_up,in_down 0
部分)并且仅适用于在少量周期内将所有内部状态“泄漏”到其输出的电路,无论输入信号的顺序如何。
第三种方法是第二种方法的变体,它使用 undef 状态建模来避免重置条件的要求,但会产生更复杂的 SAT 模型,因此计算效率可能较低。
总而言之,您永远不应该依赖一种工具来检查其本身产生的输出。例如。如果 Yosys Verilog 前端存在错误,那么这将同样影响综合和验证,并且永远不会检测到问题。因此,如果您使用 Yosys 来验证 Yosys 的输出,那么您应该只在使用独立代码库的验证方案之外执行此操作。例如,Icarus Verilog 或 Verilator 是两个模拟器,它们不与 Yosys(或彼此)共享任何代码。另外:一般来说,形式验证不能替代模拟。 (特别是不是正式的等价性检查:您如何知道检查等价性的模型首先是正确的?)
关于verilog - 使用 Yosys 进行网表验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35008275/
我正在寻找的服务器是: 轻量级, 非 buggy , 支持.NET, 在客户端上运行以进行测试, 在Windows上运行 Cassinni太过马车,IIS太昂贵,Apache很难安装,XSP仅是lin
所以我有大约10个短的css文件,可以与mvc应用程序一起使用。 有像 error.css login.css 等等... 仅有一些非常短的CSS文件,这些文件使更新和编辑变得容易(至少对我而言)。我
我正在编写程序来自动化 win32 表单。我正在使用 Microsoft UI 自动化库。我不知道如何获取和调用该表单上的预定义快捷键。现在我只需获取 MenuItem 的 AutomationEle
我有一个在后台线程上运行的及时操作。运行时,我当前将光标置于等待状态: Mouse.OverrideCursor = Cursors.Wait 我刚刚实现了一项功能,允许用户在厌倦等待时单击“取消”按
如何找到所有可能直接或间接调用给定方法的单元测试?当我更改方法时,我希望知道要运行的最佳测试;必须有一个工具! 因为我们有很多接口(interface),所以我对所有调用接口(interface)方法
我想知道,一个类会被装箱吗?我一直假设每个类都有一个虚拟表,可以用来标识类,所以它需要装箱吗? 最佳答案 只有值类型(结构)被装箱。类实例不会被装箱。 关于.net - 类是盒装的吗? 。网,我们在S
所以接下来有一个按钮调用(页面)。它的 href 链接是 site/blah/#。所以我知道它真正运行的 javascript 代码。在我解析完第一页后,我想解析下一页。我如何模拟鼠标点击,以便我可以
我想知道是否有人对解决以下设计问题有好的建议/模式。我有一个命令类的层次结构。在最抽象的层面上,我有一个 ICommand 接口(interface)。执行 ICommand 的 RunCommand
我在资源(xsd 文件)中有几个文件可用于验证收到的 xml 消息。我使用的资源文件名为 AppResources.resx,它包含一个名为 clientModels.xsd 的文件。当我尝试使用这样
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
(最后的简短版本) 我目前正在开发的软件需要跟踪任意数量的 MS Office 文件,现在需要提供将所有这些文件一起打印的功能,以及一些应用程序数据(可能会发送到打印机作为 .xps、.html 或
我想在不指定命名空间或程序集的情况下按名称(字符串)实例化一个类。像这样(Unity 语法): var processor = container.Resolve("SpecialProcessor"
我有一些代码可以对 64 位整数进行大量比较,但是它必须考虑数字的长度,就好像它被格式化为字符串一样。我无法更改调用代码,只能更改函数。 最简单的方法(除了 .ToString().Length 之外
使用遗留代码,我发现我有很多这样的语句(超过 500 个) bool isAEqualsB = (a == b) ? true : false; 这样重写有意义吗? bool isAEqualsB =
我有这个: AudioPlayer player = new AudioPlayer(); player.Directory = vc.Directory; player.StartTime = vc
我已经阅读了很多关于双重检查锁定的危险的文章,我会努力远离它,但话虽如此,我认为他们的阅读非常有趣。 我正在阅读 Joe Duffy 的这篇关于使用双重检查锁定实现单例的文章: http://www.
对于可变类型,值类型和引用类型之间的行为差异很明显: // Mutable value type PointMutStruct pms1 = new PointMutStruct(1, 2); P
关闭。这个问题需要更多 focused .它目前不接受答案。 想要改进这个问题吗? 更新问题,使其只关注一个问题 editing this post . 关闭 6 年前。 Improve this q
我有一个 Cordova pp 我在 Controller 中调用post方法 它可以在浏览器中工作,但是在构建和调试apk时出现错误 ionic.bundle.js:23826 POST http:
我们正在尝试将时间戳附加到某些 URL 以让内容缓存但在它们发生更改时更新它们。我们有代码可以归结为: DateTime ts = File.GetLastWriteTime(absPath); 其中
我是一名优秀的程序员,十分优秀!