I'm trying to construct a PDA for $L = \{w0^i1^j \mid w\text{ ends in } 01 \wedge 2i=3j\}$. My understanding is that I have to first accept an arbitrary number of zeros and ones and then nondeterministically guess $01$ in $w$, however I am stuck with the rest. I understand the condition $i/3=j/2$, but how do I make my PDA accept that? Does it have to be nondeterministic too? How do I approach this? 
what is the best way to approach the construction of nondeterministic PDA's?
formal languages;context free;pushdown automata
For the $w$ part, as you said (or implied) yourself, you don't need the stack at all. After switching to the $0^i1^j$ part, in some state $s_2$, you can put for the $0$'s in the input alternatingly first an $a$ on the stack, then delete it with a $b$ for the second $0$, then add a $c$ for the third $0$, then start over. By adding only two of the three symbols for each stream of three zeros (as you delete $a$), you get $2/3i$ symbols in the stack which is just equal to $j$. You get a stack like this:$kbcbc\ldots$ ($k$ being the bottom stack symbol). Now, you just have to delete each $b$ or $c$ with the ones coming on the input tape and accept iff you reach the bottom of the stack ($k$) when the input is complete.The second part of the PDA might look something like this ($\lambda$ being the empty word):$(s_2, 0, k) \rightarrow (s_2, ak)$$(s_2, 0, a) \rightarrow (s_2, b)$$(s_2, 0, b) \rightarrow (s_2, cb)$$(s_2, 0, c) \rightarrow (s_2, ac)$$(s_2, 1, c) \rightarrow (s_3, \lambda)$$(s_3, 1, c) \rightarrow (s_3, \lambda)$$(s_3, 1, b) \rightarrow (s_3, \lambda)$$(s_3, \lambda, k) \rightarrow (s_e, k)$