YosysHQ / picorv32

PicoRV32 - A Size-Optimized RISC-V CPU
ISC License
3.17k stars 764 forks source link

Xilinx ISE 14.7 synthesis #38

Open pmonta opened 7 years ago

pmonta commented 7 years ago

A few changes are needed for successful synthesis by the legacy Xilinx ISE toolchain:

I did look at issues #2 and #25, and I'm a little puzzled as to how synthesis even completed, unless they made the same changes to the RTL as I did. I haven't seen problems with the PC register once the design is in runnable shape.

Attached is an example project targeting the Spartan 3E Starter board. It contains a picorv32 core with the plain memory interface, some block RAM, a UART, and some test software in C.

I'm just putting this out there in the hope it will make picorv32 more useful for older Spartan-6 or Spartan-3E designs; the main repository probably doesn't want to deal with irksome `ifdef OLD_XILINX stuff. I have some Spartan-6 hardware for which I'd like to use picorv32 (currently using picoblaze).

picorv32-Xilinx-ISE.tar.gz

luismarques commented 7 years ago

@pmonta This explains a lot. I thought I had a bug in my cache implementation. Eventually I reduced the problem to the picorv32, and that's when I did a Google search that found this issue. Thanks for providing your fixes and the other files!

(I'm using a Papilio Pro, with a Xilinx Spartan 6 LX9. Too bad the Spartan 6 isn't supported by the newer Xilinx tools, and they have stopped maintaining the old ones...)

cjhonlyone commented 4 years ago

you shoud do this to prevent cpuregs to be synthesised to block RAM ( ram_style = "distributed" ) reg [31:0] cpuregs [0:regfile_size-1];

armleo commented 4 years ago

For always @* try using xst new parser