- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
您好,所有使用 Mentor Graphic Modelsim 工具的 SystemVerilog 专家。
我正在编写一个监控任务来处理一个简单的 PCI 单字写/读总线事件。出于某种原因,EDAplayground Altera Modelsim 10.1d 需要额外的时钟周期,而我的 Modelsim DE 10.2c/10.4 则不需要。我想知道这是否正确。
这里是一个编写监控类代码的例子:
@(negedge bus.MONCLK.FRAMEn);
@(bus.MONCLK); // EDA playground Modelsim 10.1d requires this extra clock cycle for getting data right. It is also required for read as well.
address = bus.MONCLK.AD;
if (bus.MONCLK.CBEn == IO_Write_CMD) begin
//tran_type = PCI_WRITE;
write = 1; // true
@(bus.MONCLK);
data = bus.MONCLK.AD;
status = 1'b1; // success
end else begin
status = 1'b0; // not success
end
这里是一个读取监控类代码的例子:
@(negedge bus.MONCLK.FRAMEn);
@(bus.MONCLK); // EDA playground Modelsim 10.1d requires this extra clock cycle for getting data right. It is also required for read as well.
address = bus.MONCLK.AD;
if (bus.MONCLK.CBEn == IO_Read_CMD) begin
write = 0; // false
@(bus.MONCLK);
@(bus.MONCLK);
data = bus.MONCLK.AD;
status = 1'b1; // success
end else begin
status = 1'b0; // not success
end
http://www.edaplayground.com/x/7kG如果我有这个额外的时钟周期,一个例子会显示正确的结果。我将正确获取 data = c 以进行读取或写入。 http://www.edaplayground.com/x/TSE如果我删除这个额外的时钟周期,一个示例会显示错误的结果。我得到 data = 516 (address) 用于写入和 data = z 用于读取。但是,我的 Modelsim 10.2c 和 10.4 将显示正确的结果 (data = c)。
你能帮我理解这个问题吗?谢谢。
迈克尔
最佳答案
我找不到竞争条件的解释,但我找到了两个适用于所有版本的解决方法。
一种方法是使用 while 循环,时钟作为阻塞事件,网络作为比较条件。
while(bus.MONCLK.FRAMEn!=1'b0) @(bus.MONCLK);
另一种方法是在@
之前或之后使用微小的延迟。只要您的时钟周期大于 1 个时间单位,#1
就应该是安全的。我不建议同时使用前导和尾随延迟,选择一个。
@(negedge bus.MONCLK.FRAMEn) #1;
#1 @(bus.MONCLK);
关于system-verilog - 读取总线信号的问题。与我的 Modelsim DE 10.2c 和 10.4 进行比较。 EDAplayground Modelsim 10.1d 有不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27495246/
您好,所有使用 Mentor Graphic Modelsim 工具的 SystemVerilog 专家。 我正在编写一个监控任务来处理一个简单的 PCI 单字写/读总线事件。出于某种原因,EDApl
我是一名优秀的程序员,十分优秀!