Open aimamovic6 opened 1 month ago
This vector was interpreted incorrectly. We have already fixed this for the next release.
However, it looks like this design with 94 CC_MULT
does not fit into the FPGA in terms of resources anyway.
I'll let you know here as soon as the update is online. Thank you.
@pu-cc when do you expect to publish tool update? This issue is blocking us, and forcing to target Gowin and LatticeSemi devices instead of GateMate in order to test our designs.
The update has been online for quite a while now (Aug 1st). I neglected to report on it here.
On the download page it says (18.07.2024), my bad for not checking out the release notes. However the implementation still doesn't work on the optimized design (in terms of #CC_MULT and others). The error is now different though:
make: *** [Makefile:85: impl] Error 112
From the impl.log:
MAPPER started
Map Adder
100 Adder chains mapped
During map of 136 CPEs 136 gates deleted!
1453 CPEs replaced by double bit CPEs
Number of Combined CPEs: 2589
#### Error: Exception Handler called. ExitCode: 112
Exception Class: EAccessViolation
However the implementation still doesn't work
As I wrote previously https://github.com/chili-chips-ba/openCologne/issues/23#issuecomment-2246080391 it seems that the design with 94 CC_MULT
does not fit. We already implemented a proper error handling, and I have accelerated the new release for today.
You find it here. Sorry for the short notice. https://colognechip.com/downloads/cc-toolchain-linux.tar.gz https://colognechip.com/downloads/cc-toolchain-win.zip
Thank you for providing us with the updated version.
The first thing I noticed is that the design now takes a bit longer to complete synthesis, in comparison to time taken with the toolchain from August release.
The second thing is that the optimized version of the RTL :
found components:
CC_LUT3 138
CC_LUT4 70
CC_LUT2 44
CC_LUT1 20
CC_ADDF 629
CC_BUFG 2
CC_DFF 781
CC_MX4 25
CC_MULT 16
CC_IBUF 2
CC_OBUF 1
CC_PLL 1
still runs into implementation issues mentioned in the comment above:
make: *** [Makefile:85: impl] Error 112
From the impl.log:
Map Adder
22 Adder chains mapped
During map of 112 CPEs 108 gates deleted!
309 CPEs replaced by double bit CPEs
Number of Combined CPEs: 264
#### Error: Exception Handler called. ExitCode: 112
Exception Class: EAccessViolation
@pu-cc any further insights on this bug that's been blocking us for quite some time, and it's still unwieldy?!
The update has no effect on the synthesis. Only the P&R binary has been updated.
I'm also getting different results:
found components:
CC_LUT3 966
CC_LUT4 153
CC_LUT2 1230
CC_LUT1 22
CC_ADDF 2967
CC_BUFG 2
CC_DFF 5061
CC_MX4 25
CC_MULT 55
CC_IBUF 2
CC_OBUF 1
CC_PLL 1
Howver, the inputs to the multiplies are not yet comprehensible to us. We still currently check that. Has your netlist been verified by simulation after synthesis?
I apologize, the code is now updated on the repository to match this log:
CC_LUT3 117
CC_LUT2 64
CC_LUT4 58
CC_LUT1 13
CC_ADDF 633
CC_BUFG 2
CC_DFF 766
CC_MULT 16
CC_IBUF 2
CC_OBUF 1
CC_PLL 1
CC_BRAM_20K 1
Error 112 still persists on make impl
. The results of pre- and post simulation do match.
Thank you, now I can reproduce and understand the issue. We are working on a solution.
You are the man Patrick
For reference I've seen something similar but not inferring multipliers?
MAPPER started
Map Adder
1 Adder chains mapped
During map of 0 CPEs 0 gates deleted!
#### Error: Exception Handler called. ExitCode: 112
Exception Class: EAccessViolation
=== int26_abs_0CLK_6f2c5aad_top ===
Number of wires: 35
Number of wire bits: 999
Number of public wires: 29
Number of public wire bits: 918
Number of ports: 3
Number of port bits: 53
Number of memories: 0
Number of memory bits: 0
Number of processes: 0
Number of cells: 162
$scopeinfo 4
CC_ADDF 26
CC_BUFG 1
CC_DFF 52
CC_IBUF 27
CC_LUT2 1
CC_LUT3 25
CC_OBUF 26
found components:
CC_LUT3 25
CC_LUT2 1
CC_ADDF 26
CC_BUFG 1
CC_DFF 52
CC_IBUF 27
CC_OBUF 26
I think this .v file is enough to recreate?
@aimamovic6 We have now solved the issue, and I am running all the multiplier tests again, which may take a while. I would like to make an official release as soon as #25 has been resolved. If you would like to test it - which I would appreciate - I have made an experimental version available here: https://colognechip.com/downloads/testing/cc-toolchain-win.zip https://colognechip.com/downloads/testing/cc-toolchain-linux.tar.gz
@JulianKemmerer Thanks a lot! In fact, this really has nothing to do with the multipliers (the actual issue, however, does). Would you like to open a separate issue for this? I already have the netlist in progress anyway.
@JulianKemmerer The experimental version now also includes a fix for your issue, which was a bit exotic, but we have now extended our test cases. Thanks a lot! https://colognechip.com/downloads/testing/cc-toolchain-win.zip https://colognechip.com/downloads/testing/cc-toolchain-linux.tar.gz
@pu-cc Thank you, the implementation now works. I tested it with additional filter stage and it also worked. When I increased the design even more, it failed (as it should, it's too big) and I got this error:
FATAL ERROR: CP lines not routable between Components 11146 and 658
program finished with exit code: 4
so I was just wondering if this error should generally tell us that we are out of resources?
Also, new error appeared when running make impl_sim
:
sd_dac_top_00.v:36157: error: Unknown module type: FPGA_RAM
2 error(s) during elaboration.
*** These modules were missing:
FPGA_RAM referenced 1 times.
***
make: *** [Makefile:108: impl_sim.vvp] Error 2
Is this worthy of a separate issue, because I think we are all done here. Thank you once again.
so I was just wondering if this error should generally tell us that we are out of resources?
Before the design no longer fits, other errors can also occur, such as yours where the CP lines can no longer be routed. Could you just check it in so that I can take a look at it?
Also, new error appeared when running make impl_sim :
Did you enable the USE_RAM
define in cpelib.v
? It should be disabled and read:
[...]
`define xUSE_RAM
[...]
After enabling the USE_RAM
, one of the modules within FPGA_RAM is still not recognised:
...../cc-toolchain-linux//bin/p_r/cpelib.v:2341: error: Unknown module type: dpsram_block_4x512x20
2 error(s) during elaboration.
*** These modules were missing:
dpsram_block_4x512x20 referenced 1 times.
***
make: *** [Makefile:108: impl_sim.vvp] Error 2
As for the design that causes failure, here are the .v files: sd_dac.zip Gowin IDE also failed implementation for Tang Nano 20k.
Thanks @pu-cc for the fast turn around :muscle: I look forward to trying it out!
A FATAL ERROR occured while running the GateMate p_r tools in the SD-DAC project. This test was performed using the latest yosys and p_r tools.
The line 105610 from
sd_dac_top_synth.v
reads:It is the first occurance of CC_MULT primitive. The resource usage given in
synth.log
is as follows:Resource analysis
After excluding the biggest filter from the design (130 taps), the resource usage decreases, but the error still remains (even after omitting several more filters):
To verify the RTL design synthesis was done using other tools also.
In Latice Diamond for target LFE5U-85F of family ECP5 the summary is as follows:
In Quartus II for target EP2C35F672C6 of the Cyclone II family the summary states:
In VIVADO for target xc7a35tcsg324-3 the summary states:
How to replicate this error
Clone the SD-DAC project and adjust the path to the toolchain in the Makefile. Then, simply run: