问题标签 [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.
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?
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 与包含具有多个输出的单元格的自由文件一起使用,例如,在文件“osu035_stdcells.lib”中,我们将 YC 和 YS 作为同一单元格的输出
yosys - 关于 Yosys 中带有私有名称的电线的一些问题
在我使用 Yosys 编译的其中一个设计中,我看到我们可以拥有私有电线(具有私有名称的电线)。例如,$0_s0[127:0]。所以,我对他们有几个问题:
为什么我们在 Yosys 中有私人电线(什么场景)?
它是否总是被转换为唯一的名称。例如,当我转储整个设计(使用 write_verilog)时,它给我的名称是否与我仅转储包含该私有线路的模块时相同?
verilog - Yosys中计算的verilog参数
我目前正在通过使用 Yosys 将代码合成到 iCE40 开发板来学习 Verilog。我坚持在verilog中使用参数。我有以下代码:
当我编译代码时:
我收到一个错误:
但是,如果我使用注释掉的行,一切都会按预期工作。
如何使用给定的参数计算“bittmrwidth”?
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'h22
or 8'b0010010
。相反,我得到8'h33
or 8'b00110011
。经过一点实验,这似乎是 16 位读取的低 8 位。
我不确定我哪里出错了。任何帮助理解这里发生的事情将不胜感激。谢谢!
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 程序的板信息是问题的原因。
无论如何,有人知道它可能是什么地址吗?
verilog - 如何将时钟门映射到技术库单元
我在设计中有以下时钟门:
当使用 Yosys 进行综合时,生成的网表会(用于reg enabled
)实例化一个\$_DLATCH_P_
未包含在我正在使用的标准单元库文件中的单元,即使该库确实包含锁存器。
enabled
我不想尝试将此设计与库中的标准锁存单元匹配,而是使用库提供的时钟门,而不是包含 AND 门,它具有如下接口:
我已经尝试了以下方法:
- 只需将
my_clkgate
模块源的内容替换为实例LIB_GATE
并转发所有端口连接。Yosys 抱怨说这LIB_GATE
“不是设计的一部分”。 - 除了第1点,声明
LIB_GATE
为空模块(如上图)。这具有留下两个空模块的效果,LIB_GATE
并my_clkgate
在生成的网表中。 - 我还尝试将
extract
命令与库的 Verilog 模型一起使用,不幸的是它无法解析(我怀疑该文件包含一些不受支持的 Verilog 结构,例如specify
块)。
当然,我可以编写一个脚本来对网表进行后处理以替换my_clkgate
为LIB_GATE
实例,但我想知道 Yosys 是否可以为我做到这一点?
作为参考,这是我正在使用的“synth.ys”文件:
其中“yosys_readfiles.ys”是一个文件,其中包含read_verilog
一行,所有输入文件后跟一行。hierarchy
-check -top my_design
yosys - 组合综合:更好的技术映射结果
使用以下脚本,我正在合成一个标准单元库,我有一个 lib 文件my_library.lib
:
虽然这通常有效,但我发现某些逻辑没有有效地映射。例如,我有以下 4 路多路复用器的 Verilog 模型:
Yosys 将其综合为以下门级网表:
由于我正在使用的库已经有一个MXI4
单元格,我本来希望类似于以下内容:
我想知道如何指导 Yosys 使用MXI4
单元而不是上面的级联 NAND 实例,因为这会导致面积显着减少。虽然对于这个特定的单元格,我可以使用与此答案中描述的相同的技术来手动映射到MXI4
单元格,但我担心我的设计中可能还有其他(更复杂的)区域,这样的手动映射要么不是明显和/或不可行。
我尝试的一件事是将以下选项添加到我在 Reddit 上找到的abc
综合脚本中的命令中:
但它也没有解决问题。(我也找不到关于其中一些 ABC 命令的任何文档,任何帮助也将不胜感激。)
verilog - 当模块是 BLIF 时,如何让多位端口在 Yosys 中工作?
我不知道如何在 Yosys 中单独合成模块。考虑这个简单的两模块示例:
底部.v
顶部.v
现在,将这些合成在一起可以按预期工作:
但是,如果我首先从bottom.v合成bottom.blif ,我会收到一条错误消息,指出模块底部没有端口输出:
为什么会这样?谷歌搜索问题,我发现在我不完全理解的上下文中对层次结构命令的引用。我曾尝试在synth之前运行该命令,但它不会影响结果。
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_muxtree
和opt_clean
命令,但没有成功 - 静态LIB_MUX
实例始终在生成的网表中。