The reuse of various elements in the FOC algorithm is actually counter productive to having a smaller design. The hidden issue is the creation of wide bus muxes for the reuse of a given ALU configuration. In this regard, I recommend using the fixed point package now available for VHDL or using integer arithmetic. I do reuse the Cordic algorithm for rotation and inverse rotation, but the current feedback scaling, PI controllers, SVPWM, all have their own logic and arithmetic units.
The problem with Mathworks and Simulink is that its a great tool, but you will pay through the nose on these tools, and when there is an issue with hardware implementation, you are just familiar with the top level and you have to look at the bottom level to solve the issue. I equate it to TI giving away software so people will use there processors . . . . as crazy as it is to implement controllers in a TI DSP, giving away the software is simultaneously a nice gesture and indirect admission that there stuff is clunky.
As I mentioned before, the Aldec co-simulation tool is a better wager in terms of a mixture between high level and lower level design. Each VHDL/Verilog module can become a Simulink block, and then cosimulate between Simulink and Aldec. I recently did this with a PMSM type model in SimPowerSystems and Simulink with all the FOC core expressed as HDL blocks referencing the actual VHDL code. It's a client/server type approach made possible via the VHPI interface of VHDL. You need a decent computer to run this type of simulation, but it's very nice. And you are already at the VHDL level. Think of it as the inverse of the DSP builder approach: instead of having DSP builder generate the VHDL, you're simulating your own VHDL at the system level.
I did my first FOC controller in an FPGA in 2001, so have been at it for 11 years now on this technology.
James