When we lived in Michigan, our hill repeat workouts were done on an old garbage pile-turned ski hill. It was magical. Since we didn't have too many large hills, we would do multiple repeats for each workout. Sand dunes along the pristine shore* of Lake Michigan also made for a good hill repeat workout.
Since we've been traveling around, we've had the opportunity to run up and down a lot of mountain trails. This usually results in a single run up and down without multiple repeats. Either method works.
If you live in an area that has no hills, you could get some of the same effect by running up and down the stairs of skyscrapers. Or you could run up and down parking garages. If you have a treadmill, you can set the incline to simulate uphill running. If the treadmill has a foldable deck, you can prop up the back to simulate downhill running. Just don't fall.
Tip- if you are running a race that features hills, do hill repeats! My first trail marathon was run on a hilly course. I didn't do any hill repeats. By mile 18, I couldn't walk up the hills forward. I had to do a sort of side-stepping shuffle. It sucked. Worse, I was passed by a lady in her late sixties doing her first-ever race.
*Pristine... except the times the garbage Chicago dumped in the lake floated over to our beaches. Bastards.