问题标签 [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.
verilog - 假设()不适用于初始语句
对于https://i.imgur.com/NCUjYmr.png,为什么信号“重置”最初不假定为“1”?任何人都知道为什么假设不起作用?
fpga - LUT 级联是否可以通过任何工具与 iCE40 FPGA 中的进位链同时使用?
我尝试构建以下内容:
我用 Verilog 编写,并实例化 SB_LUT4、SB_CARRY、SB_DFFESS 原语。为了尝试获得 LUT 级联,我编辑了一个 .pcf 约束文件(set_cascading...)。但是,综合 (Lattice IceCube 2017.01.27914) 忽略了约束: W2401:忽略 LUT 实例“filt.blk_0__a.cmbA.ll”的级联约束,因为它在 LogicCell 中与 DFF/CARRY 打包在一起
在令人钦佩的 Project IceStorm 中,我看不出为什么不能使用级联 LUT 和进位链的组合。
我知道有一个(稍微)更新的 IceCube2 可用。我知道 Yosys/arachne-pnr/icepack/iceprog 工具链。但在更改工具链之前,谨慎地询问是否有人已经解决了这个问题,或者是否确实不可能将进位链和 LUT 级联结合起来?
更新 - Yosys/arachne-pnr/icetools 的快速安装在没有警告的情况下合成了我的设计,但 ice40_viewer(和日志输出)中的可视化表明未使用链式 lut。
yosys - 如何使用 Yosys 将 Verilog 总线展平到单独的电线
这里简单的问题。Yosys 中是否有一种方法可以展平阵列?IE:
wire [1:0] rdata;
变成wire rdata_1; wire rdata_0;
fpga - 莱迪思 iCE40 JTAG
我是 FPGA 新手,我正在尝试在 Lattice iCE40 FPGA 上安装一个有效的 JTAG。我使用的开发板来自 Olimex,具有 iCE40-HX8K FPGA。
我正在使用 urjtag 作为 PC 应用程序,并尝试使用 DirtJTAG 和 USB Blaster 克隆作为程序员(闪存到 STM32 BluePill 板上)。Olimex 板没有为 JTAG 填充上拉电阻,所以我焊接了它们(TMS、TDI 和 TCK 为 10k)。但最终结果是一样的:我无法让 jtag 识别 FPGA,错误是:
检查 JTAG 连接器的引脚排列,它是正确的。万用表测试表明没有短路,没有焊桥,上拉电阻值正确,工作正常,符合预期。
用 Altera FPGA 板尝试了我的设置,它正在工作,它将检测到 FPGA。此外,尝试了 eBay UsbBlaster 克隆,它不适用于 iCE40,但适用于 Altera FPGA。
我可以刷外部闪存(使用其他工具和编程器),但我希望能够使用 JTAG,这样我就可以刷入板载 SRAM。
任何想法/提示什么可能是错误的/接下来要尝试什么?
json - 如何在 YosysJS 中使用“write_json”命令
我是 Yosys 的新手,并尝试使用 YosysJS 生成输入 verilog 文件的 json 描述。有关于如何在 Yosys 中使用该命令的文档。但我不明白如何在 YosysJS 中使用它。我可以使用以下代码在综合的不同阶段之后绘制 RTL 图:
我想知道需要在 ys.run() 函数中作为参数运行什么命令。
谢谢你。
yosys - 使用真实模块参数的 yosys 错误
如果我在实例化模块时设置类型实参数,则 yosys 似乎存在错误。我在 Win7x64 上使用“官方”0.7 二进制版本。例如,我有以下模块:
如果我用两个参数的整数值实例化它,这个模块工作正常。但是如果我用实际值实例化它,我会收到关于字符串值的奇怪警告。例如,如果尝试为 in_freq 传递 12000000.0:
我收到警告:
警告:用 uart_top.v:45 处的字符串替换浮点参数 baud_clk_div.$1 = 12000000.000000。
然后该模块似乎将“字符串”解释为模块内的巨大实际值:
警告:在 freq_divider.v:18 将实际值 1.277202e+035 转换为二进制 0。
这是真正的错误还是我犯了一些新手错误。我只做了大约两个星期的verilog编码。
里克·摩尔
vhdl - 如何在 VHDL 中编写具有输入相关范围的 std_logic_vector 赋值?
我正在尝试将 std_logic_vector 的某些部分复制到另一个位置(索引),具体取决于输入。这可以在 Vivado 中合成,但我想使用另一个工具(SymbiYosys,https://github.com/YosysHQ/SymbiYosys)进行形式验证。SymbiYosys 可以使用 Verific 作为前端来处理 VHDL,但 Verific 不接受这一点。这是重现问题的一小段代码。Verific 抱怨“左范围界限不是恒定的”。那么,是否有一种解决方法可以让 Verific 接受这样的变量范围分配?
我已经找到了这篇文章VHDL: slice a different part of an array建议使用循环并按位分配值,但现在我不想更改我的代码,因为它可以与 Vivado 一起使用。此外,我认为这样的循环会损害代码的可读性,可能还会损害实现效率。因此,我正在寻找一种不同的方法(也许是一种将这个错误变成警告的方法,或者是不那么激烈的代码修改)。
verilog - 使用yosys在verilog中的case状态下增加整数
我不知道它是否符合 Verilog-2005 标准,但我设法用 «synplify pro» 和 «icarus verilog» 编译了以下代码。
fsm_step_number 整数的增量不适用于晶格综合程序 (LSE),也不适用于 Yosys。我的 yosys 有语法错误:
你知道是否可以用 Yosys 做这样的思考(将整数递增到案例状态)?
yosys - Yosys 将而不是门解释为 nand 以进行可视化
我试图结合https://github.com/nturley/netlistsvg将 yosys 纯粹用于可视化。一个使用 yosys 生成的 json 文件并从中创建 SVG 的工具。如果我有verilog代码:
我想生成一个具有 NAND 门的 SVG 文件。我使用以下 Yosys 命令:
Yosys 将 assign 语句解释为 AND 门和 NOT 门,并输出以下 json:
是否有强制 yosys 将该行解释为 nand 门并输出 json 更像这样:
或者这不是可以做的事情。
yosys - Yosys:复位时触发器的可变初始值
我试图在重置时为 FF 分配一个初始值。初始值是电路的输入。在单元库中,我添加了以下 FF:
我试图合成到这个 FF 的部分 Verilog 代码是
但是,当我运行综合时,它使用来自 Yosys 库 ( ) 的内置 FF$_DFFSR_PPP_
之一,而忽略了用户定义单元库中的一个。如果我在用户定义的库中包含一个 set-reset (SR) FF,如下所示,由 Yosys 拾取。
前一个适用于 Synopsys DC,但不适用于 Yosys。似乎 Yosys 中的方程clear
或preset
没有被拾取。
有什么办法让它工作吗?我错过了什么吗?
编辑:我正在添加一个完整的示例,以防有人想要运行它。
加速器
asic_cell_yosys.lib
会计文件