- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个模块层次结构,我正在尝试执行 force
在不同的模块接口(interface)上获得不同的值。我正在研究一个组件,其任务是将事务注入(inject)层次结构中的模块,绕过层次结构中更高模块的驱动器。我以为我可以使用 force
在控制信号上,以便从更高的模块脱离驱动器并开始驱动到感兴趣的模块。所以我一直在尝试看看力量是如何起作用的。完整代码在 http://www.edaplayground.com/x/69PB .
特别是,我试图了解这两个语句在 initial
中的效果。堵塞:
force u_DataReceiveTop.u_DataReceiveWrap.DataReceiveIfWrp_inst.valid = 1'b0;
force u_DataReceiveTop.valid = 1'b1;
u_DataReceiveTop.u_DataReceiveWrap.DataReceiveIfWrp_inst.valid == 0
u_DataReceiveTop.valid == 1
u_DataReceiveTop.u_DataReceiveWrap.DataReceiveIfWrp_inst.valid == 1
u_DataReceiveTop.valid == 1
force u_DataReceiveTop.valid = 1'b1;
即使有另一种力量,它也已向下传播。这里发生了什么?
最佳答案
一个 wire
Verilog 中的驱动器和接收器网络都连接到相同的信号。该信号的值是所有驱动器和电线类型的某种分辨率功能。当您通过一个端口连接两条线时,两条线会合并为一个信号,但对于同一信号,您仍然有两个不同的名称。
当您使用 force
线路上的语句,覆盖网络上的所有驱动程序,直到遇到另一个 force
或 release
陈述。在您的示例中,第二个 force
语句替换第一个 force
.您在 force
中使用哪个层次结构引用并不重要。因为它们都指的是同一个信号。
如果你想要你期望的行为,你需要使用变量而不是连线。当您将变量连接到端口时,SystemVerilog 会根据端口的方向创建隐式连续赋值。 SystemVerilog 不允许对一个变量进行多次连续赋值,这就是为什么不能将变量与 inout
一起使用的原因。港口。因此,您需要更加小心港口方向。
关于verilog - SystemVerilog `force` 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37774508/
我为连接编写了如下代码,但显示错误: module main ; bit [4:0] a; reg b,c,d; initial begin b = 0; c =
我正在尝试创建一个 for 循环,在给定循环迭代的情况下将不同的值分配给逻辑数组。 因此,例如,假设我正在尝试实例化两个不同的积木,宽度均为 10,高度均为 5。我们还假设这些值中的每一个都是 10
我有一个 systemverilog 模块,它引用一个生成的头文件,其中包含各种类型定义和函数。这是可合成的代码。该模块之前工作正常,因为头文件是使用预处理器包含的。 现在我的架构发生了变化,我需要实
我将两种设计组合成一个单芯片设计。 RTL 代码是用 SystemVerilog 编写的,用于综合。不幸的是,这两种设计包含许多名称相同但逻辑略有不同的模块。 SystemVerilog 中是否有 n
我正在尝试在系统verilog中随机化3个不同的变量,但以循环方式。我的意思是,我有以下 3 个变量 rand int a; rand int b; rand int c; constraint c_
默认情况下,SystemVerilog 是按值还是按引用传递数组? 例如: int array[5] = '{0,1,2,3,4}; some_function(array); // <-- val
SystemVerilog 是否支持向下转型(将基础对象转型为派生对象)?如果是这样,怎么办? 下面的沮丧示例不起作用: class base; int a = 5; endclass class
这是设计代码: module mul_clock (input clkA, clkB, in, output out); bit temp; reg x[2:0]; always @ (p
我有 Verilog-95 背景,我正在尝试找出我不再需要跳过的 Verilog-95 障碍。 在 Verilog-95 中编写具有异步设置和复位功能的触发器的明显方法是: always @(pose
我在寄存器 block Regblock 中实例化了寄存器,如下所示: DUT.Regblock.Register1 DUT.Regblock.RegisterA DUT.Regblock.Regis
我正在尝试理解 SystemVerilog 中的向上转型和向下转型。向上转型是转换为父类(super class)型,而向下转型是转换为子类型。向上转型总是被允许的,但向下转型涉及类型检查。 所以我做
在 SystemVerilog 中有没有一种方法可以分析压缩结构并确定它的整体大小(以位为单位)? typedef struct packed unsigned { logic [15:0]
我经常使用 systemverilog。 我正在使用 UltraEdit 作为文本编辑器。我也使用 VIM。 有时我必须从其他地方复制代码并将其粘贴到我的代码中。 它可能没有正确缩进。再次正确缩进是一
我有两个打包的信号数组,我需要为该属性创建一个属性和关联的断言,以证明这两个数组在某些条件下是相同的。我正在正式验证并且该工具无法在单个属性中证明两个完整数组,因此我需要将其拆分为单个元素。那么有没有
有什么方法可以获取它在 SystemVerilog 中操作的对象的名称? 就像实现 object1.printName() 应该打印字符串 object1 最佳答案 不,语言中没有为类执行此操作的机
我正在尝试创建一个像这样的解包数组: logic [3:0] AAA[0:9]; 我想将此数组初始化为以下值: AAA = '{1, 1, 1, 1, 2, 2, 2, 3, 3, 4}; 为了提高效
我将一些 systermverilog 代码重写为 chisel,但我找不到在 chisel 中表达 systemverilog 的打包联合的好方法。例如, typedef struct packed
我正在尝试了解在 SystemVerilog 中应如何定义引脚。 我有: 一个普通的dataBus 一个 ramController 模块,可以在其 ioData 引脚上发送或接收数据。 一个可以写入
以下两个属性有何不同? property p1; @(posedge clk) disable iff (Reset) b ##1 c; endproperty property p2;
我正在尝试将一些 SystemVerilog 代码移植到 C++/SystemC,并且在我看到奇怪的数组索引的几行上有点卡住了。这是我所看到的简化版本。 typedef enum bit [2:0]
我是一名优秀的程序员,十分优秀!