问题标签 [register-transfer-level]

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 回答
5700 浏览

verilog - irun, ncverilog 无法确定头文件

irun 无法确定define.h 文件。当我像这样使用 irun

我收到这样的错误消息。

irun: E.FMUK 无法确定文件 m_def.h 的类型。

以上文件由所有'define xxxx. 我怎么解决这个问题?

0 投票
2 回答
7907 浏览

system-verilog - 系统 Verilog always_latch 与 always_ff

刚开始学习System Verilog。我对语句always_ffalways_latch. 前者将用作:

而后者:

第一个仅由时钟的上升沿激活,并与非阻塞分配相结合产生 FF。

显然被always_latch认为代表一个锁存器,但是为什么要使用非阻塞赋值呢?always_comb使用阻塞分配不是更好吗?

0 投票
1 回答
659 浏览

linux - 如何在从同一脚本调用的新 shell 中继续运行脚本?

我是这个领域的超级新手,所以对于我可能说的任何愚蠢的话,我提前道歉!:D

我使用 Cadence 的 RTL 编译器,我试图自动化合成如此多位于不同目录中不同大小的设计的过程,并生成报告并将它们保存在每个文件夹中。我正在使用 tcl 脚本在 Linux 终端中运行 RTL 程序的命令。

首先,我必须在 RTL 环境之外进行一些初始化。所以我创建了一个名为setup.tcl的脚本文件,我从 Linux 终端调用它,然后调用 RTL 程序本身(rc):

这将在同一终端内运行 RTL 编译器程序,因此现在可以输入编译器命令。

现在,我需要一个名为rtl_script.tcl的 RTL 命令脚本来运行 RTL 环境中的所有命令,它可以正常工作:

我只需要一个命令来运行整个例程,这样我就可以循环它和一切。

更准确地说,需要一个名为master.tcl的主脚本,它首先运行setup.tcl,打开 RTL 编译器,然后在 rc 环境中运行rtl_script.tcl 。全部在同一个终端完成。就像是:

问题是当我输入命令source master.tcl时,shell 在进入 RTL 环境后停止并且它不运行rtl_script.tcl。任何帮助,将不胜感激。谢谢。

0 投票
2 回答
2137 浏览

verilog - 创建不同宽度的脉冲

我编写了以下代码,它产生不同宽度的脉冲。我希望代码根据选择线产生单个脉冲。如果选择线是

00 脉冲宽度 = 1 us,01 脉冲宽度 = 10 us。. 11 脉冲宽度 = 1000 us

输入时钟为 10 Mhz。但是根据代码,如果我不提供选择线的任何其他值,我会得到连续脉冲。我怎样才能只实现一个脉冲?

考虑到电路的综合和硬件,这段代码是否具有良好的编码风格?如果不是我应该应用哪些更改?...

0 投票
2 回答
1352 浏览

python - 使用 Python 进行 IC 设计/验证

我看到这个领域的很多工作都要求有 Perl 和 Python 脚本编写经验。如果有的话,很少有 C 编程。其中 HDL 是主要关注点(verilog、VHDL)以及数字系统设计知识。

在这些工作角色中,Python 通常是作为行业标准还是“非官方标准”使用?我对 Python 没有什么经验,我做的是数学/科学应用程序,它最有用的应用程序。

有没有人在这个工作领域对 Python 有很多经验,并且知道它是否对基于许可证的软件/工具完全有益?

0 投票
1 回答
1489 浏览

system-verilog - System Verilog中的位减少一元运算符

系统verilog中的总线或信号的比特减少有限制吗?

我想在下面的节点中检测到至少一个“1”,并且我正在使用“OR”运算符,但是在某些情况下它无法正常工作。这是我在模拟中看到的行为:

OR 一元位减少运算符是否限制为 41 位?这意味着我不能减少等于或大于 42 位的总线/节点?

提前致谢

这是代码:

0 投票
2 回答
34950 浏览

verilog - $display vs $strobe vs $monitor in verilog?

verilog中的$display vs $strobe vs $monitor有什么区别?每个在事件队列中的时间都适用,语句如何交互?任何陈述都可以抑制另一个陈述吗?

0 投票
0 回答
222 浏览

synthesis - 用 Vivado 合成 SystemC 不能提供所需的 VHDL 信号

我正在写一个项目是systemC,我有几个sc_in<bool>sc_out<bool>我的模块之间的通信。当我合成项目时,在 vhdl 代码中生成每个sc_insc_out创建如下信号块:

这对于我的硬件设计来说太复杂了,因为我只想像这样声明 1 个信号:

将变量声明为sc_bit,我对生成的 VHDL 没有任何问题,但是在我尝试在我的信号中使用sc_in<sc_bit>而不是sc_in<bool>在模块之间进行通信之后,项目不再编译。如果我分配这样的值:

我收到以下消息:

../../../../source.cpp:67:16:错误:请求从“int”转换为非标量类型“sc_dt::sc_bit”

如果我分配这样的值:

我收到以下消息:

../../../../source.cpp:68:14: 错误: '((source*)this)->source::asdf = '0'' 中的 'operator=' 不匹配

有没有其他方法可以在 SystemC 中声明 I/O 信号,以便在综合后我std_logic在 VHDL 中只有 1 个信号?

测试台中的SC_MODULE源代码是这样的

头文件:

cpp文件:

0 投票
1 回答
878 浏览

verilog - 系统 Verilog:循环变量未初始化为常量 ELAB-800

在尝试编译用 System Verilog 编写的 RTL 设计时,我使用的是 Synopsys Design Compiler,但收到以下错误消息:

错误:/home/rtl/mydesign.sv:66:循环变量未初始化为常量。(ELAB-800)

这是有问题的代码:

MYPARAM1 是在模块实例化时设置的参数。

它抱怨的行是:

我的代码在 ncverilog 中运行得很好并获得了正确的输出。

有没有另一种方法来编写这个模块,这样我就不会收到这个错误?

0 投票
1 回答
3859 浏览

verilog - Verilog 在不改变内部状态的情况下对模块输出施加强制

在我的测试平台中,我想通过在 RTL 中强制某个模块的输出来模拟系统条件:

但是当使用force命令执行此操作时,模块内部驱动输出的导线也会被强制,这会导致系统的其他部分也受到影响。我真正需要的是强制模块的输出,而不改变其内部状态,如下所示:

在此处输入图像描述

我根本无法修改 RTL 代码。有没有办法从测试平台实现这一目标?