verilog - 两个模拟相同设计的合成——如果在 SET clk 的过程中,有和没有第二个
问题描述
我在verilog中有两个相同的(通过模拟)触发器过程。
首先是具有异步复位 (CLR) 和时钟 (SET) 的寄存器的标准描述,其中数据绑定到 1:
always @(posedge SET, posedge CLR)
if (CLR)
Q <= 0;
else
Q <= 1;
第二个与上面相同,但第二个 if 条件为 SET 信号:
always @(posedge SET, posedge CLR)
if (CLR)
Q <= 0;
else if (SET)
Q <= 1;
这两种触发器在仿真中的实现没有区别。但是对于这种情况,verilog 标准是怎么说的呢?这些测试是否应该等同于综合过程之后的网表?
解决方案
第二个示例中的“if (SET)”是多余的,将在 n 合成中进行优化。由于 always 块只会在 SET 或 CLR 的 posedge 上输入,else 语句暗示 SET 的 posedge 已经发生。
顺便说一句,第一个例子是一个更被接受的触发器编码版本。我还没有看到第二个版本成为运输设计。
推荐阅读
- android - 尝试使用 SharedPreferences 更改颜色,但方法不正确
- asp.net - 如何修复未映射的成员?
- node.js - 更新 Sequelize 模型时,失败并返回与我提供的不同的表名?
- ios - 使用小写和数组过滤搜索文本的内容
- arrays - 如何从 JSON 文件中的嵌套数组中获取数据?
- vb.net - 如何从另一个私有方法调用 CheckedChanged(sender,e)
- python - Python中npz格式的稀疏矩阵
- cassandra - 墓碑是 cassandra 阵列中的问题吗?
- symfony - 如何避免将发送电子邮件地址放在 Symfony 3 中的 Swift_Message 中
- ruby - 如何在测试方法中存根 HTTParty 请求?