.
I thought it would be good to share the results of some experiments hoglet did, using the xilinx tools to implement our OPC5 core with a small code cache and an 8 bit memory controller.
The overall lesson is that both the size and speed of an implementation can vary a lot depending on the tactics used to build it, and so the quick default synthesis result should not be used to rule out any particular idea as being too large or too slow, unless it is a long way off.
Dave used SmartExplorer to run 7 tactics for place and route, in combination with either Speed or Area tactics for synthesis, in combination with two different clock speed targets. (Sometimes a mild overconstraint on timing can give better results.)
-opt_mode Speed in the .xst file 10ns timespec in .ucf file
Minimum period: 9.538ns 104.844MHz 162 Slices
Minimum period: 9.543ns 104.789MHz 162 Slices
Minimum period: 9.287ns 107.677MHz 196 Slices
Minimum period: 9.459ns 105.719MHz 163 Slices
Minimum period: 9.535ns 104.877MHz 194 Slices
Minimum period: 9.558ns 104.624MHz 162 Slices
Minimum period: 9.560ns 104.603MHz 150 Slices
-opt_mode Speed in the .xst file 8ns timespec in .ucf file
Minimum period: 8.860ns 112.867MHz 148 Slices
Minimum period: 9.153ns 109.254MHz 158 Slices
Minimum period: 7.508ns 133.191MHz 176 Slices
Minimum period: 8.895ns 112.423MHz 148 Slices
Minimum period: 8.974ns 111.433MHz 158 Slices
Minimum period: 9.290ns 107.643MHz 158 Slices
Minimum period: 8.467ns 118.106MHz 158 Slices
-opt_mode Area in the .xst file 10ns timespec in .ucf file
Minimum period: 9.464ns 105.664MHz 138 Slices
Minimum period: 9.492ns 105.352MHz 115 Slices
Minimum period: 9.100ns 109.890MHz 174 Slices
Minimum period: 9.412ns 106.247MHz 139 Slices
Minimum period: 9.468ns 105.619MHz 127 Slices
Minimum period: 9.492ns 105.352MHz 115 Slices
Minimum period: 9.540ns 104.822MHz 130 Slices
-opt_mode Area in the .xst file 8ns timespec in .ucf file
Minimum period: 8.280ns 120.773MHz 120 Slices
Minimum period: 8.798ns 113.662MHz 116 Slices
Minimum period: 7.889ns 126.759MHz 155 Slices
Minimum period: 9.256ns 108.038MHz 121 Slices
Minimum period: 8.835ns 113.186MHz 123 Slices
Minimum period: 9.258ns 108.015MHz 116 Slices
Minimum period: 9.000ns 111.111MHz 103 Slices
There are more choices possible for synthesis, and more for smartexplorer too. It's relatively easy to get smartexplorer to run 4 P&R jobs in parallel, which helps a lot on a modern multicore computer.