I'm unsure if this answers your question; as I'm not sure if you want the enemies, descriptions, and all that to be generated as well. Assuming not, I have a non-generated solution that may work..
For each room you want in the dungeon, put a small or large (or huge) circle down. Connect it with other nodes as desired; call these "links"
When you find a location that you want a particular look/description
for (such as a staircase) simply mark that node.
Build yourself a list of descriptions/rooms/encounters; enough to cover ~75% of the dungeon. (If you think they'll explore everything, fill in the last sections with cave-ins/collapses, submerged passages, the occasional bit of loot; or finally.. just build a list of 100% instead.)
When your players travel a link to a node, describe the first link on your list. When they get to the other side (a room, intersection, etc) then describe the first node on your list.
While this removes some choice from the players (they can choose to avoid certain encounters or whatnot by turning around and taking another path) because their choices will always occur in the same order you a vast amount of control of the order they face encounters, and that they are guaranteed to run into every interesting thing you want them to in the dungeon.
As your players traverse the area they will build your dungeon for you. Simply mark down each list item on the node as they discover it (in case you need to give them the same description as before or remember key details later.)
I suggest this because people often think they need a map that is perfectly defined by size and even placement; but the above actually just has you define rooms and passages rather than a dungeon. Why? Because that's all that you'll end up describing anyway; and it gives you amazing control over the encounters they will face or bypass and in the order that you want them to discover those things.
Your players will think they're wandering a well-made pre-built dungeon with each hazard, discovery, etc well defined and will recognize where they are at by your descriptions; even though you just have some circles and lines on a piece of paper.
What does this have to do with stairs and multiple levels?
Stairs are simply a bottleneck in your node map, and a description of a link. Done and done. Stairs with an encounter are no different (other than mechanically) than a passageway or node with an encounter. Simply mark your "S" node on the map, make it so the second half of your node map have to go through the stairs (or not!) and you'll have a map.
I ran a ~20 node map recently to great effect. The players recognized areas they'd been, remembered where hazards were when they were leaving, knew roughly how things were connected and were none the wiser I just walked them down a list with a mere TWO pre-defined main rooms and everything else being defined as they went.
This made the dungeon have a predictable length and a balanced set of encounters no matter what the players actually chose.
While I will, now and then, design something to be very logical so its description from the outside matches with the inside, that really only matters for marking a couple key rooms down on your node-map.
I highly recommend this approach if you're willing to build your rooms/encounters still. Apologies if you were also looking for the encounters to be generated.
But I want it to line up sq-footage wise!
Fine. For each node define a second node above it of similar size and shape. When your players are upstairs, use the "upstairs" version of the node. Badda bing.
Once again, they build your dungeon for you and you only fill in the blanks; you get to make sure they hit (at minimum) the encounters you were excited about; and if they explore you have a bunch of stuff ready to fill in the blanks.
Upon request, here is a partial example:
Side note: Sadly it seems B1 was lost in translation despite my extreme MsPaint skills. B1 is simply another description of whatever large/interesting area you'd want and some kind of interaction with the players, such as an encounter, puzzle, or hazard.
Note: if you change the scenery in your descriptions you can easily (such as in my case) turn this from a tunnel network to a temple as well. If you want to improve the map, simply add some static (or dynamic!) secret passages, and have some of your nodes (or links) have additional passages that are dead-ends but have something interesting in them (like an optional encounter, a skill challenge or puzzle to get loot, or even just visibility into a future portion of the map.)