-
Notifications
You must be signed in to change notification settings - Fork 39
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
tried build with latest yosys(0.26)/nextpnr(0.5)- results in a design with 25x the LUTs of an ice40? #9
Comments
It's a problem with yosys not recognizing the ram in vexriscv_wrapper.v as BRAM and trying ro implement it a DFFs. |
Yeah, when the number of This is what I get with yosys 0.17 and nextpnr 0.3:
Note that the |
I think it's this: But the fix (-no-rw-check on synth_ice40) doesn't resolve your issue. I've tried it on the HEAD release, too. |
Or possibly this: |
Is it actually something todo with this? Yosys being formal about BRAM having a clocked output? https://www.reddit.com/r/yosys/comments/adlsv4/inferring_a_single_cycle_2w1r_register_file_in/ |
Well, the |
It's definitely written to only use registered output, however,here is the wacky thing: The following code sythesizes correctly:(though i'm not sure it's correct. Verilog hurts my head.)
This doesn't synthesize bram either:
looks like it doesn't like conditional output register assignments even if every possble condition is covered. |
That can probably be considered a bug, since it does work in 0.17. I'll see if I can construct a minimal reproduction recipe. |
(BTW, your alternate implementation will not work since it introduces an extra cycle of latency for reads. But it could probably be made to work if the assignments of |
Hmm - with always @(*) it fails with: ERROR: timing analysis failed due to presence of combinatorial loops, incomplete specification of timing ports, etc. |
You need to put only the assignments of |
@dirkenstein I took the liberty of tacking on my reproduction recipe to YosysHQ/yosys#3679. |
Ouput was this?
Any idea what's going on here?
Info: Device utilisation:
Info: ICESTORM_LC: 195891/ 7680 2550%
Info: ICESTORM_RAM: 8/ 32 25%
Info: SB_IO: 51/ 256 19%
Info: SB_GB: 8/ 8 100%
Info: ICESTORM_PLL: 2/ 2 100%
Info: SB_WARMBOOT: 0/ 1 0%
Info: Placed 57 cells based on constraints.
ERROR: Unable to place cell 'vexrv_inst.ram[988]_SB_DFFE_Q_7_E_SB_DFFE_E_2_DFFLC', no BELs remaining to implement cell type 'ICESTORM_LC'
0 warnings, 1 error
The text was updated successfully, but these errors were encountered: