问题标签 [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.
verilog - irun, ncverilog 无法确定头文件
irun 无法确定define.h 文件。当我像这样使用 irun
我收到这样的错误消息。
irun: E.FMUK 无法确定文件 m_def.h 的类型。
以上文件由所有'define xxxx
. 我怎么解决这个问题?
system-verilog - 系统 Verilog always_latch 与 always_ff
刚开始学习System Verilog。我对语句always_ff
和always_latch
. 前者将用作:
而后者:
第一个仅由时钟的上升沿激活,并与非阻塞分配相结合产生 FF。
显然被always_latch
认为代表一个锁存器,但是为什么要使用非阻塞赋值呢?always_comb
使用阻塞分配不是更好吗?
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。任何帮助,将不胜感激。谢谢。
verilog - 创建不同宽度的脉冲
我编写了以下代码,它产生不同宽度的脉冲。我希望代码根据选择线产生单个脉冲。如果选择线是
00 脉冲宽度 = 1 us,01 脉冲宽度 = 10 us。. 11 脉冲宽度 = 1000 us
输入时钟为 10 Mhz。但是根据代码,如果我不提供选择线的任何其他值,我会得到连续脉冲。我怎样才能只实现一个脉冲?
考虑到电路的综合和硬件,这段代码是否具有良好的编码风格?如果不是我应该应用哪些更改?...
python - 使用 Python 进行 IC 设计/验证
我看到这个领域的很多工作都要求有 Perl 和 Python 脚本编写经验。如果有的话,很少有 C 编程。其中 HDL 是主要关注点(verilog、VHDL)以及数字系统设计知识。
在这些工作角色中,Python 通常是作为行业标准还是“非官方标准”使用?我对 Python 没有什么经验,我做的是数学/科学应用程序,它最有用的应用程序。
有没有人在这个工作领域对 Python 有很多经验,并且知道它是否对基于许可证的软件/工具完全有益?
system-verilog - System Verilog中的位减少一元运算符
系统verilog中的总线或信号的比特减少有限制吗?
我想在下面的节点中检测到至少一个“1”,并且我正在使用“OR”运算符,但是在某些情况下它无法正常工作。这是我在模拟中看到的行为:
OR 一元位减少运算符是否限制为 41 位?这意味着我不能减少等于或大于 42 位的总线/节点?
提前致谢
这是代码:
verilog - $display vs $strobe vs $monitor in verilog?
verilog中的$display vs $strobe vs $monitor有什么区别?每个在事件队列中的时间都适用,语句如何交互?任何陈述都可以抑制另一个陈述吗?
synthesis - 用 Vivado 合成 SystemC 不能提供所需的 VHDL 信号
我正在写一个项目是systemC,我有几个sc_in<bool>
和sc_out<bool>
我的模块之间的通信。当我合成项目时,在 vhdl 代码中生成每个sc_in
并sc_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文件:
verilog - 系统 Verilog:循环变量未初始化为常量 ELAB-800
在尝试编译用 System Verilog 编写的 RTL 设计时,我使用的是 Synopsys Design Compiler,但收到以下错误消息:
错误:/home/rtl/mydesign.sv:66:循环变量未初始化为常量。(ELAB-800)
这是有问题的代码:
MYPARAM1 是在模块实例化时设置的参数。
它抱怨的行是:
我的代码在 ncverilog 中运行得很好并获得了正确的输出。
有没有另一种方法来编写这个模块,这样我就不会收到这个错误?