verilog - 以下verilog代码的输出将是什么..?
问题描述
module abc(input clk, output a);
reg a;
always @(posedge clk)
begin
a=0;
$monitor("%d",a);
end
always @(posedge clk)
begin
a=1;
$monitor("%d",a);
end
第一个 clk 脉冲后的第一个输出是什么?如果我们不想要 reg 的任何默认值(我们想要 a 的值)...?
解决方案
这是一个竞争条件。Verilog 不保证同步到同一事件的进程之间的执行顺序。一个模拟工具可能会选择第一个块。另一个工具可能会选择第二个块。综合工具不允许从不同的块对同一个变量进行多次赋值。
推荐阅读
- ruby - Ruby:将结构化文本转换为 csv 的脚本
- simulation - 如何将地图添加到一个模拟器?
- html - 基于设备的不同列数
- python - 在python dict中使用字符串值时如何避免KeyError
- c - 为什么我在输出后得到一些随机值?
- node.js - DynamoDB NodeJS DocClient 扫描静默间歇性失败?
- java - 在 Spring Webflux 中使用 ByteArrayInputStream
- python - 将“datetime.date(2019, 3, 21)”转换为“2019/03/21”
- events - 删除 Meteor 中的动态模板事件
- python-3.x - 如何删除熊猫数据框列中包含连字符的行?