问题标签 [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.

0 投票
2 回答
134 浏览

interpretation - yosys rtlil 转储不完整

我试图弄明白 yosys 对我的 verilog 源所做的事情,所以我在我的脚本中插入了一些转储进程。我假设这些在手册中描述为 ILANG?在阅读 verilog 后立即查看转储,在我看来,重要的东西已经丢失了。例如,我有一组映射 ascii 字母代码的参数定义。这些在 ILANG 中列出,但没有任何价值。

是否有描述此输出的格式和解释的文档?Yosys 似乎丢弃了我的大部分代码,到目前为止,我还无法确定它丢弃的内容与我的源代码有何关联。

0 投票
1 回答
219 浏览

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 处理时产生完全相同的比特流?

0 投票
1 回答
256 浏览

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 评估板上使用的引脚的以下对应关系:

但是,如果可能的话,我想交叉检查这些信息。

0 投票
2 回答
393 浏览

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。这有什么影响,为什么要这样做?

0 投票
1 回答
493 浏览

yosys - 我们可以在 Yosys 脚本中包含变量吗?

我想通过分解常见参数来使我的 Yosys 脚本更加干燥,例如在以下示例中:

我还没有找到声明或取消引用变量的方法,有没有像 TCL ( set lib_file /long/path/to/lib/file) 或 Bash ( export lib_file=/long/path/to/lib/file) 中的方法?

0 投票
1 回答
135 浏览

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 在寄存器之间组合/共享这些资源?

0 投票
1 回答
502 浏览

yosys - 扩展现有单元库

我正在尝试创建自己的单元库以自定义映射过程。有没有人知道如何在工具中包含一个新的单元库?

0 投票
1 回答
84 浏览

embedded - HX1K 配置文件所需的大小(在“SPI 从机”模式下)

我正在修改 Olimex iCE40HX1K 板(针对 STM32F103 ma)的编程器,我还想实现“SPI 从机”模式以将图像直接配置到 RAM 中,而不使用串行闪存。

查看莱迪思“编程和配置指南”(第 11 页),在表 8 中指出 ICE40-LP/LX1K 的 EPROM 必须至少为 34112 字节。(这-我猜-意味着配置文件可以达到该大小)。但是,我(到目前为止)使用 icestorm 工具创建的所有图像都是 32220 个八位字节。

我在这里有点困惑。有人可以解释这两个数字之间的区别吗?

HX1K 需要 32220 或 34112 字节的配置文件吗?

0 投票
1 回答
357 浏览

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代码被删除,因为不再相关)

克里斯托夫

0 投票
1 回答
749 浏览

constraints - Yosys 和/或 ABC 中的约束(时间/区域..)

我正在使用以下基本脚本来合成简单的加法器设计

随着使用

命令,ABC 只使用 AND、XOR 和 NOT(不自动添加)门来合成设计。

我关于这个问题的问题是;

1) 有什么方法可以强制 YOSYS 和/或 ABC 工具在整个设计中只使用一个通用门(例如 NAND)?

&

使用后

像命令。

2)有没有办法通过向库添加约束(时间/面积/优先级?...)来减少或最大化指定门的数量(例如异或)

或者

使用特殊的 YOSYS 和/或 ABC 命令?

提前谢谢了...