关于该Verilog代码的DC综合结果及双地址写入场景的疑问
Design Compiler综合输出说明
- 这段代码综合后会生成一个4×32位的寄存器组(对应代码中的
cache),搭配两组独立的写控制逻辑:- 第一组由信号
a触发,当a=1时,将data1写入cache的addr1指定位置; - 第二组由信号
b触发,当b=1时,将data2写入cache的addr2指定位置;
- 第一组由信号
- 综合工具会根据目标工艺库,把
logic类型的cache映射为标准寄存器单元;两个独立if分支会被综合成并行的写使能逻辑,不存在优先级判定逻辑(区别于if-else结构)。
双写场景的行为确认
当a=1且b=1,且addr1与addr2不相等时,cache的两个目标地址位置都会被正确更新,原因如下:
- 代码采用两个独立的
if语句,而非互斥的if-else结构,因此两个写操作是并行执行的; - 由于
addr1和addr2指向不同的寄存器单元,硬件层面两个写操作会分别作用于各自目标寄存器,不会产生写冲突,两组赋值都会生效。
内容的提问来源于stack exchange,提问作者Rez
相关产品推荐
相关产品推荐

