问题标签 [yosys]
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.
interpretation - yosys rtlil 转储不完整
我试图弄明白 yosys 对我的 verilog 源所做的事情,所以我在我的脚本中插入了一些转储进程。我假设这些在手册中描述为 ILANG?在阅读 verilog 后立即查看转储,在我看来,重要的东西已经丢失了。例如,我有一组映射 ascii 字母代码的参数定义。这些在 ILANG 中列出,但没有任何价值。
是否有描述此输出的格式和解释的文档?Yosys 似乎丢弃了我的大部分代码,到目前为止,我还无法确定它丢弃的内容与我的源代码有何关联。
yosys - 使用 Icestorm 分析比特流
我正在尝试了解 Yosys/arachne-pnr 生成的比特流,如http://www.clifford.at/icestorm/上所述:
学习如何使用本文档的推荐方法是使用 Yosys 和 Arachne-pnr 合成非常简单的电路,
icebox_explain
在生成的比特流文件上运行 icestorm 工具,并使用上述数据库的 HTML 导出分析结果。icebox_vlog
可用于将比特流转换为 Verilog。该工具的输出文件还将在添加到生成的 Verilog 代码的注释中概述信号路径。
为了了解比特流变化的影响,如果我可以更改.ex
文件并将其转换回 ASCII 比特流(而不必手动识别比特)以上传到 FPGA,将会很有帮助。有没有办法这样做?
我有点担心用无效的比特流损坏 FPGA。是否存在已知会发生这种情况的情况?有没有办法模拟比特流?
此外,拥有某种“更高级别”的解释格式会很有帮助,例如显示它们对应的 I/O 块上的 IE/REN 位,而不是必须在比特流中设置的那个. 有这样的格式吗?
我知道生成等效 Verilog 电路的可能性,但这样做的问题是它通常不允许我无损地往返返回到比特流。有没有办法生成等效的 Verilog 电路(例如通过显式实例化块)在使用 Yosys/arachne-pnr 处理时产生完全相同的比特流?
yosys - iCE40 I/O 模块与封装管脚的对应关系
iCE40 FPGA 的 I/O 模块与其驱动的封装引脚之间的对应关系是否记录在某处?
Project IceStorm的I/O tile 文档给出了 I/O 块列表,以及每个块的 IE 和 REN 位在比特流中的位置。此列表中缺少一些块:
这是否意味着这些块不存在?
虽然缺少文档,但通过检查 Yosys/arachne-pnr/Icestorm 流程生成的比特流,我能够推断出 iCE40-HX1K-TQ144 和 iCEstick 评估板上使用的引脚的以下对应关系:
但是,如果可能的话,我想交叉检查这些信息。
yosys - 了解为 iCE40 I/O 块生成的比特流
当我使用 Yosys 和 arachne-pnr 合成一个空电路时,我得到一些不规则的位:
这些也是到目前为止我可以生成的所有其他文件的一部分。由于未使用的 I/O tile 设置了两个 IE 位,因此我将其读取为:
- 对于 IE/REN 块 6 17 0,启用输入缓冲区
- 对于 IE/REN 块 6 0 0,启用输入缓冲器,禁用上拉电阻
- 对于 IE/REN 模块 6 0 1,启用输入缓冲器,禁用上拉电阻
但是,根据文档,没有 IE/REN block 6 17 0。这些位是什么意思?如果块 6 17 0 的 IE 位由于该块不存在而未设置,那么为什么其他不存在的块的位也未设置?其他 IE/REN 块似乎对应于 I/O 块 6 0 1 和 7 0 0。这些块有什么作用,为什么它们总是配置为输入?
技术库条目没有SB_IO
提到 IE 位。它与 PIN_TYPE 参数设置有什么关系?
当我使用 I/O 引脚作为输入时,设置 REN 位(禁用上拉电阻)。这表明上拉电阻主要用于防止未使用的引脚悬空,而不是为有条件连接的输入(例如按钮)提供上拉电阻。这个假设正确吗?可以为此目的使用内部上拉电阻吗?
技术库说如下:
这是否意味着 bank 3 没有上拉电阻,或者仅仅意味着它们不能使用 Verilog 重新启用?如果我手动清除 ASCII 比特流中的那个比特会发生什么?(我会尝试这个,但 iCEstick 评估板无法访问 bank 3 上的任何引脚 - 巧合? - 我不确定我是否想弄乱硬件。)
当我使用 I/O 引脚作为输出时,IE 位不会被清除,但输入引脚功能设置为 PIN_INPUT。这有什么影响,为什么要这样做?
yosys - 我们可以在 Yosys 脚本中包含变量吗?
我想通过分解常见参数来使我的 Yosys 脚本更加干燥,例如在以下示例中:
我还没有找到声明或取消引用变量的方法,有没有像 TCL ( set lib_file /long/path/to/lib/file
) 或 Bash ( export lib_file=/long/path/to/lib/file
) 中的方法?
verilog - 综合网表中多余的缓冲器/反相器
这是组合综合的另一个后续问题:更好的技术映射结果。
这是我的 Yosys TCL 控制脚本:
使用的osu018_stdcells.lib文件是Qflow版本 1.1包的一部分。
这是 test.v 文件:
Yosys (version 0.5+ (git sha1 f13e387, gcc 5.3.1-8ubuntu2 -O2 -fstack-protector-strong -fPIC -Os)
) 产生以下 test_synth.v 输出网表:
显然,该单元有 3 个实例,INVX1
本设计中的三个触发器各有一个。我本来期望这些反相器中只有一个及其在触发器CLK
输入之间共享的驱动网络。
在另一种设计中(大约有 30 个寄存器在时钟下降沿触发),我只看到了一个反相器,但它的输出通过每个触发器一个缓冲器,这也不理想。
有没有办法让 Yosys 在寄存器之间组合/共享这些资源?
yosys - 扩展现有单元库
我正在尝试创建自己的单元库以自定义映射过程。有没有人知道如何在工具中包含一个新的单元库?
embedded - HX1K 配置文件所需的大小(在“SPI 从机”模式下)
我正在修改 Olimex iCE40HX1K 板(针对 STM32F103 ma)的编程器,我还想实现“SPI 从机”模式以将图像直接配置到 RAM 中,而不使用串行闪存。
查看莱迪思“编程和配置指南”(第 11 页),在表 8 中指出 ICE40-LP/LX1K 的 EPROM 必须至少为 34112 字节。(这-我猜-意味着配置文件可以达到该大小)。但是,我(到目前为止)使用 icestorm 工具创建的所有图像都是 32220 个八位字节。
我在这里有点困惑。有人可以解释这两个数字之间的区别吗?
HX1K 需要 32220 或 34112 字节的配置文件吗?
yosys - 时序问题:模拟(iverilog、gtkwave)有效,硬件(yosys)无效
我正在学习verilog,尝试在ice40LX1K 板(olimex ice40HX1K + VGA I/O 板)上制作VGA 世界(一个弹跳球)中的“hello world”。
我有一个奇怪的问题:当我使用 iverilog + GTKWave 模拟我的设计时,它看起来工作得很好。但是硬件中的实现不起作用。
奇怪的是,在硬件实现中,球是不动的......并且它的位置全为零(0,0),尽管verilog代码永远不应该将它设置在那里。看起来改变 xpos_ball 或 ypos_ball 的值实际上并没有改变这些值。(硬件问题?yosys 问题)?在iverilog 模拟中,球的位置确实会按预期发生变化。
我不知道这是我自己的verilog代码中的错误(因为我是新手,这很可能),yosys中的问题,还是硬件中的问题(速度问题,是100 Mhz时钟到快?)还是别的什么?
有关如何解决此问题或此类问题的后续步骤的任何建议?我可以使用其他调试技巧吗?
(编辑:链接到实际的verilog代码被删除,因为不再相关)
克里斯托夫
constraints - Yosys 和/或 ABC 中的约束(时间/区域..)
我正在使用以下基本脚本来合成简单的加法器设计
随着使用
命令,ABC 只使用 AND、XOR 和 NOT(不自动添加)门来合成设计。
我关于这个问题的问题是;
1) 有什么方法可以强制 YOSYS 和/或 ABC 工具在整个设计中只使用一个通用门(例如 NAND)?
&
使用后
像命令。
2)有没有办法通过向库添加约束(时间/面积/优先级?...)来减少或最大化指定门的数量(例如异或)
或者
使用特殊的 YOSYS 和/或 ABC 命令?
提前谢谢了...