Using Prolog as Computer Architecture Description and Synthesis Language