问题标签 [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 投票
1 回答
140 浏览

yosys - Why does yosys renumber vector ports?

My top level verilog module declares signals for the four LEDs on the myStorm ice40 board, which are labelled "LED1-LED4".

I use the same numbering in the .pcf file:

But in the .blif output, yosys has renumbered the signals:

so arachne-pnr complains:

Does yosys expect that top level vector ports are always numbered from zero?

0 投票
1 回答
224 浏览

abc - 在 YOSYS 中运行 ABC 会返回“警告:检测到 1 个多输出门”

使用 YOSYS 时,我调用 abc 命令: abc -liberty mycells3.lib

mycells3.lib是一个简单的自定义技术库,基于 YOSYS 发行版中提供的示例库,我在其中添加了 ADDER 单元(名为 FAX1):

运行时,我收到以下警告: ABC: Warning: Detected 1 multi-output gates (for example, "FAX1") 确实没有我的模块使用这个单元格(这也可能是由其他原因引起的,但我的问题与这个事实无关)。我知道自由格式和 ABC 支持单元格中的多个输出。我的问题是如何使 ABC 的 YOSYS 接口接受多个输出单元?

我知道这是可能的,因为 Qflow 将 ABC 与包含具有多个输出的单元格的自由文件一起使用,例如,在文件“osu​​035_stdcells.lib”中,我们将 YC 和 YS 作为同一单元格的输出

0 投票
1 回答
134 浏览

yosys - 关于 Yosys 中带有私有名称的电线的一些问题

在我使用 Yosys 编译的其中一个设计中,我看到我们可以拥有私有电线(具有私有名称的电线)。例如,$0_s0[127:0]。所以,我对他们有几个问题:

  1. 为什么我们在 Yosys 中有私人电线(什么场景)?

  2. 它是否总是被转换为唯一的名称。例如,当我转储整个设计(使用 write_verilog)时,它给我的名称是否与我仅转储包含该私有线路的模块时相同?

0 投票
1 回答
565 浏览

verilog - Yosys中计算的verilog参数

我目前正在通过使用 Yosys 将代码合成到 iCE40 开发板来学习 Verilog。我坚持在verilog中使用参数。我有以下代码:

当我编译代码时:

我收到一个错误:

但是,如果我使用注释掉的行,一切都会按预期工作。

如何使用给定的参数计算“bittmrwidth”?

0 投票
1 回答
3297 浏览

yosys - 如何在 IceStorm 的 512x8 读取模式下使用 iCE40 4K 块 RAM?

我想弄清楚如何在我的 iCE40HX-8K 分线板上使用块 RAM。我想以 512x8 配置访问它,据我从文档中可以看出,IceStorm 项目支持它,但我无法让它像我预期的那样工作。

如果我理解正确,将 READ_MODE 参数设置为 1 的 SB_RAM40_4K 原语初始化应该将块设置为 512x8 读取模式,该模式使用 9 位读取地址,并在每个地址读取 8 位数据。

这是我能想到的最简单的例子。它设置了一个带有一些预初始化内存的 SB_RAM40_4K,并直接读取板载 LED 的引脚。

hx8kboard.pcf

顶部.v

raddr == 0 时的 LED 输出

raddr == 1 时的 LED 输出

我认为 512x8 模式下的地址 1 将是 RAM 中的第二个 8 位,即8'h22or 8'b0010010。相反,我得到8'h33or 8'b00110011。经过一点实验,这似乎是 16 位读取的低 8 位。

我不确定我哪里出错了。任何帮助理解这里发生的事情将不胜感激。谢谢!

0 投票
2 回答
279 浏览

yosys - 编程iceStorm二进制文件到哪个地址?

我正在尝试此处提供的第一个示例:http: //www.clifford.at/icestorm/

我正在尝试使用 digilent adept 程序 https://reference.digilentinc.com/reference/software/adept/start?redirect=1#software_downloads在 Windows 中对 iCEblink40-HX1K 板进行编程

当我启动 Adept 时,程序说:

正在加载板信息... 警告:找不到特定的板信息 已加载默认信息。

当我从 iCEstorm 选择 example.bin 程序时,adept 程序显示“地址无效。地址必须输入为二进制、十进制或十六进制值。”。

于是我直接输入零,点击“文件>>设备”上传二进制文件,程序说:

成功从 F:\me\fpga\example.bin 读取 32220 字节。

然而,该板已经附带的“闪烁灯”演示仍在继续运行。似乎什么都没有改变。

我认为 example.bin 文件中不包含正确的地址,或者缺少 digilent adept 程序的板信息是问题的原因。

无论如何,有人知道它可能是什么地址吗?

0 投票
1 回答
735 浏览

verilog - 如何将时钟门映射到技术库单元

我在设计中有以下时钟门:

当使用 Yosys 进行综合时,生成的网表会(用于reg enabled)实例化一个\$_DLATCH_P_未包含在我正在使用的标准单元库文件中的单元,即使该库确实包含锁存器。

enabled我不想尝试将此设计与库中的标准锁存单元匹配,而是使用库提供的时钟门,而不是包含 AND 门,它具有如下接口:

我已经尝试了以下方法:

  1. 只需将my_clkgate模块源的内容替换为实例LIB_GATE并转发所有端口连接。Yosys 抱怨说这LIB_GATE“不是设计的一部分”。
  2. 除了第1点,声明LIB_GATE为空模块(如上图)。这具有留下两个空模块的效果,LIB_GATEmy_clkgate在生成的网表中。
  3. 我还尝试将extract命令与库的 Verilog 模型一起使用,不幸的是它无法解析(我怀疑该文件包含一些不受支持的 Verilog 结构,例如specify块)。

当然,我可以编写一个脚本来对网表进行后处理以替换my_clkgateLIB_GATE实例,但我想知道 Yosys 是否可以为我做到这一点?

作为参考,这是我正在使用的“synth.ys”文件:

其中“yosys_readfiles.ys”是一个文件,其中包含read_verilog一行,所有输入文件后跟一行。hierarchy -check -top my_design

0 投票
1 回答
605 浏览

yosys - 组合综合:更好的技术映射结果

使用以下脚本,我正在合成一个标准单元库,我有一个 lib 文件my_library.lib

虽然这通常有效,但我发现某些逻辑没有有效地映射。例如,我有以下 4 路多路复用器的 Verilog 模型:

Yosys 将其综合为以下门级网表:

由于我正在使用的库已经有一个MXI4单元格,我本来希望类似于以下内容:

我想知道如何指导 Yosys 使用MXI4单元而不是上面的级联 NAND 实例,因为这会导致面积显着减少。虽然对于这个特定的单元格,我可以使用与此答案中描述的相同的技术来手动映射到MXI4单元格,但我担心我的设计中可能还有其他(更复杂的)区域,这样的手动映射要么不是明显和/或不可行。

我尝试的一件事是将以下选项添加到我在 Reddit 上找到的abc综合脚本中的命令中:

但它也没有解决问题。(我也找不到关于其中一些 ABC 命令的任何文档,任何帮助也将不胜感激。)

0 投票
1 回答
413 浏览

verilog - 当模块是 BLIF 时,如何让多位端口在 Yosys 中工作?

我不知道如何在 Yosys 中单独合成模块。考虑这个简单的两模块示例:

底部.v

顶部.v

现在,将这些合成在一起可以按预期工作:

但是,如果我首先从bottom.v合成bottom.blif ,我会收到一条错误消息,指出模块底部没有端口输出:

为什么会这样?谷歌搜索问题,我发现在我不完全理解的上下文中对层次结构命令的引用。我曾尝试在synth之前运行该命令,但它不会影响结果。

0 投票
1 回答
232 浏览

optimization - 为什么这个 MUX 带有 const。输入没有优化?

这是组合综合的后续问题:更好的技术映射结果

我正在使用0.5+ (git sha1 f13e387, gcc 5.3.1-8ubuntu2 -O2 -fstack-protector-strong -fPIC -Os)带有以下合成脚本的 Yosys(版本):

...综合以下 Verilog 代码 (test.v):

综合结果包括一个LIB_MUX4具有两者的实例,S0并由S1两个实例绑定LIB_TIELO

为什么 Yosys 看不到这一点S0并且S1保持不变并将输出减少到这样的东西

反而?

我尝试使用clean -purge,opt_muxtreeopt_clean命令,但没有成功 - 静态LIB_MUX实例始终在生成的网表中。