问题标签 [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 投票
1 回答
197 浏览

verilog - 在verilog中执行非阻塞语句

我是verilog的新手,谁能解释一下这些语句是如何执行的。

据我所知,首先执行右侧。因此,首先计算 A、D、G、K 的值。在计算 K 的值时,将根据 G 的值执行第一个或第二个表达式。谁能解释一下这个操作。还请说明最后一条语句是如何合成的,因为整个代码都在一个始终块内并且具有正沿时钟。提前致谢。

0 投票
1 回答
33 浏览

performance - 程序集 reg_reg 或 reg_immediate

在相同的 cpu 架构上执行,其中哪些需要更少的时钟周期(#RTL)

我的意思是,即使是常量也需要从寄存器中获取,不是吗?感谢你

0 投票
1 回答
456 浏览

arrays - 在数组中包装接口

我正在使用用于绑定参数化模块的接口数组。
我的问题是我不能直接将几个简单的接口连接成一个接口数组。

这是我使用的界面的简化版本:

我想做的是:

我找到了一种解决方法,使用一个独立分配每条线的模块:

使用它,我必须将每个成员元素“投射”到每个数组成员中。使用前面的示例:

我不喜欢它,因为使用参数化模块的主要想法是让我的 RTL 更清晰、更短且可维护。

我很自然地将这个passthrough模块的实例化放在一个宏中,但我仍然不满意。

然后我偶然发现了嵌入在界面中的任务。虽然我对 (S)Verilog 中的任务不太熟悉,所以我认为我的想法不会奏效。然而,这是我尝试过的:

这种方法的优点是每次我需要连接 2 个通道时都不需要创建一个模块。代码行也会更短。

不幸的是,我的编译器(ncsim)在其自己的声明中无法识别channel为接口(我想它需要endinterface关键字才能在命名空间中考虑它)。

如果有人有比我更清洁的解决方案来解决这个问题,我将不胜感激。

最后一件事,一切都需要可合成。

0 投票
4 回答
1588 浏览

vhdl - Is it necessary to seperate combinational logic from sequential logic while coding in VHDL, while aiming for synthesis?

I am working on projects which requires synthesis of my RTL codes specifically for ASIC development. Given the case, how much important is it, to separate sequential logic from differential logic while designing my RTLs ? And if it is important, then what should be my approach while designing, as if how should I differentiate my design for sequential and combinational logic?

0 投票
1 回答
88 浏览

vhdl - Query for VHDL synthesis for IC Design (Not FPGA), specifically in case of variable assignment

If for a given process, I declare a variable (let's say a 1 bit variable, variable temp : std_logic;) then can I assign a value to the variable if a given condition returns true, i.e.

?? Will this logic be synthesizable for ASICs?

0 投票
1 回答
134 浏览

verilog - verilog flop RTL 仿真

假设我们有一个 D 触发器。在 RTL 模拟中(这里没有 t_hold 和 t_setup),如果它的数据输入和 clk 同时变化,那么输出应该是什么?clk 上升之前的值还是之后的值?

更难的是,如果 data_in 和时钟连接到同一根线。触发器的输出应该是什么?一直为零?还是一直一个?

我在 ModelSim 中尝试了最后一种情况,我得到输出一直是 1,而我希望它是 0。我希望 RTL​​ 仿真中的触发器应该模拟时钟沿之前的值。

0 投票
1 回答
161 浏览

verilog - SystemVerilog 优先级修饰符使用

我正在阅读有关 SV 优先级关键字的信息。我在 Sutherland 撰写的论文中找到了以下示例: 在此处输入图像描述

如果不使用 {priority},我不太确定为什么我们会看到模拟合成不匹配。假设我们不使用 {priority} 并且 {IRQ} 总是一个热点。在这种情况下,即使 DC 优化掉优先级编码器逻辑,sim 和综合也应该始终匹配。不是这样吗?任何时候 IRQ 都可以取 4 个值中的任何一个。

我不确定我错过了什么。

0 投票
3 回答
3391 浏览

verilog - SystemVerilog Case 中的默认语句

我试图了解以下情况:

带有enum_t类型 in case 表达式的 case 语句:

我不确定或不清楚以下内容:

  • 没有default case声明可以result吗?这case_expression是一个enum只有 5 个有效值的值。但是它是3位。那么综合工具将如何评估这个逻辑呢?它会推断闩锁吗?
  • 所有案例项目都是互斥的。那么我可以在这里使用unique关键字来帮助综合工具优化设计吗?

我在合成方面没有太多经验。因此,我将不胜感激任何反馈。谢谢!

0 投票
1 回答
114 浏览

scala - Scopes in Chisel and scala

I am new to chisel and I have designed basic circuits and a simple risc-v processor with it but I still can't figure out how the scope works in Scala/ Chisel. Considering the following simple counter:

While trying to compile the above code, the compiler give an error that log2ceil is not defined. But if I use util.log2ceil it works fine. This is true for all util functions such as Cat, isPow2 etc. I know that the import chisel3._ should have imported all the necessary functions but it seems that I am missing something here. Can someone help me out?

0 投票
1 回答
463 浏览

scala - 凿子中的电力操作员

我试图在 Chisel 中找到相当于 Verilog 幂运算符 ** 的东西。我浏览了Chisel 备忘单教程,但没有找到我想要的东西。在浏览了用 Chisel 编写的设计后,我发现log2xx函数是流行的选择,而幂运算符从未使用过。当然,我总是可以使用移位运算符来获得 2 的幂,但我希望 Chisel 中有通用的幂运算符。我尝试使用 scala 的数学函数来完成这项工作,但出现编译错误。