mirror of
https://github.com/YosysHQ/yosys
synced 2026-07-05 15:06:11 +00:00
write_verilog: Fix upto indexing for single bit
This commit is contained in:
parent
2195277b5a
commit
338d4adef2
1 changed files with 15 additions and 7 deletions
|
|
@ -197,14 +197,22 @@ bool is_reg_wire(RTLIL::SigSpec sig, std::string ®_name)
|
||||||
|
|
||||||
reg_name = id(chunk.wire->name);
|
reg_name = id(chunk.wire->name);
|
||||||
if (sig.size() != chunk.wire->width) {
|
if (sig.size() != chunk.wire->width) {
|
||||||
if (sig.size() == 1)
|
int idx;
|
||||||
reg_name += stringf("[%d]", chunk.wire->start_offset + chunk.offset);
|
if (chunk.wire->upto)
|
||||||
else if (chunk.wire->upto)
|
idx = (chunk.wire->width - chunk.offset - 1) + chunk.wire->start_offset;
|
||||||
reg_name += stringf("[%d:%d]", (chunk.wire->width - (chunk.offset + chunk.width - 1) - 1) + chunk.wire->start_offset,
|
|
||||||
(chunk.wire->width - chunk.offset - 1) + chunk.wire->start_offset);
|
|
||||||
else
|
else
|
||||||
reg_name += stringf("[%d:%d]", chunk.wire->start_offset + chunk.offset + chunk.width - 1,
|
idx = chunk.wire->start_offset + chunk.offset;
|
||||||
chunk.wire->start_offset + chunk.offset);
|
|
||||||
|
if (sig.size() == 1)
|
||||||
|
reg_name += stringf("[%d]", idx);
|
||||||
|
else {
|
||||||
|
int left_idx;
|
||||||
|
if (chunk.wire->upto)
|
||||||
|
left_idx = (chunk.wire->width - (chunk.offset + chunk.width - 1) - 1) + chunk.wire->start_offset;
|
||||||
|
else
|
||||||
|
left_idx = chunk.wire->start_offset + chunk.offset + chunk.width - 1;
|
||||||
|
reg_name += stringf("[%d:%d]", left_idx, idx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue