mirror of
https://github.com/YosysHQ/yosys
synced 2025-10-28 02:09:24 +00:00
(* nowrshmsk *) on a struct / union variable now affects dynamic
bit slice assignments to members of the struct / union.
(* nowrshmsk *) can in some cases yield significant resource savings; the
combination of pipeline shifting and indexed writes is an example of this.
Constructs similar to the one below can benefit from (* nowrshmsk *), and
in addition it is no longer necessary to split out the shift assignments
on separate lines in order to avoid the error message "ERROR: incompatible
mix of lookahead and non-lookahead IDs in LHS expression."
always_ff @(posedge clk) begin
if (rotate) begin
{ v5, v4, v3, v2, v1, v0 } <= { v4, v3, v2, v1, v0, v5 };
if (res) begin
v0.bytes <= '0;
end else if (w) begin
v0.bytes[addr] <= data;
end
end
end
|
||
|---|---|---|
| .. | ||
| .gitignore | ||
| enum_simple.sv | ||
| enum_simple.ys | ||
| logic_rom.sv | ||
| logic_rom.ys | ||
| multirange_array.sv | ||
| multirange_subarray_access.ys | ||
| run-test.sh | ||
| static_cast_negative.ys | ||
| static_cast_nonconst.ys | ||
| static_cast_simple.sv | ||
| static_cast_verilog.ys | ||
| static_cast_zero.ys | ||
| struct_array.sv | ||
| struct_dynamic_range.sv | ||
| struct_dynamic_range.ys | ||
| struct_simple.sv | ||
| struct_sizebits.sv | ||
| typedef_initial_and_assign.sv | ||
| typedef_initial_and_assign.ys | ||
| typedef_memory.sv | ||
| typedef_memory.ys | ||
| typedef_memory_2.sv | ||
| typedef_memory_2.ys | ||
| typedef_package.sv | ||
| typedef_param.sv | ||
| typedef_scopes.sv | ||
| typedef_simple.sv | ||
| typedef_struct.sv | ||
| typedef_struct_port.sv | ||
| typedef_struct_port.ys | ||
| union_simple.sv | ||