Preheat the oven to 350°F.
Make the béchamel. Heat a medium or large pot over medium heat. Add the broth and flour and whisk together. Add the milk, garlic, salt, and pepper. Bring to a simmer and cook at a low simmer to let thicken, 5-8 minutes.
Meanwhile, in a large skillet over medium heat, sauté the mushrooms. When the mushrooms are starting to get soft, around 3-5 minutes, add the spinach and cook until the spinach is wilted. Drain off any excess liquid.
Bring a large pot of salted water to a boil. Cook the lasagna noodles until just al dente, or according to the package directions. If your noodles say "no boil" boil the noodles anyway, for 4-5 minutes, until flexible. Drain and set aside on a tray, plate or towel in a single layer.
Make the vegan ricotta. Pulse all the ricotta ingredients in a food processor, until combined. To assemble, spread about ¾ cup of the béchamel into the bottom of a large casserole dish. Layer on three lasagna noodles. Add one third of the tofu ricotta. Then add a third of the spinach-mushroom mixture. Repeat this process twice - ¾ cup béchamel, three noodles, another third ricotta, another third spinach-mushroom. Finish with a final layer of béchamel.
Cover the dish with foil and bake for 40 minutes. Let cool 5-10 minutes before serving. Top with vegan parmesan if desired.