For pure simulation, you could use the OpenCores CAN controller. You'll have to learn Verilog and get up to speed on running Verilog simulations - you could use Icarus Verilog or CVer to run your simulations.
You would have full access to all aspects of the CAN controller through modifications to the Verilog source.