问题标签 [system-verilog]
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.
arrays - 使用 Verilog 查找数字数组中的最小值以实现优先级队列
我是 Verilog 的新手,但我有一个 16 个元素的数组(每个元素长 16 位),我希望找到数组的最小条目,返回最小值,然后重新排列所有条目最小值之后的数组,以便该数组是一个连续的条目块。我知道我必须使用比较器,但我真的不知道从哪里开始比较一大组数字并确定最小值。
编辑:我实际上在做的是一个优先队列。我已经实现了队列功能,但是我不想返回队列头部的内容,而是希望返回具有最小值的条目,并保持存储连续。
vhdl - 优化 fpga 实现的流水线吞吐量的最佳实践是什么?
例如,如何充分利用重定时和/或 c-slow 来充分利用给定的管道。
通过重定时,一些模块通过将移位寄存器放在输入上(前向寄存器平衡)获得更好的结果,而其他模块在输出上使用移位寄存器(后向寄存器平衡)做得更好。
现在我使用以下方法:
- 代码 hdl(在 verilog 中)
- 为特定模块创建时序约束
- 合成、映射、布局和路由(使用 ISE 13.1)
- 查看待改进模块的布局布线时序,以及最大逻辑电平数。
- 取这个数量的逻辑电平,并对要插入的触发器的数量进行有根据的猜测。
- 插入触发器,启用寄存器平衡,希望最好
就目前而言,这种方法是命中注定的。有时它会得到很好的结果,有时它是垃圾。那么,有什么好的方法可以提高这种重定时的成功率呢?
有什么工具可以帮助解决这个问题吗?此外,链接、论文和书籍推荐将不胜感激。
constants - 如何在verilog中使用const
而不是使用
我要使用
或者同样的事情
我可以在 verilog 中实现这个愿望吗?
verilog - 在工作之前等待posedge clk? - 如何
标有 (i) 的行,我想在将 outp 发送到输出端口之前等待 posedge clk。但是,当我尝试过类似 ;
它给出了错误
它给出了荒谬的答案/模拟输出。 在发送输出之前,我应该把什么东西放在那条线上等待 posedge clk ?
verilog - 使用总是@* | 意义和缺点
你能说那是什么意思吗
- 总是 @ *
使用该语句后是否有任何可能的副作用?
c++ - 是否可以将 System Verilog 函数编译为 C 或 C++?
我为一些用 System Verilog 编写的硬件开发了一个用 C++ 编写的高级模拟器。
System Verilog 代码包括许多只包含逻辑的函数(即,没有任何耗时,没有触发器)。我想在我的 C++ 模拟器中重用这段代码。
有没有办法通过以下方式在 C++(或 C,很容易链接到 C++)中重用这些函数:
- 在编译之前将系统 Verilog 转换为 C/C++?
- 将系统 Verilog 编译为 C/C++ 可调用的函数?
- 还有什么办法吗?
arrays - Verilog中的随机数数组
我想测试verilog模块的所有可能输入组合。我已经能够通过构建一个带有嵌套 for 循环的数组来生成这些输入。但是我想以随机顺序遍历数组。如何做到这一点,或者有没有办法生成一个包含所有可能输入的数组,这些输入已经是随机顺序的?
verilog - always_comb 构造的 Systemverilog 问题
我对这个 SystemVerilog 代码有疑问。这是代码:
我正在尝试使用 Booth 算法编写一个具有 32 位输入和 64 位乘积的乘法器。出现此错误:
always_comb 构造不会推断出纯粹的组合逻辑
为什么会发生这种情况?
bash - 使用命名管道创建读/写环境
我正在使用 RedHat EL 4。我正在使用 Bash 3.00.15。
我正在编写 SystemVerilog,我想模拟标准输入和标准输出。我只能使用文件,因为环境中不支持普通的标准输入和标准输出。我想使用命名管道来模拟标准输入和标准输出。
我了解如何使用 mkpipe 创建 to_sv 和 from_sv 文件,以及如何在 SystemVerilog 中打开和使用它们。
通过使用“cat > to_sv”,我可以将字符串输出到 SystemVerilog 模拟。但这也会输出我在 shell 中输入的内容。
如果可能的话,我想要一个外壳,它的作用几乎就像一个 UART 终端。我输入的任何内容都会直接输出到“to_sv”,而写入“from_sv”的任何内容都会被打印出来。
如果我完全错了,那么一定要建议正确的方法!太感谢了,
纳楚姆·卡诺夫斯基
hardware - 使用 for 循环在 Verilog 中指定变量范围
我正在尝试编写此代码:
基本上,我尝试写入 ( en
) 的位的位置会根据我正在与之交谈的地址而变化,具体取决于i
. 此代码不可合成,因为i
它不是常数。
有没有其他解决方法?我知道的唯一解决方法是写出这三个语句 CONST 次。我希望我最终不必这样做。还有其他解决方案吗?