Mix all the ingredients for the chicken together and leave to marinate for at least 30 minutes.
Heat a ridged griddle pan over high heat. Add the marinated chicken and grill for about 3 minutes each side until slightly charred on the outside and cooked through.
In the meantime, make the masala sauce. Heat the oil in a pan over medium heat. Add the onion and fry for about 6 minutes until softened and colored.
Add the garlic, ginger, turmeric, chili powder and garam masala. Cook for 2 minutes more.
Add the tomatoes and yogurt. Cook for about 10 minutes until the tomatoes have collapsed and the oil has slightly separated from the sauce. Season to taste, then stir in the chicken.
To assemble the biriyani for cooking, melt the butter in the base of a heavy pan, with 2 tbsp water.
Layer the rice with the chicken tikka in masala, scattering over the fried onions and chopped cilantro as you go. Finish with a layer of rice, then pour over the saffron and water.
Cover the pan tightly and cook over high heat for 2 minutes, then turn right down low and cook for 10 minutes more. Turn off the heat and leave to rest for 10 minutes before uncovering and serving.