-
Notifications
You must be signed in to change notification settings - Fork 19
Add Dockerfile #69
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: master
Are you sure you want to change the base?
Add Dockerfile #69
Conversation
After talking with GPT, I think the issue is Synopsys or Candence accepts SVerilog, and the lefthand indexing can be unrolled by them during static time; however, after GPT said:
means that you're trying to do a dynamic part-select (a variable slice) on the left-hand side (LHS) of an assignment — something Yosys (and synthesizable Verilog in general) doesn't support. Here's the problematic line: recv_data__rdy[9 - in_dir_local[sv2v_cast_4(i)]+:1] = ...; Why this failsVerilog allows dynamic indexing (like In this case, you're computing the index for a 1-bit wide dynamic slice starting at How to fixYou must rewrite this assignment without a dynamic part-select on the LHS. Typically, this means rewriting it with an If the expression always @* begin
recv_data__rdy = ...; // default or previous value
case (in_dir_local[sv2v_cast_4(i)])
0: recv_data__rdy[9 - 0] = ...;
1: recv_data__rdy[9 - 1] = ...;
2: recv_data__rdy[9 - 2] = ...;
// etc., up to the range of `in_dir_local[...]`
endcase
end Or, if it's inside a loop: genvar i;
generate
for (i = 0; i < N; i = i + 1) begin : gen_block
wire [3:0] idx = 9 - in_dir_local[i];
always @* begin
recv_data__rdy[idx] = ...;
end
end
endgenerate But again, this depends on the tool's capabilities. Yosys cannot handle variable bit-selects or part-selects on the LHS — it only allows constant indices. RecommendationYou should convert the variable part-select into an indexed integer idx;
always @* begin
idx = 9 - in_dir_local[sv2v_cast_4(i)];
recv_data__rdy = ...; // default assignment
recv_data__rdy[idx] = ((send_data__rdy[11 - sv2v_cast_4(i)] & ~recv_blocked_vector[in_dir_local[sv2v_cast_4(i)]]) &
~recv_but_block_by_others[in_dir_local[sv2v_cast_4(i)]]) &
~send_but_block_by_others[sv2v_cast_4(i)];
end Check whether this approach works in simulation and Yosys. If Yosys still rejects this due to indirect indexing, you'll have to fully unroll each possible case into a separate condition. Let me know if you want help writing the unrolled version for a specific width or range. |
Looks need manually change the verilog, but it should be generated from RTL right? |
Looks same kind of issue, but change to, thinking why it works before:
|
Trying to add Dockerfile for CGRA-Flow.
Environment works but 3 issues here:
Building with current master code, looks there's bug in add progress bar to load UI component #62 to block CGRA rows/cols change. Should be fine as we are moving to multi-CGRA UI, but would be better if it's easy to push a fix. Hi @richardissuperman , could you have a try in your end to change rows/cols of CGRA with master code.
Didn't pass
cmdline_opts
intotest_cgra_universal
, pushed a fix.CGRA-Flow/mode_dark_light.py
Lines 967 to 970 in 82fd6e7
Issue when
clickSynthesize
, @tancheng Have you ever seen this before, testing withfir.cpp
, is it kernel error or code error?Attached design.name_mangled.v.txt
Would like to make the single CGRA UI work, then start multi-CGRA integration in case issue will make the integration complicated to identify the root cause.